1 名前:デフォルトの名無しさん [2021/05/25(火) 12:48:01.06 ID:mepUVc/i0.net] !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
156 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 15:13:22.89 ID:WJZoQhbE0.net] その変数の問題だと思うんですが、subの中からFunctionをコールして、String型変数を引数で渡しても Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです Public hoge とかしてみても駄目でした
157 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 15:52:47.68 ID:1YH+vaIj0.net] それ自分を呼び出してるだけじゃね
158 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 16:34:01.92 ID:vQVSsWXH0.net] また
159 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:16:44.69 ID:PdUE2wOEH.net] >>155 まずはモジュールの先頭にOption Explisitって書いてみ
160 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:31:48.02 ID:efAmahNiM.net] 値渡しするならCall aaa((hoge))が望ましい っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
161 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 18:21:18.04 ID:pNkKMnVc0.net] VBAだけではないと思うんだけど、コードって使い回すじゃん?切った貼ったの繰り返しで完成後汚えなぁと思うことない? あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
162 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 18:26:33.85 ID:WJZoQhbE0.net] FunctionとSubの違いもよく分かってなかったんですが、Functionの返り値を変数で受けようとした所 そもそも渡したい文字列がFunctionに渡せなくて困ってました 単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので VBAはその辺が厳密なんですかね……?
163 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 18:32:25.23 ID:efAmahNiM.net] 例えばFunctionで返り値をString型が欲しい場合求める場合 Public Function aaa(ByVal hoge)As String ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
164 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 18:35:37.03 ID:efAmahNiM.net] Functionを呼ぶ側は bbb = aaa((hoge)) ってやるんよ 参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
165 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 19:11:37.69 ID:s0YManYn0.net] >>160 コピーして切った貼ったして使うことを使い回しとは言わない どっちにしろ使い回したい部分をモジュールや関数単位に纏めてそれを呼び出せ。 それが使い回しというものだ。
166 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 19:27:28.02 ID:HeHF5+P0d.net] 場合って何よ 具体的に書きなよ
167 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 19:56:36.98 ID:efAmahNiM.net] >>165 参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。 って言えば満足か?
168 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 20:01:57.50 ID:PdUE2wOEH.net] >>164 言うか言わないかは個人の認識の問題
169 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 20:28:43.00 ID:s0YManYn0.net] >>166 うん? それ何か違う気がする 演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出さ
170 名前:黷驫ヨ数の引数の型で許容されるものでは無かったってことじゃないの? 例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの 内部型はIntegerになるから型が合ってエラーにはならない。という状況で、 括弧の話とはあまり関係ない気がするんだけど認識違う? [] [ここ壊れてます]
171 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 20:30:46.16 ID:s0YManYn0.net] 暗黙の変化ってなんだよ暗黙の変換ね
172 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 20:42:48.07 ID:aS7dMAuf0.net] 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)ってやったりすると通るんだがおま環だった?
173 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 20:47:53.29 ID:1YH+vaIj0.net] なにエラー?
174 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 21:00:41.59 ID:qWOh0TID0.net] >>148 やってみた。 やっぱエラーで止まった。 sheet番号がぐちゃぐちゃでもちゃんと動作するような、 クエリーを変数にした記述の仕方があるかもしれないけど、 少なくとも >>140 のやり方では、どうもオートメーションエラーになるみたい。
175 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 21:34:20.79 ID:s0YManYn0.net] >>170 コピーして実行してみたけど まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。 コンパイルした時点でエラーで弾かれたよ。 そこを修正したらエラーが出なくなった。
176 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 22:08:04.98 ID:vQVSsWXH0.net] >>170 ファイル壊れてんじゃね
177 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 22:13:12.19 ID:s0YManYn0.net] 関数やメソッドに括弧が必要なのは確か ・Functionで戻り値を受ける場合 ・Subで頭にCallを付けない場合 じゃなかったっけ? 後、括弧で括らないと順序関係なく 個別に引数を設定することが 出来るんじゃなかったっけか? まぁ自分としては何であれ括弧を付けて Subの場合は頭にCall付けて関数やメソッドが 呼ばれていることを明示する 必要があると思うけど。 あまり引数が多い関数は引数そのものを 抱えるエンティティクラスを作って そのインスタンスを引数で渡してやれば いい気がするしその方が可読性高いよね。
178 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 23:50:30.47 ID:WJZoQhbE0.net] >>162-163 ありがとうございます、値渡しがどうしても上手く行かなかったので試してみます
179 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 10:20:45.70 ID:nhaEx8Ewa.net] 大きな声で言えないけど、おれoption explicit付けたこと無いしグローバルじゃない変数は宣言しないで使ってる。グローバルな変数大好き
180 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 10:24:31.34 ID:La1yJ3oH0.net] え?option explicit付けない人見たことない。。。
181 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 10:27:14.26 ID:nhaEx8Ewa.net] だって俺お前と会ったことねーもん
182 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 10:45:43.81 ID:/bT+ATEvp.net] まーたあわしろいくやの手下のRuby信者か
183 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 10:49:48.00 ID:1dhF/BUe0.net] ゆうてそういうことしないよって人はプログラマとかじゃないんやろ プログラマやってたら不安になると思うし
184 名前:デフォルトの名無しさん [2021/06/07(月) 11:02:15.80 ID:BLDePS2QF.net] >>160 VBAを使わない pythonで外からexcelを操作する pythonのコードはgithubで管理
185 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 11:36:42.90 ID:5JFCMcJv0.net] Ruby に option explicit は無いからな
186 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 11:53:27.33 ID:faCSe2qcM.net] >>178 普通にいるよ 流石にソフトウェア開発者にはいないと思うけどVBAは事務屋さんも作ったりするからそう言う人はそもそもOption Explicit自体を知らなかったりする 知ってて使わない>>177 みたいのは単なるアホ
187 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 12:02:42.50 ID:/bT+ATEvp.net] >>182 Pythonなんか使う意味が分からん
188 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 12:06:17.59 ID:nhaEx8Ewa.net] 俺みたいな事務屋さんは知ってても必要ないんだってば。事務屋さんだから>>184 みたいに大きな声は出さないけど でも流石にRubyの人と同一視するのはやめて。けっこう傷付くし悲しい
189 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 12:39:03.71 ID:/bT+ATEvp.net] 知らないで使わないのはただの無知 知ってて使わないのは悪質なバカ
190 名前:デフォルトの名無しさん [2021/06/07(月) 12:46:48.42 ID:8ILcpsz2M.net] VBAって宣言せずに使ったらローカルになるんだっけ? プロと違って適当にかくから強制ひっすだわ こういうところに書くのは省略しまくるけどな
191 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 13:32:24.67 ID:faCSe2qcM.net] >>160 > あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。 普通にエクスポートすればいいだけじゃねーの?
192 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 19:28:59.24 ID:9yldYH/70.net] >>73 すごい亀レスだが、dispatchEventでなんとかなったわ でもいつできなくなるかドキドキ ieは終わりの圧力に屈しそう
193 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 01:11:20.22 ID:gtN4dmk3H.net] >>186 存在を知ってるのと正しい使い方を知ってるのは別 入力ミスが見つけやすくなるという大きなメリットがあるんだから、使わないのは無知と言われても仕方がない
194 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 02:25:46.24 ID:1f6b7zm30.net] 普通さ、最初に覚えるだろoption explicitは? それらを参考書とかで勉強してこなかった人とかいるのかなと? まあ、どう運用しようがその人の勝手だろうけどさ。
195 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 04:42:23.25 ID:RLQzdArC0.net] option explicitは知ってるが いちいち書かんし設定もせん 宣言は常にやる、それだけ
196 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 05:09:06.45 ID:bCI8JHzDM.net] >>193 いちいち書く? まあその程度のオツムならたいしたコードは書いてないだろうから使わなくてもいいかもねw https://itsakura.com/wp-content/uploads/2017/07/excel-vba-explicit2.png
197 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 08:18:59.91 ID:GIt8+gr30.net] >>193 俺も宣言は他言語同様やるがOptionは気にしないな 下手するとそれがあるせいで変な場所で宣言してる例をよく見る
198 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 08:20:58.32 ID:wrp61arm0.net] Task オブジェクトってなんでWordだけなん?
199 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 09:07:28.17 ID:3w2dwJfs0.net] >>194 自動構文チェックONにしているんだ。 別にどっちがいいって訳じゃないけど俺はOFF派。 コード書いてる最中にどこかのコードコピーして持って来たいときカーソル当てると エラーのメッセージボックスが上がって元の位置に戻されるのが鬱陶しいのと 他の開発で使ってるVisual Studioが元々そんな感じだからそっちに合わせてる。 ただそうするとエラー部分が赤くなるだけでどんなエラーかは表示しないから一長一短。 OFFはパッと見でどんなエラーか分かる人向けでそれ以外の人にはお勧め出来ない。
200 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 09:12:57.77 ID:3w2dwJfs0.net] >>195 Option Explicitの設定してて変な場所で宣言って聞いたことないな。 そんな具合になったコード晒せる?
201 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 09:19:38.53 ID:rnKdyaoGM.net] >>195 > 下手するとそれがあるせいで変な場所で宣言してる例をよく見る 意味わからん、例示してくれ
202 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 09:24:20.65 ID:rnKdyaoGM.net] >>197 > 自動構文チェックONにしているんだ。 まあこれは人によるかな あんたも書いてるようにエラーになった時にいちいちダイアログが表示されて鬱陶しいとは俺も思う
203 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 09:56:53.56 ID:zTVPbGTxa.net] 変な場所って、プロシージャの真ん中あたりに宣言がポッと出てくるやつか? いちいち上に戻って書き足すのがクソダルい気持ちは分かる
204 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:01:13.33 ID:3w2dwJfs0.net] >>201 見たことないなぁ どんな操作をするとそうなるの? そもそも最初に設定しておけば必ずモジュール作ったときに一番上に出てくると思うけど
205 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:10:38.85 ID:zTVPbGTxa.net] 違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
206 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:32:12.38 ID:3w2dwJfs0.net] >>203 Option Explicitとは関係ない話? だったら本題と内容がズレるな。 >違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと これは初心者というか.Net系やJavaとかやってる人に書かせてもそう書くときがある 関数内で定義したVBAのDimとかのスコープが関数単位で効くものでなくて If とか For とかのブロック単位で効くものと勘違いしているらしい。
207 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:36:39.71 ID:zPjYlIziM.net] >>203 使う直前に宣言するって言うのは別に変な流儀じゃないけどな むしろ先頭で宣言しろと言うのは老害の可能性もあるし
208 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:47:13.49 ID:3w2dwJfs0.net] >>205 それは可読性の問題 あくまで俺だったらだけど同一スコープの先頭に書くな。後で変数定義して既に使われてる変数書いてエラーになって「あ」ってなるの嫌だし 一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
209 名前:デフォルトの名無しさん [2021/06/08(火) 10:51:37.03 ID:zTVPbGTxa.net] >>204 いやいやズレてないよ、>>195 がそういう話をしてるんじゃないかって話だったでしょ ありがとう勉強になる…そうか俺老害側か…
210 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:03:04.11 ID:3w2dwJfs0.net] >>207 よく嫁 >俺も宣言は他言語同様やるがOptionは気にしないな >下手するとそれがあるせいで変な場所で宣言してる例をよく見る Optionがあるせいで変な場所に宣言してる例をよく見るって書いてあるだろ? そっちの話はOptionの話と関係ある? 後、宣言する場所に関しては老害とかないから安心していいぞ。何故ならもっと新しい言語のVB.NetやC#でも効くスコープの先頭に書くのが一般的だから。
211 名前:デフォルトの名無しさん [2021/06/08(火) 11:06:06.39 ID:zTVPbGTxa.net] >>208 >>203 option付けたら変数宣言しないとエラー出すじゃないですか
212 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:07:57.69 ID:3w2dwJfs0.net] >>209 Optionつけようがつけまいが 変数宣言するのは基本だと思うけど? してないの?
213 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:09:49.36 ID:GIt8+gr30.net] >>201 まさにそれ
214 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:10:37.61 ID:bCI8JHzDM.net] >>206 別にお前さんに強要するつもりはないから自分の好きな様に書いてくれ ただIDEの使い方位は覚えておいた方がいいんじゃないかな > 一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
215 名前:デフォルトの名無しさん [2021/06/08(火) 11:15:14.30 ID:zTVPbGTxa.net] >>210 俺とお前と>>195 がしてても、それが基本でも、>>195 が良く見るというコードを書く人たちが基本が身についているとは限らないじゃない だから>>203 でわざわざ初心者って言及したんですってば
216 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:16:08.53 ID:3w2dwJfs0.net] >>212 Visual Studio辺りであればカーソル合わせると 定義した型が表示されるから分かるが VBAの場合は一々「型の定義」でそこまで 飛ばないといけないし、何度か最寄りの型まで 調べると元の位置に戻ってくるのも 面倒だと思ってるんだけど認識違う? 違うんならそのIDEの使い方とやらを 提示して頂けると有り難いんだけどな
217 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:20:57.88 ID:Bz/vS+dRM.net] 変数の宣言って頭でまとめて宣言するより使う場所で宣言するのが今の主流だった気がするけどウチの会社だけなんかな
218 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:24:56.38 ID:3w2dwJfs0.net] >>213 よく分からないな 初心者だから変数定義をしていないといいつつ 変数定義しているところがポッと出てくるという。 変数定義してたりしてなかったりというのであれば もうそういう次元の話ではなくなってくる。
219 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:25:51.75 ID:RLQzdArC0.net] >>194 だから「設定」と書いてあるだろアホ
220 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:32:15.16 ID:3w2dwJfs0.net] >>215 状況がよく分からないけど 「使う場所で宣言する」というのは スコープ毎に纏めていないと言うことだろうか 少なくとも俺が今までやった言語では そんな流行りは見たことないなぁ というか見辛いもの
221 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:47:18.41 ID:eotEY1L4M.net] >>217 おじいちゃん、もうそのレベルの低い話は終わってるからw
222 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 12:12:36.32 ID:zTVPbGTxa.net] >>211 ごめん >>216 してないとは言ってないよ。option付けたら必ずさせられるじゃん。してたりしてなかったりにはなり得ない 初心者だから変数定義を最初に必ずするクセがついていないんじゃないかって話です vba不慣れな人が宣言してない変数を使おうとして、実行時にoptionどおりエラーを言い渡され、慌ててエラー箇所の直前に変数宣言をぶち込む。その結果コードの真ん中に変数宣言がポッと出てくるやつになるんじゃないかってこと
223 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 12:44:31.31 ID:3w2dwJfs0.net] >>220 言いたいことはやっと伝わった では話を戻そう。そのコードを見てどう思った? 変数宣言強制設定して変数宣言書き込まないとエラーが出るようにするのが悪いと思った? そんな奴がポッとそんなところに変数宣言を書き込んだ奴が悪いと思った? 前者というのであればここで話はもう終わり。 恐らくこれ以上話してもお互い得られるものは何もないと思う。 後者と言うのであれば、変数宣言強制した際に少なくとも変数が宣言されていないことは発覚する。これだけで恩恵があることは理解出来るかな? その辺にポッと書いてしまったことはそれ自体が問題であり、その人に促せばいいんじゃないかと思うけど?
224 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 12:53:13.82 ID:RLQzdArC0.net] >>219 自分の間違いが顕わになって、反論できないバカ
225 名前:デフォルトの名無しさん [2021/06/08(火) 12:59:24.76 ID:iJBocUpIM.net] くだらないタイプミスで時間を無駄にしたことはありませんか?
226 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:04:42.37 ID:5PCuzcGlM.net] 設定のことを含めた話ということすら読み取れてなかった7vXXが一番レベル低かったな
227 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:09:06.95 ID:3w2dwJfs0.net] >>223 ない・・・と言いたいところだけどどうやっても0にはならんわなw いつも思うのがOption ExplicitがあるんだからOption Strictも用意しといてくれればいいのにと。 変換に際して暗黙の変換をさせずにどれも明示的な変換を漏らさずさせられるようになれば テストする際も安心して走らせられるのにって思う。 もっとも、人によっては面倒くさいと思う人が出るんだろうなぁ・・・
228 名前:デフォルトの名無しさん [2021/06/08(火) 13:09:33.83 ID:iJBocUpIM.net] >>218 C#でvar使うなら型の確定する現地じゃないとだめじゃね?
229 名前:デフォルトの名無しさん [2021/06/08(火) 13:14:50.72 ID:zTVPbGTxa.net] >>221 確認だけど、俺はそのコード見てないし、見てない以上何とも思ってないぞ。俺は>195氏じゃない >>201 >>203 は>195の言うコードを予想したものだということを踏まえて、それでも話を続ける?
230 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:17:48.89 ID:3w2dwJfs0.net] >>226 そもそも型定義出来る言語であまりvarは使わない。まぁ厳密な書き方しない人は使うんだろうけど。 それにそれもスコープが効いてる頭でやる。 むしろC#のvarはVBAのVariantと違う。 別の内部型を使うことによって違う扱いをするようなことは出来ない。 最初に設定された値により使用する型が確定されるため、一度設定したらその型として定義される。 例外があるとすれば無名型とかレイトバインディングにより型が確定するもの。
231 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:21:07.44 ID:3w2dwJfs0.net] >>227 では「見た」と言うのを「予測した」というのに置き換えて考えればいい。 そう言ったコードをどう判断するか、と言うことにかわりはない。
232 名前:デフォルトの名無しさん [2021/06/08(火) 13:22:00.36 ID:iJBocUpIM.net] >>228 だからC#では途中で宣言するvarが流行ってますよと
233 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:23:01.01 ID:gtN4dmk3H.net] VBAの場合、変数は先頭で宣言するのが望ましいとされるけど強制ではない そして、スコープ内ならどこに書いても効力は同じ だから使用直前に書くコーディングルールでも動作に支障はない 別人が保守する可能性がある時に、ルールをどう伝えるかが問題になるだけ コードの先頭にコメントで書いてもいい 参考、「通常、Dim ステートメントをプロシージャの最初に配置します。」 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dim-statement
234 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:26:59.27 ID:gtN4dmk3H.net] いちいち先頭に戻って確認するのが面倒と言ってる人がいるけど、ウィンドウが分割できることを知らないのか あるいはよっぽど狭いモニターでやってるのか そもそも設計がきちんとできてれば、型も自然と決まってくるんだから確認する必要なんかないだろう どっちにしろ自己責任で片付く問題でしかない
235 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:32:59.72 ID:3w2dwJfs0.net] >>230 流行ってない。 C#やVB.Netの場合はそもそも変数の定義と一緒に値を設定出来るからスコープの頭で定義してvarの場合一緒に型を決める頭を設定する。 そしてスコープも関数単位ではなくIfやCase、For文等の細かいブロックに分かれるからそれが最小単位だ。 もしC#で他の誰かが組んだコードが確認出来るならしてみればいい。
236 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:35:48.75 ID:XYNVs0qfM.net] >>214 そんなに型知りたいときある? あとそれ先頭で宣言しても似たようなもんじゃね?
237 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:36:47.28 ID:XYNVs0qfM.net] >>222 終わった話に粘着する爺乙w
238 名前:デフォルトの名無しさん [2021/06/08(火) 13:38:33.25 ID:zTVPbGTxa.net] >>229 おーけー、じゃあ戻るというか新しい会話だね。 別にどっちも悪くないんじゃない? 少なくともoption付けて悪いってことはないでしょ 可読性の問題については頭にまとめて書くのが当然だとは思ってたし、途中にあったら変だと感じるけど、悪いかは分からん。今日は勉強させて貰った
239 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:40:15.13 ID:3w2dwJfs0.net] >>232 ウィンドウ分割なんて一つしか出来ない。 ソースを確認するのは有効かも知れないが、そんなんで一々散り散りになった変数の型確認などしていたら大変な手間だ。まだ定義の確認で飛ばした方がマシ 設計どうのと言っているが、そんなコードや型までこと細かく書くことはまずない。 それは設計書ではなくコードそのものをただ日本語の資料におとしたというだけ。コードを見ればいいのだから無駄な作業だ。
240 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:48:16.57 ID:3w2dwJfs0.net] >>234 何か沢山の人とやり取りしてると話がごっちゃになって・・・すまんな。 俺は使うスコープの先頭に書く派だけど、そっちは何の先頭と言ってるのだろうか。 話はそれによりけりかな。
241 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 13:55:51.97 ID:3w2dwJfs0.net] >>231 最初に言った これは可読性の問題だと。 動作に支障がないからと言って関数単位のスコープであればそこだけ確認すれば良いものを わざわざ大風呂敷広げてそのモジュール単位にする理由が分からない。
242 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:04:14.95 ID:3w2dwJfs0.net] >>236 とりあえずそこまででも理解して頂ければこちらとしても嬉しいし有り難い。
243 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:06:51.56 ID:xXU8pzBkM.net] >>238 >>201 からの流れだからSub/Functionの先頭でしょ
244 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:10:03.51 ID:3w2dwJfs0.net] >>241 なるほど、ありがとう。 それなら基本俺も最初からそう言ってるしそれでいいと思う。 モジュール単位で使う必要のあるものはモジュールの頭で書けばいいしね。
245 名前:デフォルトの名無しさん [2021/06/08(火) 14:14:48.37 ID:zTVPbGTxa.net] >>240 なんかほんと、ごめん。色々ありがとう
246 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:16:57.43 ID:3w2dwJfs0.net] >>243 いえいえ、楽しかったよ
247 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:36:31.75 ID:ECc03QiG0.net] ちゃんと教科書通りにやれ! と怒鳴られたらどうする?
248 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:52:20.28 ID:3w2dwJfs0.net] 後、varで思い出したけど、これは余談になるんだけど、以前ExcelでPythonが使えるようになるかも知れないって話があって、結局のところ塩漬けになってしまったから残念ではあるけれど つい五月の終わり辺りにExcel webが解放されたね。 使用言語はJavascript、Webのものだから今後HTML、CSS、クライアントやWebサーバー、IISや場合によってはJqueryやDBサーバーの知識が必要になる可能性がある。 いや、お客さんやエンドユーザーさんが「Webで確認したいなぁ」とか言い出しそうな人がいたら要注意だ。 まだどのような影響があるかは分からないけど、場合によってはおじいちゃんでその辺の理解がないと淘汰される可能性があるかも、とだけ言っておこう。 https://www.google.co.jp/amp/s/forest.watch.impress.co.jp/docs/news/1328/019/amp.index.html
249 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 16:03:42.43 ID:aRPmnT2Sd.net] >>140 wsとqをどういう風に設定しているのか確認しました?
250 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 16:44:43.77 ID:ZMLG7Zjy0.net] google apps scriptみたいなもんか
251 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 16:59:48.28 ID:3w2dwJfs0.net] >>248 まさにそんな感じだろうとは思ってる。 ただ、IEには対応していないと書いてあるので Edgeでは動くだろうけどchromeだとどうか・・・ すまん、ウチに入れてるOfficeは365だけど企業用ではないから確認出来んのよ。
252 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 17:49:08.47 ID:3w2dwJfs0.net] まぁVBAは今までの資産があるし、今こんな話をするのは早すぎかも知れないけど、この機能を使おうとした場合、大きなお金持ちの会社になると 「じゃーボタン押したらDBの内容表示させようかー」とか軽くお客さんが言い出す可能性もある。 SQLはそのまま使えるけど、ビジネスロジックの部分はどうしようか、とか 「じゃー他のシステムと統合しようかー」とかになったら、上手くそのシステム作成の話に乗れればいいけど、そうでなければお払い箱になる可能性もある。 WebのビジネスロジックにVBAは使えないから他の言語も勉強しなければならない。 これは他のWebの言語やってるところも他人事じゃなくて「じゃー画面はEDGEでEXCELで表示してねー、ダウンロードはいやよー、編集して反映させたいからー」 なんて言われた日にゃUIをこれにしなくてはいけない。 今すぐと言うわけではないし、そうならないことも考えられるけど、ひょっとするとこれからEXCELというものは今までのものと そういう方向性のものを含めてEXCELと呼ばれることになるかも知れないということ。 まぁ今は聞き流して貰って大丈夫だよ。 ただ、そう言う話があるということだけ心の片隅に置いといて貰えれば。
253 名前:デフォルトの名無しさん [2021/06/08(火) 18:03:14.64 ID:NOm8RE2hM.net] 5分でかけるスクリプトに仕様書やらテストやら乗っけて おいくら万円で売りつけるサービス業者のピンチですか?
254 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 18:07:44.94 ID:3w2dwJfs0.net] >>251 ピンチになるかどうかはまだ分からないけどそんな可能性もあると言うこと それにそう時世が動いたとしてピンチになるかはその人次第。
255 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 18:14:42.27 ID:Yg8CMFGOM.net] VBAやってる人は、不安なら他の本格的なプログラミング言語に手を出す前に今時のWebベースのノーコード開発を習得したほうがいいと思うよ VBAできる程度の頭があるなら難しくはないだろうし、ヘタにスクラッチで作るより遥かにまともなものができる
256 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 18:20:22.16 ID:3w2dwJfs0.net] 恐らくこれに対応しろと言われて一番困るのはMicrosoftのOS使ってないところ。 lMicrosoftであれば.Net freamWorkでそのようなライブラリをすぐ揃えてくれるだろうけど そうでなければオープンソースのものは誰かが作ってくれるのを待つか自分でライブラリを作るしかない。 そしてMicrosoftはそれが内部でどう作られているのか教えてくれる気は更々ない。誰かの解析待ち。