Excel VBA 質問スレ Part65
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 3bda-drwQ)
2020/03/17(火) 16:27:20.88ID:hh8LiIgR0ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
631デフォルトの名無しさん (ワッチョイ 38ef-1Gce)
2020/04/25(土) 22:58:11.29ID:u3Cmop/t0 j の役割って何だろう?
632デフォルトの名無しさん (ワッチョイ 7c7c-sVZV)
2020/04/25(土) 23:00:40.63ID:OxGSjC7Q0 だから>>626のループの中身がどうなってるか見て順番考えたらいいんじゃないの
633デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 00:49:06.95ID:1a87l4R/0 >>630
同じような処理を繰り返したい時は配列を使う
Dim OutputRange(10) As Range '出力範囲
Dim i As Integer
For i = 2 To 3
Set OutputRange(i) = Worksheets("Sheet1").Range(Cells(i, 2), Cells(i, 10))
Next
みたいな感じで、変数を使えば、何十個あっても簡単にまとめられる
同じような処理を繰り返したい時は配列を使う
Dim OutputRange(10) As Range '出力範囲
Dim i As Integer
For i = 2 To 3
Set OutputRange(i) = Worksheets("Sheet1").Range(Cells(i, 2), Cells(i, 10))
Next
みたいな感じで、変数を使えば、何十個あっても簡単にまとめられる
634デフォルトの名無しさん (ワッチョイ ae6d-A1EL)
2020/04/26(日) 02:34:49.27ID:LqR8iAxp0 なぜ馬鹿ばっかり来るのか
635デフォルトの名無しさん (ワッチョイ d4da-1Gce)
2020/04/26(日) 06:16:38.34ID:+0ojgInc0 馬鹿ばっかり来るところにいるからじゃね
ってか自力でできるやつは質問なんかしないだろ
ってか自力でできるやつは質問なんかしないだろ
636デフォルトの名無しさん (ワッチョイ 9602-TRCj)
2020/04/26(日) 09:08:46.83ID:rBKIu5KT0637デフォルトの名無しさん (ワッチョイ 2c7f-KNAb)
2020/04/26(日) 10:18:45.13ID:LS9zyJ5J0 複数あるコマンドボタンをどれを押しても一つの処理に入り、押されたボタンを取得して、ボタンごとに判断処理ってできないのでしょうか。(activeXです)
具体的にはシリアルポートの処理で以下のことをやりたいです。
コマンドボタンが機器名、その機器ごとに存在する複数のコンボボックスにポート名やボーレートを設定。
あるコマンドボタンを押したら、対応するコンボボックス郡の設定を取得してポートを開く。(ポートオープンはモジュールに記述したWritefileでやってます)
ポートオープンで返ってきたハンドラが例外でなければ、押されたコマンドボタンの色を変更し、名前を"機器名+接続中"に変更。
また、コマンドボタンを押した時点で対応ポートのハンドラが存在すれば、そのポートを閉じて(ハンドラも初期化)、押されたコマンドボタンの色を戻す。
現在はボタンごとのプロージャを作成し、同じような処理を逐一書いてますが、機器が複数あって大変見にくいのと、記述が大変なのでまとめたいです。
具体的にはシリアルポートの処理で以下のことをやりたいです。
コマンドボタンが機器名、その機器ごとに存在する複数のコンボボックスにポート名やボーレートを設定。
あるコマンドボタンを押したら、対応するコンボボックス郡の設定を取得してポートを開く。(ポートオープンはモジュールに記述したWritefileでやってます)
ポートオープンで返ってきたハンドラが例外でなければ、押されたコマンドボタンの色を変更し、名前を"機器名+接続中"に変更。
また、コマンドボタンを押した時点で対応ポートのハンドラが存在すれば、そのポートを閉じて(ハンドラも初期化)、押されたコマンドボタンの色を戻す。
現在はボタンごとのプロージャを作成し、同じような処理を逐一書いてますが、機器が複数あって大変見にくいのと、記述が大変なのでまとめたいです。
638デフォルトの名無しさん (ワッチョイ 0791-2b7E)
2020/04/26(日) 10:39:23.22ID:oDDaXD960639デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 10:39:50.30ID:1a87l4R/0640デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 10:44:46.17ID:1a87l4R/0 >>637
同じような処理なら、ボタンクリックのイベントの中で変数にボタン名を設定してから、別に用意した共通部分のSubを呼び出せばいい
ヒント
http://woodbook.kir.jp/excel/vba/button_row.html
同じような処理なら、ボタンクリックのイベントの中で変数にボタン名を設定してから、別に用意した共通部分のSubを呼び出せばいい
ヒント
http://woodbook.kir.jp/excel/vba/button_row.html
641デフォルトの名無しさん (ワッチョイ 0791-2b7E)
2020/04/26(日) 10:46:58.47ID:oDDaXD960 おっ、それを貼るとは。
じゃあ、俺も。
以下の一連を全て理解し、使いこなせれば大分変わる。
http://addinbox.sakura.ne.jp/Breakthrough_P-Ctrl_Arrays.htm
じゃあ、俺も。
以下の一連を全て理解し、使いこなせれば大分変わる。
http://addinbox.sakura.ne.jp/Breakthrough_P-Ctrl_Arrays.htm
642デフォルトの名無しさん (ワッチョイ 2c7f-KNAb)
2020/04/26(日) 11:53:55.15ID:LS9zyJ5J0 ありがとうございました
手っ取り早くやれそうな感じではなさそうです
手っ取り早くやれそうな感じではなさそうです
643デフォルトの名無しさん (ワッチョイ 3563-Btmo)
2020/04/26(日) 12:03:24.99ID:3XXXGp1c0644デフォルトの名無しさん (ワッチョイ 0791-2b7E)
2020/04/26(日) 12:07:36.34ID:oDDaXD960 >>642
一応言っておくと、途中迄なら出来るかもしれないし(それで十分かも)、読み物としても読んどくと良いと思う。
一応言っておくと、途中迄なら出来るかもしれないし(それで十分かも)、読み物としても読んどくと良いと思う。
645デフォルトの名無しさん (ワッチョイ 2c7f-KNAb)
2020/04/26(日) 14:41:44.01ID:LS9zyJ5J0 >>642
紹介頂いたサイトの大元になるmougを参考にして押したボタンの色変えぐらいまでしかできません
この処理にシート画面上のコンボボックスの値を関連付けて取得する仕掛を入れたいのですが検討つかず
紹介頂いたサイトの大元になるmougを参考にして押したボタンの色変えぐらいまでしかできません
この処理にシート画面上のコンボボックスの値を関連付けて取得する仕掛を入れたいのですが検討つかず
646デフォルトの名無しさん (アウアウウー Saab-CfBV)
2020/04/26(日) 15:58:20.12ID:io10sll9a 各ボタン押した最初の処理だけわけて
引数つけて共通処理に飛ばせばよくね
引数つけて共通処理に飛ばせばよくね
647デフォルトの名無しさん (ワッチョイ 7ab5-l81y)
2020/04/26(日) 18:40:06.52ID:IAQJrydO0 全部ここの人達のおかげで完全に憑き物が取れて教えて貰ったURLと持ってる本を参考にひたすら初歩のルールから愚直に
打っては実行を繰り返し練習してます
Do loop
For next
特にこれの破壊力は凄いですね
これだけの為に覚える価値すらあると感じました
あとはmsgboxの使い方の面白さ
感謝しかないです
Do loopでwhileとuntilがあるけどよほど複雑でない場合
書き方変えるだけで同じ処理させられる感じですが
基本どっちかでで使い方覚えていったほうがいいものですかね
質問というよりただただ楽しくここの上級者たちにも癖だったり自分ルールがあるのかなと
ああ楽しい
打っては実行を繰り返し練習してます
Do loop
For next
特にこれの破壊力は凄いですね
これだけの為に覚える価値すらあると感じました
あとはmsgboxの使い方の面白さ
感謝しかないです
Do loopでwhileとuntilがあるけどよほど複雑でない場合
書き方変えるだけで同じ処理させられる感じですが
基本どっちかでで使い方覚えていったほうがいいものですかね
質問というよりただただ楽しくここの上級者たちにも癖だったり自分ルールがあるのかなと
ああ楽しい
648デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 19:35:22.95ID:1a87l4R/0649デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 19:37:28.36ID:1a87l4R/0 よくない例
While Not 終了条件
適切な例
Until 終了条件
While Not 終了条件
適切な例
Until 終了条件
650デフォルトの名無しさん (ワッチョイ 7ab5-l81y)
2020/04/26(日) 20:25:45.60ID:IAQJrydO0 >>649
Sub ループwhile()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 3) = Cells(i, 1) + 10
i = i + 1
Loop
MsgBox i & "回whileでループ"
End Sub
Sub ループuntil()
Dim i As Long i = 1
Do Until Cells(i, 1) = ""
Cells(i, 3) = Cells(i, 1) + 10
i = i + 1
Loop
MsgBox i & "回untilでループ"
End Sub
なるほど、空白になるまでループってのを練習してました
後者の方が一般的ですかね
勉強になります。
Sub ループwhile()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 3) = Cells(i, 1) + 10
i = i + 1
Loop
MsgBox i & "回whileでループ"
End Sub
Sub ループuntil()
Dim i As Long i = 1
Do Until Cells(i, 1) = ""
Cells(i, 3) = Cells(i, 1) + 10
i = i + 1
Loop
MsgBox i & "回untilでループ"
End Sub
なるほど、空白になるまでループってのを練習してました
後者の方が一般的ですかね
勉強になります。
651デフォルトの名無しさん (アウアウエー Sa6a-WAKu)
2020/04/26(日) 21:08:58.39ID:RAbG8RW6a 僕は wihle しか使わない
理由は c言語にないから
あと、なんとなくだけど、wihle と until は混ぜて使わない方がよい気がする
いや、混在する人がいても文句は言わないと思うけど
理由は c言語にないから
あと、なんとなくだけど、wihle と until は混ぜて使わない方がよい気がする
いや、混在する人がいても文句は言わないと思うけど
652デフォルトの名無しさん (アウアウエー Sa6a-WAKu)
2020/04/26(日) 21:11:31.65ID:RAbG8RW6a653デフォルトの名無しさん (ワッチョイ 048f-1Gce)
2020/04/26(日) 21:21:03.37ID:wya5Zv+N0 ド・モルガンの法則なんてのを知ってるとループ条件が
劇的に易しく書けるようになったりするよ
劇的に易しく書けるようになったりするよ
>>653
ドモルガンは法則ではなくて公理すなわち前提条件なのでは?
ドモルガンは法則ではなくて公理すなわち前提条件なのでは?
655デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/26(日) 22:54:36.35ID:1a87l4R/0 Not Is Nothing
英語の否定文って日本語とロジックが違うから直感的にわかりにくい
英語の否定文って日本語とロジックが違うから直感的にわかりにくい
656デフォルトの名無しさん (アウアウエー Sa6a-1Gce)
2020/04/26(日) 23:37:47.73ID:x2OEBIkDa 少なくとも一回実行する必要があるとき until
一回も実行しないかもしれないとき while
一回も実行しないかもしれないとき while
657デフォルトの名無しさん (ワッチョイ b05c-QpYc)
2020/04/27(月) 00:02:16.80ID:i1fhLCEO0 まぁ大事なのは自分の中でしっかりルールを固めておくこと
なんとなくで使い分けてると100%デスマに陥る
なんとなくで使い分けてると100%デスマに陥る
658デフォルトの名無しさん (ワッチョイ 0a2f-Hty+)
2020/04/27(月) 00:02:40.85ID:pzY5bj450659デフォルトの名無しさん (ワッチョイ ca56-nG0h)
2020/04/27(月) 00:32:05.13ID:7P4A4QOo0 シート1のA1セルにx1、x2、x3と設定し、このx1〜x3をそれぞれx1をB1セルに設定されている値、x2をC2セルに設定されている値に置換するにはどのようにすればよいのでしょうか
Replaceでは検索文字列および置換文字列を一つずつ指定できないため、検索したい文字列が増えるたびに処理が無駄に増えてしまうように思うため効率的なやり方を教えていただきたいです
Replaceでは検索文字列および置換文字列を一つずつ指定できないため、検索したい文字列が増えるたびに処理が無駄に増えてしまうように思うため効率的なやり方を教えていただきたいです
660デフォルトの名無しさん (ワッチョイ d4da-1Gce)
2020/04/27(月) 03:31:04.69ID:Rq5FZkLb0 もっとわかるように説明してもらわんと
661デフォルトの名無しさん (ワッチョイ ae63-V/Lh)
2020/04/27(月) 04:12:22.78ID:NMjdVbpJ0 置換と言ってるからセル参照ではない事だけわかった
662デフォルトの名無しさん (ワッチョイ ae01-NnsP)
2020/04/27(月) 04:51:42.68ID:o+TU1QYP0 学習能力のないひとがやってきて
説明能力の貧弱さを露呈する場所か・・・
説明能力の貧弱さを露呈する場所か・・・
663デフォルトの名無しさん (ワッチョイ 91ad-R0M4)
2020/04/27(月) 05:03:04.57ID:Nsh172gi0664デフォルトの名無しさん (ワッチョイ 6ee6-eHaU)
2020/04/27(月) 06:05:48.59ID:XYadQOO00 >>659
非効率なコードを上げてくれ
非効率なコードを上げてくれ
665デフォルトの名無しさん (オッペケ Sr5f-iTDC)
2020/04/27(月) 06:24:43.93ID:3fBcsBz5r >>659
select case
select case
666デフォルトの名無しさん (ワッチョイ d8cc-1Gce)
2020/04/27(月) 08:38:39.18ID:MOHWKMXM0667デフォルトの名無しさん (ブーイモ MMfd-KNAb)
2020/04/27(月) 09:24:40.63ID:JVYKLC34M ワークシート名をsheet(i)みたいな感じで配列に格納して、
for i=i to X
sheet(i).cell(row,col) = data
next
の様な、ループで各シートのセルに値を代入する方法を教えていただけないでしょうか。
for i=i to X
sheet(i).cell(row,col) = data
next
の様な、ループで各シートのセルに値を代入する方法を教えていただけないでしょうか。
668デフォルトの名無しさん (ワッチョイ 6cac-1Gce)
2020/04/27(月) 10:44:49.67ID:p6J78QU70669デフォルトの名無しさん (ワッチョイ ae01-NnsP)
2020/04/27(月) 10:47:33.37ID:o+TU1QYP0 Dim i As Integer
For i = 1 To 3
ThisWorkbook.Worksheets(i).Cells(1, 1) = 1
Next i
で済むようなものだと予想
For i = 1 To 3
ThisWorkbook.Worksheets(i).Cells(1, 1) = 1
Next i
で済むようなものだと予想
670デフォルトの名無しさん (ワッチョイ 0101-K+B8)
2020/04/27(月) 13:38:56.30ID:JH5ykH9R0 ・ツールの作成
・バク対応、修正業務
・各種テスト
VBAを用いて上記の業務を行う場合、皆さん(自分の取り巻く環境以外)の現場で求められる頻度や重要度が高いスキルや業務を伺いたいです。
よろしくお願いします。
・バク対応、修正業務
・各種テスト
VBAを用いて上記の業務を行う場合、皆さん(自分の取り巻く環境以外)の現場で求められる頻度や重要度が高いスキルや業務を伺いたいです。
よろしくお願いします。
671デフォルトの名無しさん (ワッチョイ 968e-RPvb)
2020/04/27(月) 15:07:52.31ID:VtI6ihiD0 >>670
馬鹿は死ね
馬鹿は死ね
672デフォルトの名無しさん (スッップ Sd70-2b7E)
2020/04/27(月) 15:33:05.22ID:uroKfm2Gd673デフォルトの名無しさん (ワッチョイ d8cc-1Gce)
2020/04/27(月) 15:35:59.76ID:MOHWKMXM0 >>667
シート名は普通に列挙したいんだと思った
コード内に記述したいのか: sheet=Array("hoge","fuga","piyo","puyo")
セル内に記述したいのか: sheet=WorksheetFunction.Transpose(WorkSheets("hoge").Range("a1:a4"))
どうか、わかんないけど
シート名は普通に列挙したいんだと思った
コード内に記述したいのか: sheet=Array("hoge","fuga","piyo","puyo")
セル内に記述したいのか: sheet=WorksheetFunction.Transpose(WorkSheets("hoge").Range("a1:a4"))
どうか、わかんないけど
674デフォルトの名無しさん (スッップ Sd70-2b7E)
2020/04/27(月) 15:36:24.43ID:uroKfm2Gd675デフォルトの名無しさん (ワッチョイ 0101-K+B8)
2020/04/27(月) 16:19:32.17ID:JH5ykH9R0676デフォルトの名無しさん (JP 0H34-GHE+)
2020/04/27(月) 17:19:41.93ID:H2efCY7TH 既存のVBAをどうしてもメンテせざるを得ないときに使う
新規に使うことはない
新規に使うことはない
677デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/27(月) 18:02:05.74ID:fDdETITO0 ちょっとデータを加工したい時、軽い処理とか1回限りの計算はVBAでやってる
VisualStudioはその場限りの捨てコードを書くには大げさすぎる
VisualStudioはその場限りの捨てコードを書くには大げさすぎる
678デフォルトの名無しさん (ブーイモ MM5e-7tYC)
2020/04/27(月) 18:06:27.58ID:JnEQ074MM >>677
そんな貴方にPowershellオススメ
そんな貴方にPowershellオススメ
679デフォルトの名無しさん (ワッチョイ 0101-K+B8)
2020/04/27(月) 18:40:53.81ID:JH5ykH9R0680デフォルトの名無しさん (ワッチョイ 6ee6-eHaU)
2020/04/27(月) 19:15:08.58ID:XYadQOO00 昔は「値で貼り付け」とかキー割り当てしてたけど最近のは割と便利になったから使ってないな
他には初回印刷日の挿入とか
ファイルプロパティにタイトルの設定とかかな
他には初回印刷日の挿入とか
ファイルプロパティにタイトルの設定とかかな
681デフォルトの名無しさん (ブーイモ MMfd-enkp)
2020/04/27(月) 20:04:15.02ID:GiQWIPCuM 「値で貼り付け」に関して最近のはどう便利になってるの?
682デフォルトの名無しさん (ワッチョイ 7c7c-sVZV)
2020/04/27(月) 20:24:28.01ID:Jy0k1GG60 VBAでの開発依頼がしょっちゅう来る…
683デフォルトの名無しさん (ワッチョイ 6ee6-1Gce)
2020/04/27(月) 20:30:04.12ID:XYadQOO00684デフォルトの名無しさん (バットンキン MM0a-N7dq)
2020/04/27(月) 20:34:34.60ID:z3LiCQZGM 配列を使った方が良い場合ってどんな時?
685デフォルトの名無しさん (ワッチョイ 6ee6-1Gce)
2020/04/27(月) 20:48:23.14ID:XYadQOO00686デフォルトの名無しさん (ワッチョイ 0101-K+B8)
2020/04/27(月) 23:24:48.65ID:JH5ykH9R0 >>680
自分の素朴な疑問に答えてもらってありがとうございます。
自分の素朴な疑問に答えてもらってありがとうございます。
687デフォルトの名無しさん (ワッチョイ 7a4b-R0M4)
2020/04/27(月) 23:26:56.58ID:g7wz6Zov0 ここの人ら凄い、
いつも感心しながら読んでるけど本当に勉強になる。
これだけ知識や経験あるならユーチューバ―とかになって上手くやれば副業も出来そう
いつも感心しながら読んでるけど本当に勉強になる。
これだけ知識や経験あるならユーチューバ―とかになって上手くやれば副業も出来そう
688デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/27(月) 23:27:29.10ID:fDdETITO0689デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/27(月) 23:28:15.08ID:fDdETITO0 office田中もいつのまにかyoutuberになってたけど、こんなおじいちゃんだとは思わなかった
690デフォルトの名無しさん (ワッチョイ 64ad-Btmo)
2020/04/27(月) 23:42:25.59ID:RTbdScdC0 VBAを本を読んだりググったりして勉強中です。
他社システムからいただくCSVファイルをExcelに取り込んで編集する必要があります。
頭にゼロが付いて、長さが不定の数字のフィールドがあるので、そこは文字列で
扱わなくてはならず、そのままExcelで開けません。
querytables.add でインポートしてみたところ、セル内改行の含まれる列があるため、
1行であるべきデータが2行になってしまいます。
POWERQueryを使えば回避できる、という情報にに突き当たり、とりあえずマクロの
記録をしてみて、使えるように変えられないか、と思いましたが行き詰っています。
「ソース = Csv.Document(File.Contents(””CSVのパス””),… 」
のCSVのパスの部分を変数にしたいのですが、変数にすると
「 .Refresh BackgroundQuery:=False」のところで
[Expression error] インポート 変数 がエクスポートと一致しません。モジュールの参照が漏れていませんか?」
と親しげだけど、冷たく突き放されます。
知識が足りなさすぎるのですが、データをきれいにして早く次の処理を作らなくては
いけなくて焦っています。
先輩たちはテレワークで、あまり質問もできず困っております。
どうぞよろしくお願いいたします。
他社システムからいただくCSVファイルをExcelに取り込んで編集する必要があります。
頭にゼロが付いて、長さが不定の数字のフィールドがあるので、そこは文字列で
扱わなくてはならず、そのままExcelで開けません。
querytables.add でインポートしてみたところ、セル内改行の含まれる列があるため、
1行であるべきデータが2行になってしまいます。
POWERQueryを使えば回避できる、という情報にに突き当たり、とりあえずマクロの
記録をしてみて、使えるように変えられないか、と思いましたが行き詰っています。
「ソース = Csv.Document(File.Contents(””CSVのパス””),… 」
のCSVのパスの部分を変数にしたいのですが、変数にすると
「 .Refresh BackgroundQuery:=False」のところで
[Expression error] インポート 変数 がエクスポートと一致しません。モジュールの参照が漏れていませんか?」
と親しげだけど、冷たく突き放されます。
知識が足りなさすぎるのですが、データをきれいにして早く次の処理を作らなくては
いけなくて焦っています。
先輩たちはテレワークで、あまり質問もできず困っております。
どうぞよろしくお願いいたします。
691デフォルトの名無しさん (オッペケ Sr5f-HrHD)
2020/04/27(月) 23:45:46.00ID:3fBcsBz5r692デフォルトの名無しさん (ワッチョイ 4c2c-iUOt)
2020/04/28(火) 01:18:35.72ID:7QVY/xgO0 >>690
Ruby なら、以下をscript.rb に書いて、
CSV データを、input.csv に書いてある時、
ruby script.rb input.csv
と、シェルで実行すると、
require 'csv'
file_path = ARGV[ 0 ] # 引数には、CSVファイルパスを渡す。input.csv
# CSV ファイルを、1行ずつ処理する
CSV.foreach( file_path ) do |row|
puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end
入力・input.csv
あ,いう
a,bc
出力
あ : いう
a : bc
Ruby なら、以下をscript.rb に書いて、
CSV データを、input.csv に書いてある時、
ruby script.rb input.csv
と、シェルで実行すると、
require 'csv'
file_path = ARGV[ 0 ] # 引数には、CSVファイルパスを渡す。input.csv
# CSV ファイルを、1行ずつ処理する
CSV.foreach( file_path ) do |row|
puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end
入力・input.csv
あ,いう
a,bc
出力
あ : いう
a : bc
693デフォルトの名無しさん (ワッチョイ 7ab5-l81y)
2020/04/28(火) 02:18:31.92ID:wtscQEd50 Sub ループuntil()
Dim g As Long
g = 3
Do Until Cells(g, 2) = ""
Cells(g, 6) = Cells(g, 2) + Cells(g, 3) * 10
g = g + 1
Loop Dim ms As String
ms = MsgBox(g & "回ループ", vbYesNo, "どうやら")
If ms = vbYes Then
MsgBox "更に練習", vbYesonly, "じゃあ" Else
MsgBox "論外", vbYesonly, "てめーは"
End If
End Sub
何とか練習しつつ
ここにきてデータ型が逆に混乱してきましたわ
バリアントでごまかそうかな
おやすみなさい
Dim g As Long
g = 3
Do Until Cells(g, 2) = ""
Cells(g, 6) = Cells(g, 2) + Cells(g, 3) * 10
g = g + 1
Loop Dim ms As String
ms = MsgBox(g & "回ループ", vbYesNo, "どうやら")
If ms = vbYes Then
MsgBox "更に練習", vbYesonly, "じゃあ" Else
MsgBox "論外", vbYesonly, "てめーは"
End If
End Sub
何とか練習しつつ
ここにきてデータ型が逆に混乱してきましたわ
バリアントでごまかそうかな
おやすみなさい
694デフォルトの名無しさん (ワッチョイ d98e-A1EL)
2020/04/28(火) 02:51:59.71ID:ro9Vnp/Q0 >>690
こんな馬鹿に仕事をさせるのが間違い
こんな馬鹿に仕事をさせるのが間違い
695デフォルトの名無しさん (ワッチョイ acce-1Gce)
2020/04/28(火) 03:02:31.63ID:OG4s1hHd0 >>693
これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解
Dim ms As VbMsgBoxResult
この宣言を書いてからコードを書くと、
If ms =
ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる
これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解
Dim ms As VbMsgBoxResult
この宣言を書いてからコードを書くと、
If ms =
ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる
696デフォルトの名無しさん (ワッチョイ 66e6-iUOt)
2020/04/28(火) 04:56:00.09ID:Ok+k67Xa0 Select Case "CSVファイルをExcelに取り込む"
Case "直接開く"
MsgBox "0 padding"
Case "querytables"
MsgBox "inline CR"
Case "POWERQuery"
MsgBox "Syntax Error"
Case "先輩たち"
MsgBox "テレワーク"
Case "2ch"
MsgBox "ググレカス"
Case "自分"
MsgBox "勉強中"
End Select
Case "直接開く"
MsgBox "0 padding"
Case "querytables"
MsgBox "inline CR"
Case "POWERQuery"
MsgBox "Syntax Error"
Case "先輩たち"
MsgBox "テレワーク"
Case "2ch"
MsgBox "ググレカス"
Case "自分"
MsgBox "勉強中"
End Select
697デフォルトの名無しさん (ワッチョイ 91ad-R0M4)
2020/04/28(火) 05:30:30.28ID:CHpsAleC0698デフォルトの名無しさん (ワッチョイ 38ef-1Gce)
2020/04/28(火) 06:23:10.14ID:fDIatR4a0 最近csvを開くのがはやってるみたいだけど、拡張子をtxtに変えて開き直すといいよ
699デフォルトの名無しさん (ワッチョイ 048f-1Gce)
2020/04/28(火) 08:10:33.21ID:uR1kyCkX0 >>670
ぜ・ん・ぶ
ぜ・ん・ぶ
700デフォルトの名無しさん (スッップ Sd70-bbQE)
2020/04/28(火) 08:27:27.46ID:F6rfqhbJd701667 (ワッチョイ 2c7f-So6t)
2020/04/28(火) 13:36:09.05ID:1XDByXps0 ありがとうございました。
できました。
できました。
702デフォルトの名無しさん (ワッチョイ 7349-xf6K)
2020/04/28(火) 13:57:24.45ID:0tfnjkqK0 いえいえ
703デフォルトの名無しさん (ブーイモ MM5e-43Dx)
2020/04/28(火) 17:53:56.69ID:YPs9lugpM Sub テキスト抽出()
ChDir "c:\tmp"
f = Dir("*.txt")
c = 1
Do While f <> ""
Open f For Input As #1
Line Input As #1,s
s = "s"
r = 1
Do While Not EOF(1) And s <> ""
Line Input #1, s
If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
r = r + 1
Loop
Close #1
f = Dir
c = c + 1
Loop
End Sub
ChDir "c:\tmp"
f = Dir("*.txt")
c = 1
Do While f <> ""
Open f For Input As #1
Line Input As #1,s
s = "s"
r = 1
Do While Not EOF(1) And s <> ""
Line Input #1, s
If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
r = r + 1
Loop
Close #1
f = Dir
c = c + 1
Loop
End Sub
704デフォルトの名無しさん (ブーイモ MM5e-43Dx)
2020/04/28(火) 18:04:37.39ID:YPs9lugpM ここで教えて頂いた>>703の「指定Path内の全txtデータのF列2行目から下に数値が続く限りシートに全部抽出する」コードのお陰で憑き物が取れて運用してるのですが
たまに画像の様な他の列に行がはみ出したデータがあると
実行時エラー'9':
インデックスが有効範囲にありません
で止まりますが
これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」
に改良するのは難易度高いですか?
というかコードで可能でしょうか
入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく
参考になるサイトなどありましたら教えて頂けませんでしょうか
↓こんなデータが混じってるとエラーで止まります
https://i.imgur.com/194ePDL.jpg
たまに画像の様な他の列に行がはみ出したデータがあると
実行時エラー'9':
インデックスが有効範囲にありません
で止まりますが
これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」
に改良するのは難易度高いですか?
というかコードで可能でしょうか
入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく
参考になるサイトなどありましたら教えて頂けませんでしょうか
↓こんなデータが混じってるとエラーで止まります
https://i.imgur.com/194ePDL.jpg
705デフォルトの名無しさん (アウアウウー Saab-/zYc)
2020/04/28(火) 18:19:12.75ID:uYkVg/g/a706デフォルトの名無しさん (ワッチョイ 7a4b-R0M4)
2020/04/28(火) 18:35:05.50ID:yXtY+D7s0707デフォルトの名無しさん (ワッチョイ 38ef-1Gce)
2020/04/28(火) 19:06:29.99ID:fDIatR4a0 >>704
>If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
この行、最後に(5)ってついてるでしょ
読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う?
ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ
実を言えば、s<>"" の判定も不要だったりもする
>If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
この行、最後に(5)ってついてるでしょ
読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う?
ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ
実を言えば、s<>"" の判定も不要だったりもする
708デフォルトの名無しさん (ワッチョイ 048f-1Gce)
2020/04/28(火) 19:48:07.59ID:uR1kyCkX0 都道府県別の7日移動平均線を出すグラフ組めないかなあと
思って、「都道府県別の日々新規感染者数」を探したけど見つからん…。
なんで役人は pdf にしたがるんだろう。
思って、「都道府県別の日々新規感染者数」を探したけど見つからん…。
なんで役人は pdf にしたがるんだろう。
709デフォルトの名無しさん (ブーイモ MMed-43Dx)
2020/04/28(火) 20:13:54.22ID:ZPYYxv13M >>707
正直ほとんどさっぱりわからないです。
が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。
まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。
正直ほとんどさっぱりわからないです。
が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。
まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。
710デフォルトの名無しさん (ワッチョイ 91ad-R0M4)
2020/04/28(火) 21:00:00.12ID:CHpsAleC0711デフォルトの名無しさん (ワッチョイ 4c2c-iUOt)
2020/04/28(火) 22:51:18.67ID:7QVY/xgO0 データは、PDF じゃなくて、アプリで処理しやすいように、
同じ場所に、CSV ファイルも置いておくのが基本!
役人は、データ処理の素人w
同じ場所に、CSV ファイルも置いておくのが基本!
役人は、データ処理の素人w
712デフォルトの名無しさん (ブーイモ MMed-43Dx)
2020/04/28(火) 23:02:38.82ID:IT0hJXXxM EOF関数?
なんじゃこりゃ
なんじゃこりゃ
713デフォルトの名無しさん (ワッチョイ ae63-0s/K)
2020/04/28(火) 23:21:24.84ID:7mVXavmj0 >>708
各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?
各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?
714デフォルトの名無しさん (ワッチョイ e709-LlFz)
2020/04/29(水) 01:03:36.89ID:j7HdUAEO0 VBAから参照設定をせずにoutlookを操作しようとしていますが、
「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラーが出てしまいます。どうすれば解決できますでしょうか。。。
Sub sendmail_sample1()
Dim oApp 'As NEW Outlook.Application OutlookのApplication
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9)
'---コード1|outlookを起動する
Dim toaddress As String '変数設定:To宛先
Dim subject As String '変数設定:件名
Dim mailItemObj 'Outlookで使用するオブジェクト生成
'---コード2|差出人、本文、署名を取得する---
toaddress = Range("B2").Value 'To宛先
subject = Range("B5").Value '件名
'---コード3|メールを作成して、差出人、本文、署名を入れ込む---
Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = toaddress 'to宛先をセット
mailItemObj.subject = subject '件名をセット
'---コード7|outlookを閉じる(オブジェクトの解放)---
Set oApp = Nothing
Set mailItemObj = Nothing
End Sub
「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラーが出てしまいます。どうすれば解決できますでしょうか。。。
Sub sendmail_sample1()
Dim oApp 'As NEW Outlook.Application OutlookのApplication
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9)
'---コード1|outlookを起動する
Dim toaddress As String '変数設定:To宛先
Dim subject As String '変数設定:件名
Dim mailItemObj 'Outlookで使用するオブジェクト生成
'---コード2|差出人、本文、署名を取得する---
toaddress = Range("B2").Value 'To宛先
subject = Range("B5").Value '件名
'---コード3|メールを作成して、差出人、本文、署名を入れ込む---
Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = toaddress 'to宛先をセット
mailItemObj.subject = subject '件名をセット
'---コード7|outlookを閉じる(オブジェクトの解放)---
Set oApp = Nothing
Set mailItemObj = Nothing
End Sub
715デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
2020/04/29(水) 01:10:43.62ID:ICnUrfUx0716デフォルトの名無しさん (ブーイモ MM2b-EVni)
2020/04/29(水) 01:34:35.47ID:L1oMckOiM 配列変数難しすぎて笑える
717デフォルトの名無しさん (ワッチョイ e709-LlFz)
2020/04/29(水) 01:35:24.04ID:j7HdUAEO0718デフォルトの名無しさん (ワッチョイ e709-LlFz)
2020/04/29(水) 01:40:00.70ID:j7HdUAEO0719デフォルトの名無しさん (ワッチョイ bff7-INiV)
2020/04/29(水) 09:03:38.75ID:osglNTbf0 定数ってoutlook.olMailItemみたいに書くんじゃなかったっけCreateObjectで別定義する必要があったはず
Excel上だとリファレンス入れないと>>715は機能しない
Excel上だとリファレンス入れないと>>715は機能しない
720デフォルトの名無しさん (アークセー Sx5b-apiA)
2020/04/29(水) 09:13:47.90ID:EmE7DP7rx ただのパラメータ定数参照だから普通に数字を入れればいいだけ
olMailItemは0だったかな
olMailItemは0だったかな
721690 (ワッチョイ a7ad-LlFz)
2020/04/29(水) 09:22:41.65ID:sSCyRYOw0722デフォルトの名無しさん (ブーイモ MMcb-EVni)
2020/04/29(水) 18:51:15.87ID:IoQm9XvmM msgboxの使い方
inputboxの使い方
Do loop
For next
if then else
初歩だけどここらを色々繰り返し勉強してると楽しい
msgboxは使い方もっと応用していきたい
楽しみながら勉強するといいですね
他にもっとお勧めの処理ありますかね。
あとさらに低レベルな疑問なんですが
vbYesNo
vbOkCancel
↑
これってみんな細かに使い分けます?
タイトルとメッセージで誘導してあげて
elseで何もしないにするとほぼ通じちゃいますよね
これも使い分け必須だったりするのでしょうか
inputboxの使い方
Do loop
For next
if then else
初歩だけどここらを色々繰り返し勉強してると楽しい
msgboxは使い方もっと応用していきたい
楽しみながら勉強するといいですね
他にもっとお勧めの処理ありますかね。
あとさらに低レベルな疑問なんですが
vbYesNo
vbOkCancel
↑
これってみんな細かに使い分けます?
タイトルとメッセージで誘導してあげて
elseで何もしないにするとほぼ通じちゃいますよね
これも使い分け必須だったりするのでしょうか
723デフォルトの名無しさん (アウアウウー Saab-NLJ6)
2020/04/29(水) 20:00:57.74ID:ZY0E7GgZa やってみればわかると思うが
724デフォルトの名無しさん (ワッチョイ a75f-rvxR)
2020/04/29(水) 22:30:45.80ID:sZxShGZL0 メッセージBOXが出ている状態でESCキーを押された時の挙動が違う。
725デフォルトの名無しさん (ワッチョイ a78e-DBwA)
2020/04/29(水) 23:54:48.02ID:GcIsSLnW0 >>722
そろそろ馬鹿は死ね
そろそろ馬鹿は死ね
726デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
2020/04/30(木) 00:04:19.84ID:UCocORui0 vbaって必要に迫られてやることが圧倒的な気がする
だからおすすめの処理とか言われてもな
だからおすすめの処理とか言われてもな
727デフォルトの名無しさん (JP 0H8f-sYkk)
2020/04/30(木) 02:12:11.10ID:e+nUl/nvH 同意
VBAは使わなくていいなら使わない方が望ましいわけで、
おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない
VBAは使わなくていいなら使わない方が望ましいわけで、
おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない
728デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
2020/04/30(木) 03:10:10.69ID:mLi4d9n50 道具なんて使う人次第
手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想
手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想
729デフォルトの名無しさん (ワッチョイ c7da-ts7H)
2020/04/30(木) 03:36:49.13ID:gai1ourp0730デフォルトの名無しさん (ワッチョイ df01-lZTE)
2020/04/30(木) 03:50:06.96ID:HupizHgZ0 数式だとすぐぶっ壊されてその修正に手間がかかるのでVBA使うのが好き
仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる
数式入ってるセルに保護かければいいじゃんって思うだろ・・・・
そうするとな、なんでここには入力できないんだよ!ってクレームがな、
いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ
仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる
数式入ってるセルに保護かければいいじゃんって思うだろ・・・・
そうするとな、なんでここには入力できないんだよ!ってクレームがな、
いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 今年の漢字 [ぐれ★]
- 今年の漢字は「熊」に決定! 相次ぐクマ被害 去年は「金」 [冬月記者★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★4 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★3 [冬月記者★]
- あぼーん
- 【速報】衆院議員定数削減法案、自民・維新が今国会成立見送りで調整 [Hitzeschleier★]
- 【ウヨ発狂】市民団体が「航空自衛隊の航空祭」に『戦争になるかもしれない』中止求め会見_ネットで批判コメント殺到_沖縄 [979264442]
- 残クレタワマン、始まるwwwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 【速報】今年の漢字、「熊」!wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【毎日新聞】高市首相の「アイドル化」?若年層、同じ政策でも変化する評価 [718678614]
- ガソリンスタンドで携行缶にガソリンを入れようとしたらてぇいんさんに怒られた🥺
- 【速報】今年のゲームオブザイヤー、Clair Obscur: Expedition 33 [779938112]
