ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/
※デフォルト設定
Excel VBA 質問スレ Part66
■ このスレッドは過去ログ倉庫に格納されています
11000
2020/05/10(日) 13:43:45.00ID:Nkoph0aj568デフォルトの名無しさん
2020/06/07(日) 02:44:14.80ID:81VYwWTh >>567
初心者ってこんなもんだろ
初心者ってこんなもんだろ
569デフォルトの名無しさん
2020/06/07(日) 03:03:21.76ID:zKcEsa3T 初心者は全部同じというゆとり理論
570デフォルトの名無しさん
2020/06/07(日) 03:47:02.63ID:kmJ+/rqz >>564
A列の最終行を探して次の行に数を入れる
A列の最終行を探して次の行に数を入れる
571デフォルトの名無しさん
2020/06/07(日) 03:48:37.81ID:kmJ+/rqz 最終行は値の入ってる最後って意味ね
572デフォルトの名無しさん
2020/06/07(日) 05:24:32.66ID:cf9XL00M まずは「1ー100」をマトモに書けるようになるのが先決だな
573デフォルトの名無しさん
2020/06/07(日) 05:49:46.12ID:dyM/5p3V >>544
再帰はスマートに書けることも多いけど再帰の数だけメモリを消費する
ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない
時間的にもメリットがないどころか下手すると遅くなり得る
列挙程度のどうでもいいような処理に使うべきじゃないよ
再帰はスマートに書けることも多いけど再帰の数だけメモリを消費する
ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない
時間的にもメリットがないどころか下手すると遅くなり得る
列挙程度のどうでもいいような処理に使うべきじゃないよ
574デフォルトの名無しさん
2020/06/07(日) 07:38:47.26ID:czcu/Wo5575デフォルトの名無しさん
2020/06/07(日) 07:53:48.37ID:MHP0r7Cu576デフォルトの名無しさん
2020/06/07(日) 07:56:27.57ID:ntu7XVDq コマンドプロンプトで十分だと思うけど。
VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。
VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。
577デフォルトの名無しさん
2020/06/07(日) 08:33:05.30ID:xH2ID0fk578デフォルトの名無しさん
2020/06/07(日) 08:38:56.41ID:ntu7XVDq579デフォルトの名無しさん
2020/06/07(日) 09:55:56.05ID:kdiJvE9H >>559
さんきゅ
さんきゅ
580デフォルトの名無しさん
2020/06/07(日) 13:01:44.81ID:H9nBLvae581デフォルトの名無しさん
2020/06/07(日) 13:10:29.47ID:xH2ID0fk582デフォルトの名無しさん
2020/06/07(日) 13:12:52.96ID:xH2ID0fk583デフォルトの名無しさん
2020/06/07(日) 15:23:54.63ID:H9nBLvae >>582
具体的なこと書かないであり得るとか言われてもなぁw
具体的なこと書かないであり得るとか言われてもなぁw
584デフォルトの名無しさん
2020/06/07(日) 16:37:31.43ID:ntu7XVDq585デフォルトの名無しさん
2020/06/07(日) 17:05:54.93ID:odk7pmo/ ファイル名に使えるのにVBAで扱えない文字なんて心当たりがないので、ぜひ具体的な文字を教えてくれ
586デフォルトの名無しさん
2020/06/07(日) 17:48:58.65ID:EhPxLCve おすすめの教本ありますか?
587デフォルトの名無しさん
2020/06/07(日) 17:49:37.87ID:H9nBLvae588デフォルトの名無しさん
2020/06/07(日) 18:20:31.92ID:s05OkEKn589デフォルトの名無しさん
2020/06/07(日) 18:34:00.18ID:Rq/eP/Hm VBAでは無いけれど
今回のオンライン申請では氏名の間に空白スペースがあったり
住所のハイフンなんかでエラーだったよ
山 田 花 子
山田 花子
山田 は な 子
11-20-13
十一一二十ー十三
一丁目 II ノ丘 ハイツ III
一- 弐- 三
今回のオンライン申請では氏名の間に空白スペースがあったり
住所のハイフンなんかでエラーだったよ
山 田 花 子
山田 花子
山田 は な 子
11-20-13
十一一二十ー十三
一丁目 II ノ丘 ハイツ III
一- 弐- 三
590デフォルトの名無しさん
2020/06/07(日) 18:53:28.87ID:H9nBLvae だから何?
それそういう仕様なんだろ(まあバグかもしれんが)
それそういう仕様なんだろ(まあバグかもしれんが)
591デフォルトの名無しさん
2020/06/07(日) 18:56:58.14ID:ntu7XVDq >>587
ああ、確かに特殊文字じゃ書けないわな。
|あいうえお 一番左にカーソルがある状態。
あ|いうえお 1回右を押す
あい|うえお 2回右を押す
あい|うえお 3回右を押す ←2回目と3回目が変わらない。こういう状態になる文字だよ。
あいう|えお 4回右を押す
あいうえ|お 5回右を押す
これで満足か?
ああ、確かに特殊文字じゃ書けないわな。
|あいうえお 一番左にカーソルがある状態。
あ|いうえお 1回右を押す
あい|うえお 2回右を押す
あい|うえお 3回右を押す ←2回目と3回目が変わらない。こういう状態になる文字だよ。
あいう|えお 4回右を押す
あいうえ|お 5回右を押す
これで満足か?
592デフォルトの名無しさん
2020/06/07(日) 19:05:10.46ID:ntu7XVDq >>585
特殊以外だと、日本語環境で中国語とか。
特殊以外だと、日本語環境で中国語とか。
593デフォルトの名無しさん
2020/06/07(日) 19:26:44.01ID:eHR7BWdB >>589
それ例ではスペースとかハイフン無いのに入力してエラーのパターンでは
それ例ではスペースとかハイフン無いのに入力してエラーのパターンでは
594デフォルトの名無しさん
2020/06/07(日) 19:30:43.11ID:H9nBLvae595デフォルトの名無しさん
2020/06/07(日) 20:18:15.14ID:ZURHSwDA そういえばADOを使ったcsv取り込み機能でうちの業務システムから出力したcsvファイルを取り込んだらエラーが出たことあったな。
ファイル名変えたら取り込めたけど。
ファイル名変えたら取り込めたけど。
596デフォルトの名無しさん
2020/06/07(日) 20:32:18.62ID:1v0hAbPt597582
2020/06/07(日) 20:50:04.89ID:1v0hAbPt ファイル名に?が入ったまま何かの処理をすればエラ―吐いて止まるというのは考えられる。
というか、何で俺が解説しなきゃならねえんだよ。
頼むぜw
というか、何で俺が解説しなきゃならねえんだよ。
頼むぜw
598582
2020/06/07(日) 20:56:23.87ID:1v0hAbPt >>589
そいつはレベルが低いな。
スペースなんて正式な住所や氏名にはあり得ねえとして、入力したもんから片っ端から抜いちまう処理を入れるもんだ。
ハイフンはちょっとあり得る。
普通はマイナス使うと思うんだが罫線記号使ったり似たのがいっぱいあるからな。
そいつはレベルが低いな。
スペースなんて正式な住所や氏名にはあり得ねえとして、入力したもんから片っ端から抜いちまう処理を入れるもんだ。
ハイフンはちょっとあり得る。
普通はマイナス使うと思うんだが罫線記号使ったり似たのがいっぱいあるからな。
599デフォルトの名無しさん
2020/06/07(日) 21:55:32.54ID:XVHV5xvT これだな
>Excel VBA 質問スレ Part43
>274 名前:デフォルトの名無しさん[] 投稿日:2016/12/02(金) 22:33:29.62 ID:rRSQCExt [1/2]
>ちょっと質問
>
>・おもむろにファイルエクスプローラを開く
>・なんでもいいからファイルのプロパティを開く
>・そこの作成日時をドラッグする
>・セルのA1にペーストする
>
>例えば 2013?年?12?月?1?日、??17:02:28
>これを(すでに文字化けしてると思うが)
>2013/12/1 17:02:28
>に整形したいんだけど
>どうすればいいんだ?
>半角に見えるけどサクラでみるとU+200Fとなっている
>中には数値の間にも混入しているのもある
>最初からFSOで取得するのは無しで
>すでに手動で取り込んだ数百件ものデータなんだ
>よろしくお願いします
>Excel VBA 質問スレ Part43
>274 名前:デフォルトの名無しさん[] 投稿日:2016/12/02(金) 22:33:29.62 ID:rRSQCExt [1/2]
>ちょっと質問
>
>・おもむろにファイルエクスプローラを開く
>・なんでもいいからファイルのプロパティを開く
>・そこの作成日時をドラッグする
>・セルのA1にペーストする
>
>例えば 2013?年?12?月?1?日、??17:02:28
>これを(すでに文字化けしてると思うが)
>2013/12/1 17:02:28
>に整形したいんだけど
>どうすればいいんだ?
>半角に見えるけどサクラでみるとU+200Fとなっている
>中には数値の間にも混入しているのもある
>最初からFSOで取得するのは無しで
>すでに手動で取り込んだ数百件ものデータなんだ
>よろしくお願いします
600デフォルトの名無しさん
2020/06/07(日) 22:23:02.67ID:QPxy+dct 再現しないぞ
601デフォルトの名無しさん
2020/06/07(日) 22:44:34.20ID:Zvt1FY8k602デフォルトの名無しさん
2020/06/07(日) 23:18:32.86ID:kciisc/v 前スレでここで教えて貰ったのが完成した
課のみんなのPCに入れて使いたいらしい
パス指定するタイプだから
・読取専用にする
・プロジェクトプロパティをロック
・C直下に置いてショートカットをデスクトップに置いてやる
・シート名は変えるなと徹底
こんだけ教えとけばまぁ大丈夫だよね?
課のみんなのPCに入れて使いたいらしい
パス指定するタイプだから
・読取専用にする
・プロジェクトプロパティをロック
・C直下に置いてショートカットをデスクトップに置いてやる
・シート名は変えるなと徹底
こんだけ教えとけばまぁ大丈夫だよね?
603デフォルトの名無しさん
2020/06/07(日) 23:22:24.39ID:wDFSrhzA セルの行と列の変数名って業務でよく使うんだけど
Dim r As Long '行
Dim c As Long '列
これで癖付けてっていいですか?いいですよね?
Dim r As Long '行
Dim c As Long '列
これで癖付けてっていいですか?いいですよね?
604デフォルトの名無しさん
2020/06/07(日) 23:26:23.34ID:Zvt1FY8k605デフォルトの名無しさん
2020/06/07(日) 23:35:39.43ID:Zvt1FY8k >>603
そのコード読むのが自分だけか複数人かでメンテしだいじゃ無いの
そのコード読むのが自分だけか複数人かでメンテしだいじゃ無いの
606デフォルトの名無しさん
2020/06/08(月) 01:11:56.88ID:VAdCiuLB607デフォルトの名無しさん
2020/06/08(月) 07:02:43.86ID:upiiQwtH >>606
ググるとFileSystemObject使えって書いてあるな
ググるとFileSystemObject使えって書いてあるな
608582
2020/06/08(月) 07:46:04.95ID:ACGXca97 >>607
でも、変数で受けちまうと何使っても?になっちまうよ。
それにFileSystemObjectのファイル列挙は糞遅かった筈。
特別な理由が無いならエラーで抜けちまって、特殊なファイル名には非対応とメッセージ出した方が良い気がする。
でも、変数で受けちまうと何使っても?になっちまうよ。
それにFileSystemObjectのファイル列挙は糞遅かった筈。
特別な理由が無いならエラーで抜けちまって、特殊なファイル名には非対応とメッセージ出した方が良い気がする。
609582
2020/06/08(月) 08:00:05.61ID:ACGXca97 >>601
少し住所を扱う処理を動かせば直ぐに気付くレベルの話だよ。
特にスペースなんて人名や住所以外でもよくある話。
全角だろうが半角だろうが""に変換しちまうのはよくやるだろう。
まあ、全角半角は数字とかアルファベットでも問題になるからその前にStrConv使って統一するとかが普通の処理だろう。
ハイフンだって思いつくものはマイナスに変換する程度のことはする。
少し住所を扱う処理を動かせば直ぐに気付くレベルの話だよ。
特にスペースなんて人名や住所以外でもよくある話。
全角だろうが半角だろうが""に変換しちまうのはよくやるだろう。
まあ、全角半角は数字とかアルファベットでも問題になるからその前にStrConv使って統一するとかが普通の処理だろう。
ハイフンだって思いつくものはマイナスに変換する程度のことはする。
610デフォルトの名無しさん
2020/06/08(月) 08:12:22.59ID:/JIEFRnW むしろテキストボックスのEN_UPDATEでスペースやハイフンを消せば楽
郵便番号欄は数字以外受け付けないようにスタイル指定するだけでもいい
郵便番号欄は数字以外受け付けないようにスタイル指定するだけでもいい
611デフォルトの名無しさん
2020/06/08(月) 08:46:24.73ID:k1oezjz2 フォルダを指定し、そのフォルダ内の全てのブックの、各ブックのシート"sire"の2行目から最終行をコピーして
シートcompの最下行の一つ下に張り付けていき、I列に各ブック名を記入していくマクロを教えてください。
Sub comp()
'フォルダを選択
Dim path As String
Dim r As Long
Dim buf As String
Dim i As Long
Dim filename As String
Dim mysheet As Worksheet
Dim srcbook As Workbook
Dim srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With
Application.ScreenUpdating = False
シートcompの最下行の一つ下に張り付けていき、I列に各ブック名を記入していくマクロを教えてください。
Sub comp()
'フォルダを選択
Dim path As String
Dim r As Long
Dim buf As String
Dim i As Long
Dim filename As String
Dim mysheet As Worksheet
Dim srcbook As Workbook
Dim srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With
Application.ScreenUpdating = False
612デフォルトの名無しさん
2020/06/08(月) 08:47:00.39ID:k1oezjz2 続き
Range("A1").Value = "担当者"
Range("B1").Value = "行程1"
Range("C1").Value = "件名1"
Range("D1").Value = "行程2"
Range("E1").Value = "件名2"
Range("F1").Value = "行程3"
Range("G1").Value = "件名3"
Range("H1").Value = "期間"
Range("I1").Value = "グループ名"
Set mysheet = ThisWorkbook.Worksheets("comp")
Debug.Print myseet
buf = Dir(path & "\*.xls") 'フォルダ内の全ファイル名
Debug.Print buf
Do While buf <> ""
Set srcbook = Workbooks.Open(path & "\" & buf)
Set srcsheet = srcbook.Worksheets("sire")
Range("A1").Value = "担当者"
Range("B1").Value = "行程1"
Range("C1").Value = "件名1"
Range("D1").Value = "行程2"
Range("E1").Value = "件名2"
Range("F1").Value = "行程3"
Range("G1").Value = "件名3"
Range("H1").Value = "期間"
Range("I1").Value = "グループ名"
Set mysheet = ThisWorkbook.Worksheets("comp")
Debug.Print myseet
buf = Dir(path & "\*.xls") 'フォルダ内の全ファイル名
Debug.Print buf
Do While buf <> ""
Set srcbook = Workbooks.Open(path & "\" & buf)
Set srcsheet = srcbook.Worksheets("sire")
613デフォルトの名無しさん
2020/06/08(月) 08:47:32.50ID:k1oezjz2 続き
filename = 'srcsheetの拡張子なしのファイル名を取得
'シートの内容を2行目以降コピー
srcsheet.Range(Cells(2, 8), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
'myseetの最下行の一つ下に値として貼り付け
mysheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
'I列にそれぞれのファイル名を入力
For r = Cells(Rows.Count, 9).End(xlUp).Row + 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("I" & r).Value = filename
Next r
srcbook.Close False
buf = Dir()
Loop
Cells.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
filename = 'srcsheetの拡張子なしのファイル名を取得
'シートの内容を2行目以降コピー
srcsheet.Range(Cells(2, 8), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
'myseetの最下行の一つ下に値として貼り付け
mysheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
'I列にそれぞれのファイル名を入力
For r = Cells(Rows.Count, 9).End(xlUp).Row + 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("I" & r).Value = filename
Next r
srcbook.Close False
buf = Dir()
Loop
Cells.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
614デフォルトの名無しさん
2020/06/08(月) 10:43:42.37ID:pUpXY1nL ワークシートの指定について
Activesheetだと動いて、worksheets(index)やworksheets("シート名")にするとプログラムが動かないことが多いのですが、何故でしょうか
下のようなプログラムを作りました。(Sheet2のA列の数字でSheet1にフィルターをかけて、pdf出力を繰り返す)
Sub Macro3()
For Each c In Worksheets("Sheet2").Range("A1:A68")
i = c.Value
a=1
Worksheets(1).Range("$B$4:$N$6492").AutoFilter Field:=1, Criteria1:=i
Worksheets(1).PageSetup.RightHeader = " " & i
r = Range("$B$5:$B$6492").Find(i).Row
Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Documents" & i & "." & Cells(r, 11).Value
Next c
End Sub
これを実行しても、フィルターがかからず、pdf出力メソッドの部分でエラーが起きます。
しかし、Worksheets(1) を Activesheetに直して、Sheet1をアクティブにした状態で動かすと正常に動きます。
イミディエイトウィンドウでWorksheets(1)が正しく指定されているかも確認しましたが、されていました。
一体何が原因なのでしょうか。
Activesheetだと動いて、worksheets(index)やworksheets("シート名")にするとプログラムが動かないことが多いのですが、何故でしょうか
下のようなプログラムを作りました。(Sheet2のA列の数字でSheet1にフィルターをかけて、pdf出力を繰り返す)
Sub Macro3()
For Each c In Worksheets("Sheet2").Range("A1:A68")
i = c.Value
a=1
Worksheets(1).Range("$B$4:$N$6492").AutoFilter Field:=1, Criteria1:=i
Worksheets(1).PageSetup.RightHeader = " " & i
r = Range("$B$5:$B$6492").Find(i).Row
Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Documents" & i & "." & Cells(r, 11).Value
Next c
End Sub
これを実行しても、フィルターがかからず、pdf出力メソッドの部分でエラーが起きます。
しかし、Worksheets(1) を Activesheetに直して、Sheet1をアクティブにした状態で動かすと正常に動きます。
イミディエイトウィンドウでWorksheets(1)が正しく指定されているかも確認しましたが、されていました。
一体何が原因なのでしょうか。
615デフォルトの名無しさん
2020/06/08(月) 11:07:13.39ID:FM/y1B8a >>614
入力ミスがないとして、この2箇所でシートの指定が抜けてるのが原因では
Range("$B$5:$B$6492").Find(i).Row
Cells(r, 11).Value
何度もWorksheets(1)を書くんじゃなくて、Forの外でActivateするかWithでSheet1を指定した方が間違いがなくていいと思う
入力ミスがないとして、この2箇所でシートの指定が抜けてるのが原因では
Range("$B$5:$B$6492").Find(i).Row
Cells(r, 11).Value
何度もWorksheets(1)を書くんじゃなくて、Forの外でActivateするかWithでSheet1を指定した方が間違いがなくていいと思う
616デフォルトの名無しさん
2020/06/08(月) 11:07:50.22ID:F0/ca02L workbookは指定してるの?
617デフォルトの名無しさん
2020/06/08(月) 14:34:55.82ID:k7tLKOMH アドインに記述されてるプロシージャを、シート上の図形をボタンにしてそこから走らせたいのですが、
引数を渡そうとすると、このブックでマクロが使用できないかすべてのマクロが無効なっている可能性があります、と出て実行できません
すべてのマクロを有効にしてもダメでした
引数なしの場合は、マクロが無効であっても、なんの問題もなく実行されます
登録は、'プロシージャ名 "引数"'とやっているのですが、マクロからそのままやると実行されますが、ボタンに登録すると実行されません
なにが問題なんでしょうか?
引数を渡そうとすると、このブックでマクロが使用できないかすべてのマクロが無効なっている可能性があります、と出て実行できません
すべてのマクロを有効にしてもダメでした
引数なしの場合は、マクロが無効であっても、なんの問題もなく実行されます
登録は、'プロシージャ名 "引数"'とやっているのですが、マクロからそのままやると実行されますが、ボタンに登録すると実行されません
なにが問題なんでしょうか?
618デフォルトの名無しさん
2020/06/08(月) 15:14:19.45ID:vAWoQ1cV sub 引数なし()
引数あり "引数"
end sub
引数あり "引数"
end sub
619デフォルトの名無しさん
2020/06/08(月) 15:39:02.50ID:P+hhNSq/ なるほど・・・
結構な数のボタンになるので面倒ですが、ひとまずそれでやってみます
結構な数のボタンになるので面倒ですが、ひとまずそれでやってみます
620デフォルトの名無しさん
2020/06/08(月) 15:41:22.39ID:F0/ca02L プルダウンなりなんなりで選ぶなりなんなりさせればいいじゃないなり
621デフォルトの名無しさん
2020/06/08(月) 16:55:09.51ID:Fo3kuWti イベント付きボタンのクラス作ればいいんじゃないのかな
622611
2020/06/08(月) 17:50:20.70ID:k1oezjz2 srcsheet.Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
のところが違うみたいです。どう書けばいいですか?
のところが違うみたいです。どう書けばいいですか?
623デフォルトの名無しさん
2020/06/08(月) 18:10:47.25ID:sSFxNrIu シート名が抜けるの俺もむかーしよくやったわぁ
アクティブにすると直るんだよなぁw
何度やったか記憶にないぐらいやって痛い思いした
アクティブにすると直るんだよなぁw
何度やったか記憶にないぐらいやって痛い思いした
624デフォルトの名無しさん
2020/06/08(月) 18:31:02.99ID:J+Lc8xxu withで囲んでもドットを忘れてそれに気づかずいつまでもソースとにらめっこしたりな
625デフォルトの名無しさん
2020/06/08(月) 18:52:12.93ID:d2CDqPLn >>622
srcsheet.Range(srcsheet.Cells(2, 1), srcsheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
確証ないけど…
srcsheet.Range(srcsheet.Cells(2, 1), srcsheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
確証ないけど…
626デフォルトの名無しさん
2020/06/08(月) 19:01:25.33ID:zqZQO86x Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Sh.Range("A:Z").Interior.Color = xlNone
If Intersect(Sh.Range("A:Z"), Target) Is Nothing Then
Exit Sub
Else '赤く色が変わる列
Intersect(Selection.EntireRow, Sh.Range("G:Z")).Interior.Color = RGB(0, 255, 0)
End If
End Sub
とにかく複数選択したセル行の特定の列を全部色付け
選択をやめると色が戻る(デフォルト)をやりたくて
ThisWorkBookにこれを追記
で、なんとか希望の動きになったんですが
これに1行目から7行目は除外(選択しても色が付かない)
という条件の追加は可能ですか?
自分の知識じゃ無理ゲーですみません
Sh.Range("A:Z").Interior.Color = xlNone
If Intersect(Sh.Range("A:Z"), Target) Is Nothing Then
Exit Sub
Else '赤く色が変わる列
Intersect(Selection.EntireRow, Sh.Range("G:Z")).Interior.Color = RGB(0, 255, 0)
End If
End Sub
とにかく複数選択したセル行の特定の列を全部色付け
選択をやめると色が戻る(デフォルト)をやりたくて
ThisWorkBookにこれを追記
で、なんとか希望の動きになったんですが
これに1行目から7行目は除外(選択しても色が付かない)
という条件の追加は可能ですか?
自分の知識じゃ無理ゲーですみません
627デフォルトの名無しさん
2020/06/08(月) 19:48:40.38ID:58QwRa4M629デフォルトの名無しさん
2020/06/08(月) 20:24:46.83ID:zqZQO86x >>627
おおお、ありがとう理想の挙動に近づきました!
これだと12行目を選択した後にやめて
1行目を選択しても12行目の色が残っちゃうんだけどそれは回避不能ですか?
If Intersect(Sh.Range("A:Z"), Target) Isのところを
If Intersect(Sh.Range("A8:Z5000"), Target) Is
とかに変えても少し挙動が近づいた気もしますが、
おおお、ありがとう理想の挙動に近づきました!
これだと12行目を選択した後にやめて
1行目を選択しても12行目の色が残っちゃうんだけどそれは回避不能ですか?
If Intersect(Sh.Range("A:Z"), Target) Isのところを
If Intersect(Sh.Range("A8:Z5000"), Target) Is
とかに変えても少し挙動が近づいた気もしますが、
630デフォルトの名無しさん
2020/06/08(月) 20:28:42.90ID:pW+OOibM 構造体のメンバ変数を頭からindexで指定するようなことってできませんか?
for文で構造体のメンバ変数と配列とを順次比較したいんですが。
for文で構造体のメンバ変数と配列とを順次比較したいんですが。
631デフォルトの名無しさん
2020/06/08(月) 20:28:54.07ID:WKHI6Xr1 変数名やプロシージャ名を日本語で書くか否か迷ってます
日本語命名で困ったことが起こった人はいますか
日本語命名で困ったことが起こった人はいますか
632デフォルトの名無しさん
2020/06/08(月) 20:30:33.47ID:ckk4P3me >>629
少しは頭を使えよ、馬鹿
少しは頭を使えよ、馬鹿
633デフォルトの名無しさん
2020/06/09(火) 00:06:52.26ID:GDblTDVr >>632
頭使ったらハゲるだろ、このハゲ
頭使ったらハゲるだろ、このハゲ
634デフォルトの名無しさん
2020/06/09(火) 00:40:35.48ID:4DWGZxBT ちょっとトンチンカンかもしれないですが
WindowsのエクセルのVBAって
LinuxのOpen OfficeのCalcでも使えたりするんでしょうか?
WindowsのエクセルのVBAって
LinuxのOpen OfficeのCalcでも使えたりするんでしょうか?
635デフォルトの名無しさん
2020/06/09(火) 01:33:20.60ID:dgDUMn0q636デフォルトの名無しさん
2020/06/09(火) 03:31:53.35ID:eSuxcQl/637デフォルトの名無しさん
2020/06/09(火) 03:41:28.59ID:eSuxcQl/639デフォルトの名無しさん
2020/06/09(火) 09:00:21.92ID:khiSZY25 >>631
会社で使うなら社内の自分より詳しい人に相談してみ
会社で使うなら社内の自分より詳しい人に相談してみ
640デフォルトの名無しさん
2020/06/09(火) 09:06:51.24ID:r/wULa9J 個人的には日本語プロシジャー名好き
処理名だと分かりやすい
処理名だと分かりやすい
641デフォルトの名無しさん
2020/06/09(火) 09:38:40.07ID:rQkYVq9m 困った時のローマ字
Sub CSV_no_deTa_wo_rodo_suru()
Sub CSV_no_deTa_wo_rodo_suru()
642デフォルトの名無しさん
2020/06/09(火) 09:49:38.68ID:r/wULa9J そもそもシート名で日本語使ってるからね
気にするならそこからやらないとね
気にするならそこからやらないとね
643デフォルトの名無しさん
2020/06/09(火) 09:56:55.81ID:LXNCuYlO >>631
単純に一つの言語で統一した方が読みやすい
これは一般的な文章でも感じられると思う
逆にコメント等を日本語にすることで注釈として意識させることが出来る
自分は実装には使わないテスト用のメソッドをを日本語名にする事はあるよ
アメリカに送ったら云々は条件が特殊だし、
日本語コメントも文字化けするんだから関係ないだろと思う
単純に一つの言語で統一した方が読みやすい
これは一般的な文章でも感じられると思う
逆にコメント等を日本語にすることで注釈として意識させることが出来る
自分は実装には使わないテスト用のメソッドをを日本語名にする事はあるよ
アメリカに送ったら云々は条件が特殊だし、
日本語コメントも文字化けするんだから関係ないだろと思う
644デフォルトの名無しさん
2020/06/09(火) 10:05:30.26ID:FZrbGc0Z システムとして表示やコンパイルが可能かってのと、それを読む人間が外国語を理解できるかはまた別の話
とりまファイル名やワークシートに入ってるデータが日本語なら何も気にしなくていいってことよ
そもそも半角文字だって国によって割り当てが違うんだし
とりまファイル名やワークシートに入ってるデータが日本語なら何も気にしなくていいってことよ
そもそも半角文字だって国によって割り当てが違うんだし
645デフォルトの名無しさん
2020/06/09(火) 10:25:08.00ID:LXNCuYlO いずれにしても海外環境で動くかって話になると、
関数名ひとつの話じゃないってことだな
関数名ひとつの話じゃないってことだな
646デフォルトの名無しさん
2020/06/09(火) 11:06:11.34ID:GhLF46O3 >>640
自分はプロシージャ名だけでなく変数名にもときどき使ってます。
変数名を横文字で考え付くのが面倒ってこともありますが。
行や列の位置を示す変数に tate yoko の後は 行 列 縦 横 など。
自分はプロシージャ名だけでなく変数名にもときどき使ってます。
変数名を横文字で考え付くのが面倒ってこともありますが。
行や列の位置を示す変数に tate yoko の後は 行 列 縦 横 など。
647デフォルトの名無しさん
2020/06/09(火) 12:07:12.66ID:GJCBYo9K 賛否両論(少し否優勢)な感じね
賛の中でもプロシージャ名、関数名、定数変数名のどこまで日本語が許されるかも派閥次第か
賛の中でもプロシージャ名、関数名、定数変数名のどこまで日本語が許されるかも派閥次第か
648582
2020/06/09(火) 12:11:23.51ID:w8zDheKG iとかなら良いけど変数の型とかプロシージャなのか区別出来る名前になってないと最悪。
で、日本語の名前つけてるのにそんなのが多い。
で、日本語の名前つけてるのにそんなのが多い。
649デフォルトの名無しさん
2020/06/09(火) 12:33:34.60ID:RJ9Fxau+ >>637
ありがとうございます
ありがとうございます
650デフォルトの名無しさん
2020/06/09(火) 12:34:58.09ID:LXNCuYlO 変な事せずに命名規則に従った方がいいと思うけどね
メシマズ嫁と同じ思考回路だぞ
メシマズ嫁と同じ思考回路だぞ
651デフォルトの名無しさん
2020/06/09(火) 14:16:42.79ID:VHdLMKHt すみません。どなたか詳しい方、ご指導願います。
データ計算をVBA作成しようとして悩んでいます。
リストボックスにある地名を選択して、テキストボックス1に数字を
入力したらテキストボックス2に対応した数値を出したいのですが
上手く書けません。
データシートのA列(A2からA300)には地名、横軸(B1からBG1)には整数値(50ずつの数値)があり
地名と整数値の交点には、それぞれ対応した金額が入っています。
またリストボックスの地名は「地名」として別シートを作成しています。
説明方法が悪くて申し訳ないのですが記述の方法の
解説を宜しくお願いします。
データ計算をVBA作成しようとして悩んでいます。
リストボックスにある地名を選択して、テキストボックス1に数字を
入力したらテキストボックス2に対応した数値を出したいのですが
上手く書けません。
データシートのA列(A2からA300)には地名、横軸(B1からBG1)には整数値(50ずつの数値)があり
地名と整数値の交点には、それぞれ対応した金額が入っています。
またリストボックスの地名は「地名」として別シートを作成しています。
説明方法が悪くて申し訳ないのですが記述の方法の
解説を宜しくお願いします。
652デフォルトの名無しさん
2020/06/09(火) 14:31:54.35ID:ksQUvwBH h,vlookupじゃダメなんですか?
653デフォルトの名無しさん
2020/06/09(火) 14:36:44.80ID:LXNCuYlO どこまで書けてて、どこから分からないの?
654デフォルトの名無しさん
2020/06/09(火) 14:38:50.34ID:XR5JAco5 XY座標のセル表示して終わりじゃないなら
ピボット勉強した方が良いと思う
ピボット勉強した方が良いと思う
655デフォルトの名無しさん
2020/06/09(火) 14:49:37.66ID:VHdLMKHt 651です。
Private Sub ListBox1_Change()
ListBox3.Clear
Select Case ListBox1.Text
Case "東京都"
ListBox3.List = Worksheets("データ").Range("A2:A8").Value
(略)
End Select
With ListBox3
.ColumnHeads = False
.ColumnCount = 1
.ColumnWidths = "40;50;50"
.Font.Name = "Meiryo UI"
.Font.Size = 11
End With
End Sub
Private Sub TextBox2_AfterUpdate()
Dim TextBox2 As Range
Dim TextBox3 As Range
Set TextBox2 = Worksheets("データ").Range("A2:A13")
Set TextBox3 = TextBox2.Find(What:=TextBox2.Value, LookAt:=xlPart)
If Not TextBox3 Is Nothing Then
'ヒットした値をテキストボックスにセット
TextRegion.Value = Worksheets("データ").Cells(TextBox3.Row, TextBox3.Column + 8).Value
End If
End Sub
なんか変です。。。
Private Sub ListBox1_Change()
ListBox3.Clear
Select Case ListBox1.Text
Case "東京都"
ListBox3.List = Worksheets("データ").Range("A2:A8").Value
(略)
End Select
With ListBox3
.ColumnHeads = False
.ColumnCount = 1
.ColumnWidths = "40;50;50"
.Font.Name = "Meiryo UI"
.Font.Size = 11
End With
End Sub
Private Sub TextBox2_AfterUpdate()
Dim TextBox2 As Range
Dim TextBox3 As Range
Set TextBox2 = Worksheets("データ").Range("A2:A13")
Set TextBox3 = TextBox2.Find(What:=TextBox2.Value, LookAt:=xlPart)
If Not TextBox3 Is Nothing Then
'ヒットした値をテキストボックスにセット
TextRegion.Value = Worksheets("データ").Cells(TextBox3.Row, TextBox3.Column + 8).Value
End If
End Sub
なんか変です。。。
656デフォルトの名無しさん
2020/06/09(火) 14:54:09.61ID:VHdLMKHt 651です。
たぶんツッコミどころ満載です。
交点のセレクトできていません。
たぶんツッコミどころ満載です。
交点のセレクトできていません。
657デフォルトの名無しさん
2020/06/09(火) 15:51:31.81ID:Hq8JX0Tk なぜ段階を踏んで自分でテストモデルを組んでみないのかが疑問だわ
初心者の頃も含めてその程度の内容で誰かに聞いたことすらないわ
初心者の頃も含めてその程度の内容で誰かに聞いたことすらないわ
658デフォルトの名無しさん
2020/06/09(火) 15:53:54.04ID:Hq8JX0Tk 1.リストボックスで選択してボタン押して他のフォームで項目表示できるか
2.テキストボックスに書き込んでボタン押して他のフォームのテキストボックスに表示できるか
3.リストボックスとテキストボックスで選択と書込をして同じフォーム上のテキストボックスに対応した数字を出せるのか
とかとか
2.テキストボックスに書き込んでボタン押して他のフォームのテキストボックスに表示できるか
3.リストボックスとテキストボックスで選択と書込をして同じフォーム上のテキストボックスに対応した数字を出せるのか
とかとか
659デフォルトの名無しさん
2020/06/09(火) 16:19:22.27ID:ksQUvwBH マクロの記録使うのはいいけど
その結果の意味ぐらい調べようよ
ググらなくてもF1キー押せば表示されるからさ
その結果の意味ぐらい調べようよ
ググらなくてもF1キー押せば表示されるからさ
660デフォルトの名無しさん
2020/06/09(火) 16:24:07.60ID:LXNCuYlO661デフォルトの名無しさん
2020/06/09(火) 17:05:07.59ID:/5vAUGTr662デフォルトの名無しさん
2020/06/09(火) 17:28:45.58ID:FZrbGc0Z >>661
簡単
簡単
663デフォルトの名無しさん
2020/06/09(火) 17:40:53.94ID:Hq8JX0Tk ユーザーフォーム使ってTextBox1とTextBox2に数字いれてTextBox3に足し算の結果だすような基本をまず調べればあとは適当にぐぐりゃ分かるわな
計算途中も変数いちいち宣言して代入していくといいわ
自分で何やってんのか見失わないようにするため
Sub testttt()
Dim drawingX As Double: drawingX = 2
Dim drawingY As Double: drawingY = 2
Dim realX As Double: realX = 2.1
Dim realY As Double: realY = 2.1
Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY
Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2
MsgBox ResultPosition
End Sub
計算途中も変数いちいち宣言して代入していくといいわ
自分で何やってんのか見失わないようにするため
Sub testttt()
Dim drawingX As Double: drawingX = 2
Dim drawingY As Double: drawingY = 2
Dim realX As Double: realX = 2.1
Dim realY As Double: realY = 2.1
Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY
Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2
MsgBox ResultPosition
End Sub
664デフォルトの名無しさん
2020/06/09(火) 17:54:43.46ID:AbQV9kr1 Private Sub TextBox1_Change() 'Xの図面寸法
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox2_Change() 'Xの測定値
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox3_AfterUpdate()'Xのズレ
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox4_Change()'Yの図面寸法
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox5_Change() 'Yの測定値
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox6_Change() 'Yのズレ
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox7_Change()
'位置度最難関
TextBox7 = Val(Sqr(TextBox3.Value) ^ 2) + Val(Sqr(TextBox6.Value) ^ 2) * 2
End Sub
tBox6.Value) ^ 2) * 2
End Sub
1〜6まではぐぐったらなんとかできた
あとは7… >>663 ぐぐるより難しそうで無理す
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox2_Change() 'Xの測定値
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox3_AfterUpdate()'Xのズレ
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox4_Change()'Yの図面寸法
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox5_Change() 'Yの測定値
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox6_Change() 'Yのズレ
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox7_Change()
'位置度最難関
TextBox7 = Val(Sqr(TextBox3.Value) ^ 2) + Val(Sqr(TextBox6.Value) ^ 2) * 2
End Sub
tBox6.Value) ^ 2) * 2
End Sub
1〜6まではぐぐったらなんとかできた
あとは7… >>663 ぐぐるより難しそうで無理す
665デフォルトの名無しさん
2020/06/09(火) 17:58:28.74ID:AbQV9kr1 ああ、最後に変なコピペが混じってる
3と6にも多分式を入れないとだめですよね恐らく
3と6にも多分式を入れないとだめですよね恐らく
666デフォルトの名無しさん
2020/06/09(火) 18:02:48.17ID:AbQV9kr1 いや違う、むしろ7に入れずに3と6っぽい?
そもそもド素人にはやはり厳しいね
頑張りますわ
そもそもド素人にはやはり厳しいね
頑張りますわ
667デフォルトの名無しさん
2020/06/09(火) 18:44:30.51ID:AbQV9kr1 うおぉ、浮動小数点かこりゃ?
どっかでroundで四捨五入せんといかんのね
1人であたふたすまん
ほんとムズい
どっかでroundで四捨五入せんといかんのね
1人であたふたすまん
ほんとムズい
■ このスレッドは過去ログ倉庫に格納されています
