VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
VBAを開発環境としていろいろ作っちゃいましょう
前スレ
VBAなんでも質問スレ Part2
https://mevius.5ch.net/test/read.cgi/tech/1432173164/
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
VBAなんでも質問スレ Part3
2021/09/09(木) 19:46:21.53ID:zfiF925t
2021/09/09(木) 19:50:57.85ID:zfiF925t
関連スレ
Excel VBA 質問スレ Part72
https://mevius.5ch.net/test/read.cgi/tech/1626565335/
Access VBA 質問スレ Part2
https://mevius.5ch.net/test/read.cgi/tech/1544620479/
古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]c2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1440930335/
Excel総合相談所 145
https://mevius.5ch.net/test/read.cgi/bsoft/1624085733/
Excel VBA 質問スレ Part72
https://mevius.5ch.net/test/read.cgi/tech/1626565335/
Access VBA 質問スレ Part2
https://mevius.5ch.net/test/read.cgi/tech/1544620479/
古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]c2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1440930335/
Excel総合相談所 145
https://mevius.5ch.net/test/read.cgi/bsoft/1624085733/
2021/09/09(木) 19:51:44.70ID:zfiF925t
前スレ落ちたままだったから建てた
2021/09/17(金) 20:28:55.22ID:HsaXC1Am
プロシージャ終わったあとに変数の中身を保持するにはどうすればいいですか
ボタンとかで変数を後で呼び出したいです
ボタンとかで変数を後で呼び出したいです
2021/09/17(金) 20:58:48.95ID:MiWjDaSf
シートのセルに値を書き込んでおく
2021/09/18(土) 00:17:54.33ID:y6o4y4/H
7デフォルトの名無しさん
2021/10/20(水) 22:37:31.96ID:mCILNp7G 超初心者です
すみません、他スレでもきいたのですが
以下の対応をさせたいです
@シートを支店分だけ増やす
Aシート名をそれぞれ「支店一覧」A2〜A18の支店名にする
B作成したシートのB5に支店名を入れる
C作成したシートの表のA列が"0"になっている行を削除する
D作成したシートのオートフィルタを解除する
以下のものではエラーになりますが、どこが悪いのでしょうか
Sub シート作成
Dim 支店名 As Range
For Each 名前 In Worksheets("支店一覧").Range("A2:A18")
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = 支店名.Value
.Range("B5") = 支店名.Value
End With
Range("B3").AutoFilter 1, "0"
With Range("B3").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1).EntireRow.Delete
Range("B3").AutoFilter
End With
Next 支店名
すみません、他スレでもきいたのですが
以下の対応をさせたいです
@シートを支店分だけ増やす
Aシート名をそれぞれ「支店一覧」A2〜A18の支店名にする
B作成したシートのB5に支店名を入れる
C作成したシートの表のA列が"0"になっている行を削除する
D作成したシートのオートフィルタを解除する
以下のものではエラーになりますが、どこが悪いのでしょうか
Sub シート作成
Dim 支店名 As Range
For Each 名前 In Worksheets("支店一覧").Range("A2:A18")
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = 支店名.Value
.Range("B5") = 支店名.Value
End With
Range("B3").AutoFilter 1, "0"
With Range("B3").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1).EntireRow.Delete
Range("B3").AutoFilter
End With
Next 支店名
8デフォルトの名無しさん
2021/10/20(水) 22:49:26.57ID:mCILNp7G C作成したシートの表のB列が"0"になっている行を削除する
の誤りです
コードの3行目は
For Each 支店名 In Worksheets("支店一覧").Range("A2:A18")
の誤りです
の誤りです
コードの3行目は
For Each 支店名 In Worksheets("支店一覧").Range("A2:A18")
の誤りです
2021/10/21(木) 01:14:54.35ID:1DXeXJeG
107
2021/10/26(火) 13:12:31.54ID:NeMLM07o2021/10/26(火) 18:21:16.44ID:oxO6XS7Z
1211
2021/10/26(火) 18:27:36.54ID:oxO6XS7Z 簡単なデバッグとしてら、まずはwithステートメントを全てコメントアウトして、動くかどうか。
あとは支店名のところをシンプルにアルファベットのAからQとかに変えてみる。
あとは支店名のところをシンプルにアルファベットのAからQとかに変えてみる。
2021/12/16(木) 14:58:51.82ID:6msdMQ6g
reportのインスタンスを作成して、property Letでprivate変数に配列を渡した後に、docmd.openreportを行うと変数が全部初期化されるのな。
reportに表示させるものを変数で与えるのは不可能なのかなあ?
やっぱり、クエリとか一時的なテープルが必要なのかな?Openargsで出来そうだけど、数が多いと非現実的だよね。
reportに表示させるものを変数で与えるのは不可能なのかなあ?
やっぱり、クエリとか一時的なテープルが必要なのかな?Openargsで出来そうだけど、数が多いと非現実的だよね。
1413
2021/12/16(木) 15:02:05.17ID:6msdMQ6g グローバル変数でやるべきかなあ?でも変なときに変数の寿命が来るから不安だよなあ。
15デフォルトの名無しさん
2022/02/13(日) 16:56:03.94ID:eQTVIxP9 word vbaについて質問です。
本文↓
0001234567891
コード↓
Sub findText()
With Selection.Find
.Text = "1"
Do While .Execute
Selection.Comments.Add Range:=Selection.Range
Selection.TypeText Text:="あ"
Loop
End With
End Sub
特定の文字列を検索し、コメントを追加するマクロを作っているのですが、
コードを実行すると、本文1個目の「1」にコメントがついた後,
2ループ目の「Selection.Comments.〜」で「5935 コメント、脚注および文末脚注は、本文にのみ追加できます。」というエラーが出ます。
コメント入力時にカーソルが本文外に出るのが原因かと思い、
ループの最後にカーソルを本文中(コメントを付けたワードの直後)に戻すようにしたいのですが
どのように記述したらいいのでしょうか?
本文↓
0001234567891
コード↓
Sub findText()
With Selection.Find
.Text = "1"
Do While .Execute
Selection.Comments.Add Range:=Selection.Range
Selection.TypeText Text:="あ"
Loop
End With
End Sub
特定の文字列を検索し、コメントを追加するマクロを作っているのですが、
コードを実行すると、本文1個目の「1」にコメントがついた後,
2ループ目の「Selection.Comments.〜」で「5935 コメント、脚注および文末脚注は、本文にのみ追加できます。」というエラーが出ます。
コメント入力時にカーソルが本文外に出るのが原因かと思い、
ループの最後にカーソルを本文中(コメントを付けたワードの直後)に戻すようにしたいのですが
どのように記述したらいいのでしょうか?
2022/03/01(火) 18:52:06.00ID:gFYHZAxx
Excel VBAで質問です
現在開いているシートにマクロボタンを作り、実行させると…
現在シートのB列に検索値
別のシート(ABC)のB列の5行目〜400行目までを検索して一致したセル番号が欲しいのですが
For cnt=1 To 10 samsu(cnt)=WorksheetFunction.Match(Cells(cnt,1),Worksheets(”ABC”).Range(Cells(5,1),Cells(400,1)),0)
…
next
このMatch関数の正しい書き方を教えてもらいたいのですが。
現在開いているシートにマクロボタンを作り、実行させると…
現在シートのB列に検索値
別のシート(ABC)のB列の5行目〜400行目までを検索して一致したセル番号が欲しいのですが
For cnt=1 To 10 samsu(cnt)=WorksheetFunction.Match(Cells(cnt,1),Worksheets(”ABC”).Range(Cells(5,1),Cells(400,1)),0)
…
next
このMatch関数の正しい書き方を教えてもらいたいのですが。
2022/03/01(火) 20:16:20.95ID:AZ2KEwsI
B列ってcells(?,1)で合ってる?
もうcells(?,"B")しか使わないから忘れた
もうcells(?,"B")しか使わないから忘れた
2022/03/01(火) 22:26:50.78ID:gFYHZAxx
2022/03/12(土) 08:01:57.51ID:rBVEQH16
質問です。
アクセスから書き込みパスワード付きエクセルファイルに保存するためにエクスポートします。
当然、単純にエクスポートするコードを書いたらエラーで止まります。
これが5年くらい前
最近、この手順を自動化するために
エクセルファイル側の書き込みパスワードを解除し、保存、
アクセスからエクスポートと、いうコードを書きました。
パスワードの再設定をしていないのに正常にエクスポートされ、
書き込みパスワードも正しくかかっています。
パスワード絡みの動作がおかしい気がしますが
心当たりはありますでしょうか?
アクセスから書き込みパスワード付きエクセルファイルに保存するためにエクスポートします。
当然、単純にエクスポートするコードを書いたらエラーで止まります。
これが5年くらい前
最近、この手順を自動化するために
エクセルファイル側の書き込みパスワードを解除し、保存、
アクセスからエクスポートと、いうコードを書きました。
パスワードの再設定をしていないのに正常にエクスポートされ、
書き込みパスワードも正しくかかっています。
パスワード絡みの動作がおかしい気がしますが
心当たりはありますでしょうか?
2022/03/12(土) 08:09:55.30ID:rBVEQH16
WiNdowsを10にかえたことも影響あるかもしれま追記
せん。
せん。
2119
2022/04/09(土) 10:45:51.24ID:LIGVQVYE ウインドウズの更新かかったらさらに挙動が変わりましたw
質問の件ですが
もともとファイル内容の変更ではなく
新規作成で問題無い事に気づいたので
パスワードなしマクロファイルを作成→
マクロファイルからパスワード付きで新規(上書き)保存
と、二段階にしました。
質問の件ですが
もともとファイル内容の変更ではなく
新規作成で問題無い事に気づいたので
パスワードなしマクロファイルを作成→
マクロファイルからパスワード付きで新規(上書き)保存
と、二段階にしました。
2022/05/01(日) 14:19:41.70ID:ly+hCRMC
2日前まで動いていた自作のマクロが、昨日からウィルスと誤検出されて実行できなくなってしまいました
内容はseleniumでchromeを操作して特定のページを表示させるだけの比較的単純な物です
Windows Defenderの定義と、chromeとseleniumと.netは最新にしましたが改善されません
どうしたら誤検出だとシステムに教えることができるのでしょうか?
内容はseleniumでchromeを操作して特定のページを表示させるだけの比較的単純な物です
Windows Defenderの定義と、chromeとseleniumと.netは最新にしましたが改善されません
どうしたら誤検出だとシステムに教えることができるのでしょうか?
2022/05/01(日) 14:58:43.07ID:GoET9IZ/
署名
2022/05/01(日) 19:48:46.19ID:ly+hCRMC
デジタル証明書を作って読み込ませたら実行できるようになりました
ありがとうございました
それにしても、こんなに簡単に証明書を作れてしまうのなら、あんまり意味がない気もしますね
ありがとうございました
それにしても、こんなに簡単に証明書を作れてしまうのなら、あんまり意味がない気もしますね
2022/05/01(日) 19:50:53.15ID:ly+hCRMC
とりあえず実行はできましたが、証明書を入れたら起動がとても遅くなってしまいました
誤検出だと知らせる方法もお願いします
誤検出だと知らせる方法もお願いします
26デフォルトの名無しさん
2022/05/06(金) 17:09:58.99ID:n/glZxQ+ Excel VBAの質問です。
初心者で申し訳ありません。
yahoo知恵袋にベストアンサーにあったものなのです。
Sub Sample1()
Dim dt As Date
dt = Range("D11").Value
Range("D12").Value = GetNENDO(dt, 3)
MsgBox dt & " は " & GetNENDO(dt, 3) & " 年度です"
End Sub
Function GetNENDO(dt, x)
GetNENDO = Year(DateAdd("m", -x, dt))
End Function
Range("D12").Value = GetNENDO(dt, 3)の(dt, 3)が理解できません。
またYear(DateAdd("m", -x, dt))の-xとはどういうことでしょうか。
抽象的ですみません
初心者で申し訳ありません。
yahoo知恵袋にベストアンサーにあったものなのです。
Sub Sample1()
Dim dt As Date
dt = Range("D11").Value
Range("D12").Value = GetNENDO(dt, 3)
MsgBox dt & " は " & GetNENDO(dt, 3) & " 年度です"
End Sub
Function GetNENDO(dt, x)
GetNENDO = Year(DateAdd("m", -x, dt))
End Function
Range("D12").Value = GetNENDO(dt, 3)の(dt, 3)が理解できません。
またYear(DateAdd("m", -x, dt))の-xとはどういうことでしょうか。
抽象的ですみません
2022/05/06(金) 18:24:20.55ID:+CQ2xbTl
自作のファンクションでGetNENDOというのを作っていて、
このファンクションは引数に指定された日付dtに対してxか月前(-x)の日付の年を返却するみたいだね。
今回はセルD11に入っている日付の3か月前の年をD12に設定しているような動作だと思う
例)D11に「2022/2/3」が入っていればD12には「2021」が設定される
このファンクションは引数に指定された日付dtに対してxか月前(-x)の日付の年を返却するみたいだね。
今回はセルD11に入っている日付の3か月前の年をD12に設定しているような動作だと思う
例)D11に「2022/2/3」が入っていればD12には「2021」が設定される
2022/05/06(金) 19:49:29.47ID:vBpX51Ga
知恵袋さんは回答するだけしといて解説が無いから初心者にはキツイよ
2022/05/06(金) 22:15:14.38ID:P6mnwuPA
カレンダー年から会計年に変換するVBAのようだが
こんなのワークシート関数で十分なのに有り難がって使う理由が分からんよ
こんなのワークシート関数で十分なのに有り難がって使う理由が分からんよ
2022/05/07(土) 05:50:57.56ID:WpJq4eDb
>>29
プログラミング全般に言えることだけど、単なる数式と比較して、関数化して名前が付けてあると、他人が見た時に用途や動作がわかりやすくなるという大きなメリットがある
プログラミング全般に言えることだけど、単なる数式と比較して、関数化して名前が付けてあると、他人が見た時に用途や動作がわかりやすくなるという大きなメリットがある
2022/05/07(土) 23:47:50.28ID:xbH87CjA
>>29
それ言い出したら、「全部0100010101000」で表現できるのにいちいちアセンブラとかありがたがって使う意味わからん、まで遡る。
抽象化は大事だよ。
あと、地の文に「有難がって」みたいなネガティブな印象の語を持ってきて、言いたいことを暗に伝えるのはやめたほうがいいと思う。
ゲスゴミがよく使うんだけど、「・・・などと訳のわからないことを言っており」とか、「行き過ぎた○○の是正を」とかの表現を使って責任逃れしつつ人や物にレッテルを貼る卑怯者に見える。
俺がゲスゴミって表現使ったのことでなんとなく俺のスタンス伝わるだろ?そういう類。
それ言い出したら、「全部0100010101000」で表現できるのにいちいちアセンブラとかありがたがって使う意味わからん、まで遡る。
抽象化は大事だよ。
あと、地の文に「有難がって」みたいなネガティブな印象の語を持ってきて、言いたいことを暗に伝えるのはやめたほうがいいと思う。
ゲスゴミがよく使うんだけど、「・・・などと訳のわからないことを言っており」とか、「行き過ぎた○○の是正を」とかの表現を使って責任逃れしつつ人や物にレッテルを貼る卑怯者に見える。
俺がゲスゴミって表現使ったのことでなんとなく俺のスタンス伝わるだろ?そういう類。
2022/05/08(日) 10:19:01.14ID:bTqMUGkM
>>29
ライブラリとか作ったり使ったりしたことなさそう
ライブラリとか作ったり使ったりしたことなさそう
2022/05/08(日) 10:51:36.83ID:ZAasayov
>>26にある知恵遅れ袋の回答者が来てるようだな
2022/05/08(日) 11:57:36.38ID:wZiRxxsO
>>26
GetNENDはなんでわざわざ引数2つにしてるんだろうな
年度を求めるなら暦年との差は必ず3な訳で、
2つめの引数に3以外を指定するならGetNENDOって名前が不適切
>>33
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1063327550
これだろ?
質問の要件が「エクセルのVBAを使って」なんだからおかしくはない
GetNENDはなんでわざわざ引数2つにしてるんだろうな
年度を求めるなら暦年との差は必ず3な訳で、
2つめの引数に3以外を指定するならGetNENDOって名前が不適切
>>33
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1063327550
これだろ?
質問の要件が「エクセルのVBAを使って」なんだからおかしくはない
2022/05/08(日) 13:10:38.22ID:spHVpjBs
>>34
年度が4月始まりじゃない場面は業界によって色々ある
年度が4月始まりじゃない場面は業界によって色々ある
2022/05/08(日) 14:40:26.99ID:bTqMUGkM
2022/05/08(日) 15:13:04.89ID:spHVpjBs
2022/05/10(火) 02:24:40.53ID:vf3aVjoi
知恵袋をたまに見てるとさ、無言で変な構文やなんかのサイトを張り付けて去っていく回答者いるけど、なんか不気味じゃない??
2022/05/10(火) 08:22:39.72ID:YKOd6nzx
事業年度や会計年度は主体・組織によって全く異なる。
会社だと3月期決算の会社は4月始まりだが、
3月期決算でない会社は世の中にたくさんある。
学校年度だって国によって違う。
4月始まりの日本は少数派。
会社だと3月期決算の会社は4月始まりだが、
3月期決算でない会社は世の中にたくさんある。
学校年度だって国によって違う。
4月始まりの日本は少数派。
2022/05/10(火) 09:44:48.97ID:rTLlCkMy
自転車置き場の議論
2022/05/10(火) 09:47:10.09ID:rTLlCkMy
年度が4月始まりじゃないならなおさら二つ目の引数は馬鹿丸出しだろ
普通年度始まりの月とかにしないか?
普通年度始まりの月とかにしないか?
42デフォルトの名無しさん
2022/05/10(火) 14:23:17.79ID:jpNs1/la2022/05/11(水) 08:32:22.33ID:RGJRKSrA
>>42
VBAなんてExcelに該当のコード貼り付けてステップ実行もすぐできるんだからためそうぜ
「Year(DateAdd("m", -x, dt))」についてはヘルプに引数の説明が載ってるんだから見て理解しないと今後が思いやられるぞ
VBAなんてExcelに該当のコード貼り付けてステップ実行もすぐできるんだからためそうぜ
「Year(DateAdd("m", -x, dt))」についてはヘルプに引数の説明が載ってるんだから見て理解しないと今後が思いやられるぞ
2022/06/17(金) 09:07:00.42ID:h3dE1ejj
今日の発見
Option Explicitの有無でサブフォームの選択の仕方が変わるのな
ちゃんと書かないとエラーになるコードもOption Explicitを消すと動く
Option Explicitの有無でサブフォームの選択の仕方が変わるのな
ちゃんと書かないとエラーになるコードもOption Explicitを消すと動く
45デフォルトの名無しさん
2022/06/17(金) 09:41:15.90ID:6P0695t/ エラーにならないようにちゃんと書け
2022/06/17(金) 10:05:18.56ID:h3dE1ejj
2022/06/17(金) 12:05:13.97ID:gheAsVGh
自分は業務で使うちょっとしたツールをVBA使う事があるけど
Option Explicitを書いてもちゃんと動くようにコーディングするのが普通だと思うから外すつもりはないけど
行数削減目的で外すとかは絶対ないわ
若いもんに作らせて外されててつけたら動かないようなもの持ってきたら作り直させるね
Option Explicitを書いてもちゃんと動くようにコーディングするのが普通だと思うから外すつもりはないけど
行数削減目的で外すとかは絶対ないわ
若いもんに作らせて外されててつけたら動かないようなもの持ってきたら作り直させるね
2022/06/17(金) 13:12:56.41ID:6WxlvkUP
エラーになるってことは変数宣言されてないのが含まれてるってことだよな
ちゃんとエラーで止まるコードと何となく動くけど実はバグってる(けど気づかない)コードとどっちが良いのか良く考えなよ
ちゃんとエラーで止まるコードと何となく動くけど実はバグってる(けど気づかない)コードとどっちが良いのか良く考えなよ
2022/06/17(金) 13:56:57.20ID:gheAsVGh
まず「ちゃんと書いてない」部分が何かわからないから議論にならないでしょ
ただ>>44のVBAはちゃんとかかなくても動いてる(目的が達成できる)ならそれでいいと思う
自分とこの業務だったら拒否するけどね
ただ>>44のVBAはちゃんとかかなくても動いてる(目的が達成できる)ならそれでいいと思う
自分とこの業務だったら拒否するけどね
5044
2022/06/17(金) 16:46:52.28ID:MN10NcFA 購入した業務用のmdbのコードが余りに酷いからリファクタリングごっこしてるうちに見つけたんですよ。1200以上のモジュールをOption Explict化したら急にオブジェクトが見つからないとか言われて驚いたんですよ。変数宣言は1週間かけてチェック済なんですよねえ。不思議ですよねえ
2022/06/17(金) 17:05:38.65ID:qX3KJPna
それはOption Explict化をミスってるんじゃないか
広域で定義(または利用されて暗黙的に定義)されてる変数を
ローカルで定義したとかの可能性が高い
つか1000以上のモジュールがあって販売してるようなプログラムとは思えん作りだな
広域で定義(または利用されて暗黙的に定義)されてる変数を
ローカルで定義したとかの可能性が高い
つか1000以上のモジュールがあって販売してるようなプログラムとは思えん作りだな
2022/06/17(金) 17:25:09.27ID:gheAsVGh
「ごっこ」って言葉を免罪符にしてるんだろうけど
直せないならやらなきゃいい
直せないならやらなきゃいい
2022/06/17(金) 22:53:08.85ID:ai+zswsd
レスを投稿する
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 青銅聖闘士のパンチは音速←わかる 白銀聖闘士はその数倍←まぁわかる 黄金聖闘士は光速←は?
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- さわやかって
- 紅しょうが大量に入れるやつwwwwwwwww
- そろそろみんなが忘れてそうなこと
