!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part71
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f5f-nIK+)
2021/05/25(火) 12:48:01.06ID:mepUVc/i0140デフォルトの名無しさん (ワッチョイ 86da-IO17)
2021/06/05(土) 23:05:55.78ID:+aLYn71C0 1つのbookにシート数44、1シートに1クエリーがあり、
「すべて更新」ボタンでやると部分的にクエリー更新に失敗することが多いため、
一覧表作ってシート名とクエリー名を変数にして
For To Next で順番にクエリーを更新していくマクロを組んだ。
それまではちゃんと機能していたものの、シートの改造・追加・並び替えをしたら、
実行時エラー '-2147319767 (80028029)':
オートメーション エラーです。
無効な前方参照か、コンパイルされていない種類への参照です。
と、エラーが出て途中で止まったでござる。
検索すると「メモリーの使いすぎ?」みたいな話はヒットするも、よくわからず。
プロジェクトエクスプローラー眺めてて、
「シートの順番入れ替えたりしたので、シート名の順番がぐちゃぐちゃになってるな・・・」
と、各シートのプロパティで、
sheet01 (○○○)、sheet02 (□□□)、sheet03 (△△△)・・・
と直してみたら、今度はエラーも出ず、1発で44クエリーが最後までマクロが実行されてもうた。
Dim tblQ As ListObject ' 対象となるクエリーの変数宣言
Dim ws As String ' sheet名の文字列変数宣言
Dim q As String ' クエリー名の文字列変数宣言
(中略)
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q) ←ここで止まった
tblQ.QueryTable.Refresh BackgroundQuery:=False
としてたのだけど、sheet名がマクロの実行順に並んでいないと、
VBAはwsやqの検索に失敗することがある (特にシート数が多い場合)
という理解でいいのかな?
「すべて更新」ボタンでやると部分的にクエリー更新に失敗することが多いため、
一覧表作ってシート名とクエリー名を変数にして
For To Next で順番にクエリーを更新していくマクロを組んだ。
それまではちゃんと機能していたものの、シートの改造・追加・並び替えをしたら、
実行時エラー '-2147319767 (80028029)':
オートメーション エラーです。
無効な前方参照か、コンパイルされていない種類への参照です。
と、エラーが出て途中で止まったでござる。
検索すると「メモリーの使いすぎ?」みたいな話はヒットするも、よくわからず。
プロジェクトエクスプローラー眺めてて、
「シートの順番入れ替えたりしたので、シート名の順番がぐちゃぐちゃになってるな・・・」
と、各シートのプロパティで、
sheet01 (○○○)、sheet02 (□□□)、sheet03 (△△△)・・・
と直してみたら、今度はエラーも出ず、1発で44クエリーが最後までマクロが実行されてもうた。
Dim tblQ As ListObject ' 対象となるクエリーの変数宣言
Dim ws As String ' sheet名の文字列変数宣言
Dim q As String ' クエリー名の文字列変数宣言
(中略)
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q) ←ここで止まった
tblQ.QueryTable.Refresh BackgroundQuery:=False
としてたのだけど、sheet名がマクロの実行順に並んでいないと、
VBAはwsやqの検索に失敗することがある (特にシート数が多い場合)
という理解でいいのかな?
141デフォルトの名無しさん (ワッチョイ 2d8e-Wt59)
2021/06/05(土) 23:06:05.26ID:HEfJq5i50 >>138
その程度の馬鹿頭でWindows APIなんか使うなよ
その程度の馬鹿頭でWindows APIなんか使うなよ
142デフォルトの名無しさん (ワッチョイ 355f-pu9w)
2021/06/05(土) 23:09:38.86ID:OxA9wcds0143デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/05(土) 23:22:29.75ID:fW5GrJR10 >>135
問題が起きにくくするようにのための決めごとだよ
もっとも、やってる仕事場のプログラマーが歩んできた経験則に大きく左右されたりもするから
そこは仕事場ごとのコーディング規約に基づいて組めばいいんじゃないかな。
それはプログラマーのお仕事としての基本になるかな。
>>136
面倒くさいよ。でも他の言語とは比較にならないくらい楽な方だよ。
>>137
またいつシートの行や列が増えないとも限らないじゃん。とある銀行系のところは行や列が増える以前からそんな想定をしてて最初からLong型を使うことがコーディング規約に記載されてたよ。
それにどうせInteger型はLong型を半分マスクしたものだからLong使って処理が遅くなったり容量余計食ったりすることないしね。
問題が起きにくくするようにのための決めごとだよ
もっとも、やってる仕事場のプログラマーが歩んできた経験則に大きく左右されたりもするから
そこは仕事場ごとのコーディング規約に基づいて組めばいいんじゃないかな。
それはプログラマーのお仕事としての基本になるかな。
>>136
面倒くさいよ。でも他の言語とは比較にならないくらい楽な方だよ。
>>137
またいつシートの行や列が増えないとも限らないじゃん。とある銀行系のところは行や列が増える以前からそんな想定をしてて最初からLong型を使うことがコーディング規約に記載されてたよ。
それにどうせInteger型はLong型を半分マスクしたものだからLong使って処理が遅くなったり容量余計食ったりすることないしね。
144デフォルトの名無しさん (スプッッ Sd72-9b/0)
2021/06/05(土) 23:35:33.21ID:NS39OhGXd145デフォルトの名無しさん (ワントンキン MM5a-Srd6)
2021/06/06(日) 00:10:56.51ID:AEt8vzaWM いつものruby馬鹿の自演
146デフォルトの名無しさん (ワッチョイ 355f-pu9w)
2021/06/06(日) 01:19:16.01ID:X88mu3QB0 >>144
ありがとうございます!
ありがとうございます!
147デフォルトの名無しさん (スッップ Sdea-gD/l)
2021/06/06(日) 02:19:15.47ID:rqYM4O//d いつものあいつ
148デフォルトの名無しさん (アウアウウー Sa11-wkOw)
2021/06/06(日) 04:32:20.52ID:V1i0NaJEa >>140
シート順を駄目な順に戻して再現するならそうかも
シート順を駄目な順に戻して再現するならそうかも
149デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 10:05:15.65ID:s0YManYn0 Ruby信者はあわしろいくやという人の手先らしい
こんなスレまでわざわざ荒らしに来るちょっと頭が残念な人
こんなスレまでわざわざ荒らしに来るちょっと頭が残念な人
150デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/06(日) 11:13:17.21ID:GvzTzrtAM151デフォルトの名無しさん (ササクッテロル Sped-q291)
2021/06/06(日) 11:44:13.88ID:kiIZdW9jp まーたあわしろいくやか
152デフォルトの名無しさん (ワッチョイ c1da-wkOw)
2021/06/06(日) 13:08:52.04ID:JiG+HYt80 基礎ってなんですか?って質問している時点で恐ろしいわ。。。
基本を知らずにExcelを操作している社員がいる職場のシートは難解なんだろうなきっと。。。
基本を知らずにExcelを操作している社員がいる職場のシートは難解なんだろうなきっと。。。
153デフォルトの名無しさん (アウアウウー Sa11-/CHb)
2021/06/06(日) 13:48:07.37ID:g5KkmiV+a >マクロだけじゃない、Excel全体は基礎ができてないとすぐ壁にぶち当たる
と言われたらまず基礎がどのぐらいか定義してもらわないと
何言ってるか分からないからだ
と言われたらまず基礎がどのぐらいか定義してもらわないと
何言ってるか分からないからだ
154デフォルトの名無しさん (アウアウウー Sa11-PpBj)
2021/06/06(日) 14:25:18.18ID:+MyNHKVga グローバル変数は許せよ
155デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/06(日) 15:13:22.89ID:WJZoQhbE0 その変数の問題だと思うんですが、subの中からFunctionをコールして、String型変数を引数で渡しても
Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか
Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです
Public hoge とかしてみても駄目でした
Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか
Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです
Public hoge とかしてみても駄目でした
156デフォルトの名無しさん (ワッチョイ d95f-VpLq)
2021/06/06(日) 15:52:47.68ID:1YH+vaIj0 それ自分を呼び出してるだけじゃね
157デフォルトの名無しさん (ワッチョイ c6da-wkOw)
2021/06/06(日) 16:34:01.92ID:vQVSsWXH0 また
158デフォルトの名無しさん (JP 0H39-IO17)
2021/06/06(日) 17:16:44.69ID:PdUE2wOEH >>155
まずはモジュールの先頭にOption Explisitって書いてみ
まずはモジュールの先頭にOption Explisitって書いてみ
159デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 17:31:48.02ID:efAmahNiM 値渡しするならCall aaa((hoge))が望ましい
っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
160デフォルトの名無しさん (ワッチョイ 1abd-t/gr)
2021/06/06(日) 18:21:18.04ID:pNkKMnVc0 VBAだけではないと思うんだけど、コードって使い回すじゃん?切った貼ったの繰り返しで完成後汚えなぁと思うことない?
あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
161デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/06(日) 18:26:33.85ID:WJZoQhbE0 FunctionとSubの違いもよく分かってなかったんですが、Functionの返り値を変数で受けようとした所
そもそも渡したい文字列がFunctionに渡せなくて困ってました
単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので
VBAはその辺が厳密なんですかね……?
そもそも渡したい文字列がFunctionに渡せなくて困ってました
単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので
VBAはその辺が厳密なんですかね……?
162デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 18:32:25.23ID:efAmahNiM 例えばFunctionで返り値をString型が欲しい場合求める場合
Public Function aaa(ByVal hoge)As String
ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
Public Function aaa(ByVal hoge)As String
ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
163デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 18:35:37.03ID:efAmahNiM Functionを呼ぶ側は
bbb = aaa((hoge))
ってやるんよ
参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
bbb = aaa((hoge))
ってやるんよ
参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
164デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 19:11:37.69ID:s0YManYn0165デフォルトの名無しさん (スプッッ Sdca-7DC9)
2021/06/06(日) 19:27:28.02ID:HeHF5+P0d 場合って何よ 具体的に書きなよ
166デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 19:56:36.98ID:efAmahNiM >>165
参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。
って言えば満足か?
参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。
って言えば満足か?
167デフォルトの名無しさん (JP 0H39-IO17)
2021/06/06(日) 20:01:57.50ID:PdUE2wOEH >>164
言うか言わないかは個人の認識の問題
言うか言わないかは個人の認識の問題
168デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 20:28:43.00ID:s0YManYn0 >>166
うん?
それ何か違う気がする
演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出される関数の引数の型で許容されるものでは無かったってことじゃないの?
例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が
Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの
内部型はIntegerになるから型が合ってエラーにはならない。という状況で、
括弧の話とはあまり関係ない気がするんだけど認識違う?
うん?
それ何か違う気がする
演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出される関数の引数の型で許容されるものでは無かったってことじゃないの?
例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が
Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの
内部型はIntegerになるから型が合ってエラーにはならない。という状況で、
括弧の話とはあまり関係ない気がするんだけど認識違う?
169デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 20:30:46.16ID:s0YManYn0 暗黙の変化ってなんだよ暗黙の変換ね
170デフォルトの名無しさん (ワッチョイ 09fd-E4sj)
2021/06/06(日) 20:42:48.07ID:aS7dMAuf0 Public Sub aaa()
Dim aa As String, bb As String, cc As Long
bb = ″b″
cc = 2
aa = bbb(bb, cc)
End Sub
Public Function bbb(ByRef b As String, ByVal c As Long)As String
(中略)
End Sub
ってやるとFunction入る前にエラーで弾かれて
aa = bbb(bb, (cc))ってやったりaa = bbb(bb, cc + 1)ってやったりすると通るんだがおま環だった?
Dim aa As String, bb As String, cc As Long
bb = ″b″
cc = 2
aa = bbb(bb, cc)
End Sub
Public Function bbb(ByRef b As String, ByVal c As Long)As String
(中略)
End Sub
ってやるとFunction入る前にエラーで弾かれて
aa = bbb(bb, (cc))ってやったりaa = bbb(bb, cc + 1)ってやったりすると通るんだがおま環だった?
171デフォルトの名無しさん (ワッチョイ d95f-VpLq)
2021/06/06(日) 20:47:53.29ID:1YH+vaIj0 なにエラー?
172デフォルトの名無しさん (ワッチョイ 86da-IO17)
2021/06/06(日) 21:00:41.59ID:qWOh0TID0173デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 21:34:20.79ID:s0YManYn0 >>170
コピーして実行してみたけど
まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。
コンパイルした時点でエラーで弾かれたよ。
そこを修正したらエラーが出なくなった。
コピーして実行してみたけど
まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。
コンパイルした時点でエラーで弾かれたよ。
そこを修正したらエラーが出なくなった。
174デフォルトの名無しさん (ワッチョイ c6da-IO17)
2021/06/06(日) 22:08:04.98ID:vQVSsWXH0 >>170
ファイル壊れてんじゃね
ファイル壊れてんじゃね
175デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 22:13:12.19ID:s0YManYn0 関数やメソッドに括弧が必要なのは確か
・Functionで戻り値を受ける場合
・Subで頭にCallを付けない場合
じゃなかったっけ?
後、括弧で括らないと順序関係なく
個別に引数を設定することが
出来るんじゃなかったっけか?
まぁ自分としては何であれ括弧を付けて
Subの場合は頭にCall付けて関数やメソッドが
呼ばれていることを明示する
必要があると思うけど。
あまり引数が多い関数は引数そのものを
抱えるエンティティクラスを作って
そのインスタンスを引数で渡してやれば
いい気がするしその方が可読性高いよね。
・Functionで戻り値を受ける場合
・Subで頭にCallを付けない場合
じゃなかったっけ?
後、括弧で括らないと順序関係なく
個別に引数を設定することが
出来るんじゃなかったっけか?
まぁ自分としては何であれ括弧を付けて
Subの場合は頭にCall付けて関数やメソッドが
呼ばれていることを明示する
必要があると思うけど。
あまり引数が多い関数は引数そのものを
抱えるエンティティクラスを作って
そのインスタンスを引数で渡してやれば
いい気がするしその方が可読性高いよね。
176デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/06(日) 23:50:30.47ID:WJZoQhbE0 >>162-163
ありがとうございます、値渡しがどうしても上手く行かなかったので試してみます
ありがとうございます、値渡しがどうしても上手く行かなかったので試してみます
177デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/07(月) 10:20:45.70ID:nhaEx8Ewa 大きな声で言えないけど、おれoption explicit付けたこと無いしグローバルじゃない変数は宣言しないで使ってる。グローバルな変数大好き
178デフォルトの名無しさん (ワッチョイ 4ada-wkOw)
2021/06/07(月) 10:24:31.34ID:La1yJ3oH0 え?option explicit付けない人見たことない。。。
179デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/07(月) 10:27:14.26ID:nhaEx8Ewa だって俺お前と会ったことねーもん
180デフォルトの名無しさん (ササクッテロラ Sped-q291)
2021/06/07(月) 10:45:43.81ID:/bT+ATEvp まーたあわしろいくやの手下のRuby信者か
181デフォルトの名無しさん (ワッチョイ c149-M7qm)
2021/06/07(月) 10:49:48.00ID:1dhF/BUe0 ゆうてそういうことしないよって人はプログラマとかじゃないんやろ
プログラマやってたら不安になると思うし
プログラマやってたら不安になると思うし
182デフォルトの名無しさん (エムゾネ FFea-ywzN)
2021/06/07(月) 11:02:15.80ID:BLDePS2QF183デフォルトの名無しさん (ワッチョイ c6da-IO17)
2021/06/07(月) 11:36:42.90ID:5JFCMcJv0 Ruby に option explicit は無いからな
184デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/07(月) 11:53:27.33ID:faCSe2qcM185デフォルトの名無しさん (ササクッテロラ Sped-q291)
2021/06/07(月) 12:02:42.50ID:/bT+ATEvp >>182
Pythonなんか使う意味が分からん
Pythonなんか使う意味が分からん
186デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/07(月) 12:06:17.59ID:nhaEx8Ewa 俺みたいな事務屋さんは知ってても必要ないんだってば。事務屋さんだから>>184みたいに大きな声は出さないけど
でも流石にRubyの人と同一視するのはやめて。けっこう傷付くし悲しい
でも流石にRubyの人と同一視するのはやめて。けっこう傷付くし悲しい
187デフォルトの名無しさん (ササクッテロラ Sped-q291)
2021/06/07(月) 12:39:03.71ID:/bT+ATEvp 知らないで使わないのはただの無知
知ってて使わないのは悪質なバカ
知ってて使わないのは悪質なバカ
188デフォルトの名無しさん (ラクッペペ MMde-+uhU)
2021/06/07(月) 12:46:48.42ID:8ILcpsz2M VBAって宣言せずに使ったらローカルになるんだっけ?
プロと違って適当にかくから強制ひっすだわ
こういうところに書くのは省略しまくるけどな
プロと違って適当にかくから強制ひっすだわ
こういうところに書くのは省略しまくるけどな
189デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/07(月) 13:32:24.67ID:faCSe2qcM190デフォルトの名無しさん (ワッチョイ 4a7c-PpBj)
2021/06/07(月) 19:28:59.24ID:9yldYH/70 >>73 すごい亀レスだが、dispatchEventでなんとかなったわ でもいつできなくなるかドキドキ ieは終わりの圧力に屈しそう
191デフォルトの名無しさん (JP 0H39-IO17)
2021/06/08(火) 01:11:20.22ID:gtN4dmk3H192デフォルトの名無しさん (ワッチョイ 4ada-wkOw)
2021/06/08(火) 02:25:46.24ID:1f6b7zm30 普通さ、最初に覚えるだろoption explicitは?
それらを参考書とかで勉強してこなかった人とかいるのかなと?
まあ、どう運用しようがその人の勝手だろうけどさ。
それらを参考書とかで勉強してこなかった人とかいるのかなと?
まあ、どう運用しようがその人の勝手だろうけどさ。
193デフォルトの名無しさん (ワッチョイ a910-lFHD)
2021/06/08(火) 04:42:23.25ID:RLQzdArC0 option explicitは知ってるが
いちいち書かんし設定もせん
宣言は常にやる、それだけ
いちいち書かんし設定もせん
宣言は常にやる、それだけ
194デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 05:09:06.45ID:bCI8JHzDM >>193
いちいち書く?
まあその程度のオツムならたいしたコードは書いてないだろうから使わなくてもいいかもねw
https://itsakura.com/wp-content/uploads/2017/07/excel-vba-explicit2.png
いちいち書く?
まあその程度のオツムならたいしたコードは書いてないだろうから使わなくてもいいかもねw
https://itsakura.com/wp-content/uploads/2017/07/excel-vba-explicit2.png
195デフォルトの名無しさん (ワッチョイ d95f-0Hzh)
2021/06/08(火) 08:18:59.91ID:GIt8+gr30196デフォルトの名無しさん (ワッチョイ c105-3tT5)
2021/06/08(火) 08:20:58.32ID:wrp61arm0 Task オブジェクトってなんでWordだけなん?
197デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 09:07:28.17ID:3w2dwJfs0 >>194
自動構文チェックONにしているんだ。
別にどっちがいいって訳じゃないけど俺はOFF派。
コード書いてる最中にどこかのコードコピーして持って来たいときカーソル当てると
エラーのメッセージボックスが上がって元の位置に戻されるのが鬱陶しいのと
他の開発で使ってるVisual Studioが元々そんな感じだからそっちに合わせてる。
ただそうするとエラー部分が赤くなるだけでどんなエラーかは表示しないから一長一短。
OFFはパッと見でどんなエラーか分かる人向けでそれ以外の人にはお勧め出来ない。
自動構文チェックONにしているんだ。
別にどっちがいいって訳じゃないけど俺はOFF派。
コード書いてる最中にどこかのコードコピーして持って来たいときカーソル当てると
エラーのメッセージボックスが上がって元の位置に戻されるのが鬱陶しいのと
他の開発で使ってるVisual Studioが元々そんな感じだからそっちに合わせてる。
ただそうするとエラー部分が赤くなるだけでどんなエラーかは表示しないから一長一短。
OFFはパッと見でどんなエラーか分かる人向けでそれ以外の人にはお勧め出来ない。
198デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 09:12:57.77ID:3w2dwJfs0199デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 09:19:38.53ID:rnKdyaoGM200デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 09:24:20.65ID:rnKdyaoGM201デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 09:56:53.56ID:zTVPbGTxa 変な場所って、プロシージャの真ん中あたりに宣言がポッと出てくるやつか?
いちいち上に戻って書き足すのがクソダルい気持ちは分かる
いちいち上に戻って書き足すのがクソダルい気持ちは分かる
202デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 10:01:13.33ID:3w2dwJfs0203デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 10:10:38.85ID:zTVPbGTxa 違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
204デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 10:32:12.38ID:3w2dwJfs0 >>203
Option Explicitとは関係ない話?
だったら本題と内容がズレるな。
>違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
これは初心者というか.Net系やJavaとかやってる人に書かせてもそう書くときがある
関数内で定義したVBAのDimとかのスコープが関数単位で効くものでなくて
If とか For とかのブロック単位で効くものと勘違いしているらしい。
Option Explicitとは関係ない話?
だったら本題と内容がズレるな。
>違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
これは初心者というか.Net系やJavaとかやってる人に書かせてもそう書くときがある
関数内で定義したVBAのDimとかのスコープが関数単位で効くものでなくて
If とか For とかのブロック単位で効くものと勘違いしているらしい。
205デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 10:36:39.71ID:zPjYlIziM206デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 10:47:13.49ID:3w2dwJfs0 >>205
それは可読性の問題
あくまで俺だったらだけど同一スコープの先頭に書くな。後で変数定義して既に使われてる変数書いてエラーになって「あ」ってなるの嫌だし
一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
それは可読性の問題
あくまで俺だったらだけど同一スコープの先頭に書くな。後で変数定義して既に使われてる変数書いてエラーになって「あ」ってなるの嫌だし
一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
207デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 10:51:37.03ID:zTVPbGTxa208デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 11:03:04.11ID:3w2dwJfs0 >>207
よく嫁
>俺も宣言は他言語同様やるがOptionは気にしないな
>下手するとそれがあるせいで変な場所で宣言してる例をよく見る
Optionがあるせいで変な場所に宣言してる例をよく見るって書いてあるだろ?
そっちの話はOptionの話と関係ある?
後、宣言する場所に関しては老害とかないから安心していいぞ。何故ならもっと新しい言語のVB.NetやC#でも効くスコープの先頭に書くのが一般的だから。
よく嫁
>俺も宣言は他言語同様やるがOptionは気にしないな
>下手するとそれがあるせいで変な場所で宣言してる例をよく見る
Optionがあるせいで変な場所に宣言してる例をよく見るって書いてあるだろ?
そっちの話はOptionの話と関係ある?
後、宣言する場所に関しては老害とかないから安心していいぞ。何故ならもっと新しい言語のVB.NetやC#でも効くスコープの先頭に書くのが一般的だから。
209デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 11:06:06.39ID:zTVPbGTxa210デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 11:07:57.69ID:3w2dwJfs0211デフォルトの名無しさん (ワッチョイ d95f-0Hzh)
2021/06/08(火) 11:09:49.36ID:GIt8+gr30 >>201
まさにそれ
まさにそれ
212デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 11:10:37.61ID:bCI8JHzDM >>206
別にお前さんに強要するつもりはないから自分の好きな様に書いてくれ
ただIDEの使い方位は覚えておいた方がいいんじゃないかな
> 一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
別にお前さんに強要するつもりはないから自分の好きな様に書いてくれ
ただIDEの使い方位は覚えておいた方がいいんじゃないかな
> 一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
213デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 11:15:14.30ID:zTVPbGTxa214デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 11:16:08.53ID:3w2dwJfs0 >>212
Visual Studio辺りであればカーソル合わせると
定義した型が表示されるから分かるが
VBAの場合は一々「型の定義」でそこまで
飛ばないといけないし、何度か最寄りの型まで
調べると元の位置に戻ってくるのも
面倒だと思ってるんだけど認識違う?
違うんならそのIDEの使い方とやらを
提示して頂けると有り難いんだけどな
Visual Studio辺りであればカーソル合わせると
定義した型が表示されるから分かるが
VBAの場合は一々「型の定義」でそこまで
飛ばないといけないし、何度か最寄りの型まで
調べると元の位置に戻ってくるのも
面倒だと思ってるんだけど認識違う?
違うんならそのIDEの使い方とやらを
提示して頂けると有り難いんだけどな
215デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/08(火) 11:20:57.88ID:Bz/vS+dRM 変数の宣言って頭でまとめて宣言するより使う場所で宣言するのが今の主流だった気がするけどウチの会社だけなんかな
216デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 11:24:56.38ID:3w2dwJfs0 >>213
よく分からないな
初心者だから変数定義をしていないといいつつ
変数定義しているところがポッと出てくるという。
変数定義してたりしてなかったりというのであれば
もうそういう次元の話ではなくなってくる。
よく分からないな
初心者だから変数定義をしていないといいつつ
変数定義しているところがポッと出てくるという。
変数定義してたりしてなかったりというのであれば
もうそういう次元の話ではなくなってくる。
217デフォルトの名無しさん (ワッチョイ a910-lFHD)
2021/06/08(火) 11:25:51.75ID:RLQzdArC0 >>194
だから「設定」と書いてあるだろアホ
だから「設定」と書いてあるだろアホ
218デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 11:32:15.16ID:3w2dwJfs0 >>215
状況がよく分からないけど
「使う場所で宣言する」というのは
スコープ毎に纏めていないと言うことだろうか
少なくとも俺が今までやった言語では
そんな流行りは見たことないなぁ
というか見辛いもの
状況がよく分からないけど
「使う場所で宣言する」というのは
スコープ毎に纏めていないと言うことだろうか
少なくとも俺が今までやった言語では
そんな流行りは見たことないなぁ
というか見辛いもの
219デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 11:47:18.41ID:eotEY1L4M >>217
おじいちゃん、もうそのレベルの低い話は終わってるからw
おじいちゃん、もうそのレベルの低い話は終わってるからw
220デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 12:12:36.32ID:zTVPbGTxa221デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 12:44:31.31ID:3w2dwJfs0 >>220
言いたいことはやっと伝わった
では話を戻そう。そのコードを見てどう思った?
変数宣言強制設定して変数宣言書き込まないとエラーが出るようにするのが悪いと思った?
そんな奴がポッとそんなところに変数宣言を書き込んだ奴が悪いと思った?
前者というのであればここで話はもう終わり。
恐らくこれ以上話してもお互い得られるものは何もないと思う。
後者と言うのであれば、変数宣言強制した際に少なくとも変数が宣言されていないことは発覚する。これだけで恩恵があることは理解出来るかな?
その辺にポッと書いてしまったことはそれ自体が問題であり、その人に促せばいいんじゃないかと思うけど?
言いたいことはやっと伝わった
では話を戻そう。そのコードを見てどう思った?
変数宣言強制設定して変数宣言書き込まないとエラーが出るようにするのが悪いと思った?
そんな奴がポッとそんなところに変数宣言を書き込んだ奴が悪いと思った?
前者というのであればここで話はもう終わり。
恐らくこれ以上話してもお互い得られるものは何もないと思う。
後者と言うのであれば、変数宣言強制した際に少なくとも変数が宣言されていないことは発覚する。これだけで恩恵があることは理解出来るかな?
その辺にポッと書いてしまったことはそれ自体が問題であり、その人に促せばいいんじゃないかと思うけど?
222デフォルトの名無しさん (ワッチョイ a910-lFHD)
2021/06/08(火) 12:53:13.82ID:RLQzdArC0 >>219
自分の間違いが顕わになって、反論できないバカ
自分の間違いが顕わになって、反論できないバカ
223デフォルトの名無しさん (ラクッペペ MMde-+uhU)
2021/06/08(火) 12:59:24.76ID:iJBocUpIM くだらないタイプミスで時間を無駄にしたことはありませんか?
224デフォルトの名無しさん (ドコグロ MM72-uNeL)
2021/06/08(火) 13:04:42.37ID:5PCuzcGlM 設定のことを含めた話ということすら読み取れてなかった7vXXが一番レベル低かったな
225デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:09:06.95ID:3w2dwJfs0 >>223
ない・・・と言いたいところだけどどうやっても0にはならんわなw
いつも思うのがOption ExplicitがあるんだからOption Strictも用意しといてくれればいいのにと。
変換に際して暗黙の変換をさせずにどれも明示的な変換を漏らさずさせられるようになれば
テストする際も安心して走らせられるのにって思う。
もっとも、人によっては面倒くさいと思う人が出るんだろうなぁ・・・
ない・・・と言いたいところだけどどうやっても0にはならんわなw
いつも思うのがOption ExplicitがあるんだからOption Strictも用意しといてくれればいいのにと。
変換に際して暗黙の変換をさせずにどれも明示的な変換を漏らさずさせられるようになれば
テストする際も安心して走らせられるのにって思う。
もっとも、人によっては面倒くさいと思う人が出るんだろうなぁ・・・
226デフォルトの名無しさん (ラクッペペ MMde-+uhU)
2021/06/08(火) 13:09:33.83ID:iJBocUpIM >>218
C#でvar使うなら型の確定する現地じゃないとだめじゃね?
C#でvar使うなら型の確定する現地じゃないとだめじゃね?
227デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 13:14:50.72ID:zTVPbGTxa228デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:17:48.89ID:3w2dwJfs0 >>226
そもそも型定義出来る言語であまりvarは使わない。まぁ厳密な書き方しない人は使うんだろうけど。
それにそれもスコープが効いてる頭でやる。
むしろC#のvarはVBAのVariantと違う。
別の内部型を使うことによって違う扱いをするようなことは出来ない。
最初に設定された値により使用する型が確定されるため、一度設定したらその型として定義される。
例外があるとすれば無名型とかレイトバインディングにより型が確定するもの。
そもそも型定義出来る言語であまりvarは使わない。まぁ厳密な書き方しない人は使うんだろうけど。
それにそれもスコープが効いてる頭でやる。
むしろC#のvarはVBAのVariantと違う。
別の内部型を使うことによって違う扱いをするようなことは出来ない。
最初に設定された値により使用する型が確定されるため、一度設定したらその型として定義される。
例外があるとすれば無名型とかレイトバインディングにより型が確定するもの。
229デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:21:07.44ID:3w2dwJfs0230デフォルトの名無しさん (ラクッペペ MMde-+uhU)
2021/06/08(火) 13:22:00.36ID:iJBocUpIM >>228
だからC#では途中で宣言するvarが流行ってますよと
だからC#では途中で宣言するvarが流行ってますよと
231デフォルトの名無しさん (JP 0H39-IO17)
2021/06/08(火) 13:23:01.01ID:gtN4dmk3H VBAの場合、変数は先頭で宣言するのが望ましいとされるけど強制ではない
そして、スコープ内ならどこに書いても効力は同じ
だから使用直前に書くコーディングルールでも動作に支障はない
別人が保守する可能性がある時に、ルールをどう伝えるかが問題になるだけ
コードの先頭にコメントで書いてもいい
参考、「通常、Dim ステートメントをプロシージャの最初に配置します。」
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dim-statement
そして、スコープ内ならどこに書いても効力は同じ
だから使用直前に書くコーディングルールでも動作に支障はない
別人が保守する可能性がある時に、ルールをどう伝えるかが問題になるだけ
コードの先頭にコメントで書いてもいい
参考、「通常、Dim ステートメントをプロシージャの最初に配置します。」
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dim-statement
232デフォルトの名無しさん (JP 0H39-IO17)
2021/06/08(火) 13:26:59.27ID:gtN4dmk3H いちいち先頭に戻って確認するのが面倒と言ってる人がいるけど、ウィンドウが分割できることを知らないのか
あるいはよっぽど狭いモニターでやってるのか
そもそも設計がきちんとできてれば、型も自然と決まってくるんだから確認する必要なんかないだろう
どっちにしろ自己責任で片付く問題でしかない
あるいはよっぽど狭いモニターでやってるのか
そもそも設計がきちんとできてれば、型も自然と決まってくるんだから確認する必要なんかないだろう
どっちにしろ自己責任で片付く問題でしかない
233デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:32:59.72ID:3w2dwJfs0 >>230
流行ってない。
C#やVB.Netの場合はそもそも変数の定義と一緒に値を設定出来るからスコープの頭で定義してvarの場合一緒に型を決める頭を設定する。
そしてスコープも関数単位ではなくIfやCase、For文等の細かいブロックに分かれるからそれが最小単位だ。
もしC#で他の誰かが組んだコードが確認出来るならしてみればいい。
流行ってない。
C#やVB.Netの場合はそもそも変数の定義と一緒に値を設定出来るからスコープの頭で定義してvarの場合一緒に型を決める頭を設定する。
そしてスコープも関数単位ではなくIfやCase、For文等の細かいブロックに分かれるからそれが最小単位だ。
もしC#で他の誰かが組んだコードが確認出来るならしてみればいい。
234デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 13:35:48.75ID:XYNVs0qfM235デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/08(火) 13:36:47.28ID:XYNVs0qfM >>222
終わった話に粘着する爺乙w
終わった話に粘着する爺乙w
236デフォルトの名無しさん (アウアウウー Sa11-Wnv+)
2021/06/08(火) 13:38:33.25ID:zTVPbGTxa >>229
おーけー、じゃあ戻るというか新しい会話だね。
別にどっちも悪くないんじゃない? 少なくともoption付けて悪いってことはないでしょ
可読性の問題については頭にまとめて書くのが当然だとは思ってたし、途中にあったら変だと感じるけど、悪いかは分からん。今日は勉強させて貰った
おーけー、じゃあ戻るというか新しい会話だね。
別にどっちも悪くないんじゃない? 少なくともoption付けて悪いってことはないでしょ
可読性の問題については頭にまとめて書くのが当然だとは思ってたし、途中にあったら変だと感じるけど、悪いかは分からん。今日は勉強させて貰った
237デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:40:15.13ID:3w2dwJfs0 >>232
ウィンドウ分割なんて一つしか出来ない。
ソースを確認するのは有効かも知れないが、そんなんで一々散り散りになった変数の型確認などしていたら大変な手間だ。まだ定義の確認で飛ばした方がマシ
設計どうのと言っているが、そんなコードや型までこと細かく書くことはまずない。
それは設計書ではなくコードそのものをただ日本語の資料におとしたというだけ。コードを見ればいいのだから無駄な作業だ。
ウィンドウ分割なんて一つしか出来ない。
ソースを確認するのは有効かも知れないが、そんなんで一々散り散りになった変数の型確認などしていたら大変な手間だ。まだ定義の確認で飛ばした方がマシ
設計どうのと言っているが、そんなコードや型までこと細かく書くことはまずない。
それは設計書ではなくコードそのものをただ日本語の資料におとしたというだけ。コードを見ればいいのだから無駄な作業だ。
238デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:48:16.57ID:3w2dwJfs0239デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/08(火) 13:55:51.97ID:3w2dwJfs0 >>231
最初に言った
これは可読性の問題だと。
動作に支障がないからと言って関数単位のスコープであればそこだけ確認すれば良いものを
わざわざ大風呂敷広げてそのモジュール単位にする理由が分からない。
最初に言った
これは可読性の問題だと。
動作に支障がないからと言って関数単位のスコープであればそこだけ確認すれば良いものを
わざわざ大風呂敷広げてそのモジュール単位にする理由が分からない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 【テレビ】家入レオ 高校時代は親友なし 唯一の仲間が現在は超人気女優 「ずっとお互いに本を読んで」 [湛然★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 【実況】博衣こよりのえちえち朝活🧪
- 寒すぎてハゲたんやが
- 【悲報】婚活女子(38)「婚活パーティーに行ったら婚活男性の大部分が年収350万円身長165cm未満のコミュ障子供部屋おじさんで絶望してる… [257926174]
- ドドンドドンドンドン!世界一可愛いVtuberは誰だ!
- お前らって彼女がレイプされたら何て声かける?
- 朝からハイエースでカップラーメン食べてるドカタ
