!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part73
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 4668-xJJl)
2021/09/13(月) 07:29:59.47ID:GNx0xRRz0312デフォルトの名無しさん (アウアウキー Sa87-Kp1k)
2021/10/05(火) 15:45:39.37ID:dJ3N05Swa 補足ながら>>311はMPもマルチページとして宣言するか該当箇所をMP.Pages("D3").Name = "X3"に書き換えれば期待通り動くんですよね
どういう仕組みなのか
どういう仕組みなのか
313デフォルトの名無しさん (オッペケ Sr47-Ug22)
2021/10/05(火) 15:56:25.07ID:hS5WuwV9r worksheetfunctionの引数に配列入れるときって数に上限があるな
警告も出さないしほんまクソ
警告も出さないしほんまクソ
314デフォルトの名無しさん (オッペケ Sr47-PY+R)
2021/10/05(火) 15:56:31.46ID:hS5WuwV9r worksheetfunctionの引数に配列入れるときって数に上限があるな
警告も出さないしほんまクソ
警告も出さないしほんまクソ
315デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/05(火) 16:15:51.73ID:2oqKIsmm0316デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/05(火) 16:19:44.73ID:2oqKIsmm0 あ、でもこっちはOption Explicit 付けてたから
MPはキチンと型宣言してたな。
でもそこはあまり関係ないよね?
MPはキチンと型宣言してたな。
でもそこはあまり関係ないよね?
317デフォルトの名無しさん (アウアウキー Sa87-Kp1k)
2021/10/05(火) 16:21:29.24ID:dJ3N05Swa318デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/05(火) 16:29:34.84ID:2oqKIsmm0319デフォルトの名無しさん (アウアウキー Sa87-Kp1k)
2021/10/05(火) 16:32:02.05ID:dJ3N05Swa variant/object/multipageでした
320デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/05(火) 16:36:45.31ID:2oqKIsmm0321デフォルトの名無しさん (アウアウキー Sa87-Kp1k)
2021/10/05(火) 16:39:04.47ID:dJ3N05Swa そうですね、とりあえず急ぎとか困りではないので一旦これで…
ご回答ありがとうございました
ご回答ありがとうございました
322デフォルトの名無しさん (ブーイモ MM1f-Ig7M)
2021/10/05(火) 18:26:27.16ID:jAVyPZWcM 型推論するのに失敗してるんじゃね
323デフォルトの名無しさん (ワッチョイ b32f-slNU)
2021/10/05(火) 21:37:47.06ID:LdUtAYwX0 Pagesの引数に変数渡すと数字として解釈しようとしてるっぽいな
buf = "2" とかにするとIndex=2のページを参照してるようだ
文字列リテラルならちゃんと名称として解釈してるっぽい
ちな365の64ビット
これ以上はサポートにでも問い合わせるしかねぇんじゃね
buf = "2" とかにするとIndex=2のページを参照してるようだ
文字列リテラルならちゃんと名称として解釈してるっぽい
ちな365の64ビット
これ以上はサポートにでも問い合わせるしかねぇんじゃね
324デフォルトの名無しさん (アウアウウー Sa27-4HLA)
2021/10/07(木) 18:28:58.89ID:p9itA/YXa マクロの記録機能使ってマクロの作成したいんだがピボットテーブルのプルダウンから任意の値だけを抜き出すのってどうやってやればいいの?
毎回モジュール見直すとvisible farceになってて要するに抜き出したいもの以外を表示しないようにしてる構文て事だよね?
こうなると仮に次回このマクロを使う時にvisible farceになってない値が新しく出てくるとそれも表示されちゃうって事だよね?
じゃなくていくら値が増えても決められた値だけを抜き出すように作りたいんだ
どなたか教えて下さい
毎回モジュール見直すとvisible farceになってて要するに抜き出したいもの以外を表示しないようにしてる構文て事だよね?
こうなると仮に次回このマクロを使う時にvisible farceになってない値が新しく出てくるとそれも表示されちゃうって事だよね?
じゃなくていくら値が増えても決められた値だけを抜き出すように作りたいんだ
どなたか教えて下さい
325デフォルトの名無しさん (ワッチョイ c310-eIP4)
2021/10/07(木) 20:11:24.24ID:70iiidwq0 >>324
記録してみてどうなってるか見てみれば分かるじゃん
記録してみてどうなってるか見てみれば分かるじゃん
326デフォルトの名無しさん (ワッチョイ f35f-1D0T)
2021/10/07(木) 21:05:39.19ID:D5dO/oMJ0327デフォルトの名無しさん (ワッチョイ 435f-nDZW)
2021/10/07(木) 21:29:48.70ID:AykPZAFh0 ActiveSheet.PivotTables("ぴぼっとてーぶる").PivotFields("ふぃーるど").ClearAllFilters
ActiveSheet.PivotTables("ぴぼっとてーぶる").PivotFields("ふぃーるど").PivotFilters.Add Type:=xlCaptionEquals, Value1:="表示したいもの"
ActiveSheet.PivotTables("ぴぼっとてーぶる").PivotFields("ふぃーるど").PivotFilters.Add Type:=xlCaptionEquals, Value1:="表示したいもの"
328デフォルトの名無しさん (ワッチョイ e301-RzFA)
2021/10/07(木) 23:55:42.12ID:P9pCLiyt0 VBAで最適化したら仕事増やされた話ってよく聞くけど
そいつが辞めたらそいつに回されてた膨大な仕事はどうなるん
そいつが辞めたらそいつに回されてた膨大な仕事はどうなるん
329デフォルトの名無しさん (アウアウキー Sacb-h0Ad)
2021/10/08(金) 00:17:45.54ID:sJT5Ti/qa うちの職場は適当にvbaでつくったやつをちゃんとしたアプリに置き換えてるよ
330デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/08(金) 00:31:33.80ID:GXvDbP/z0 アプリだろうがvbaだろうが作った人間がやめたらメンテできなくて終わるんじゃないの
開発者が大勢いるようなレアな職場ならともかく
vba使ってるところなんてたいてい事務で
エクセル職人が少数いるだけだろ
開発者が大勢いるようなレアな職場ならともかく
vba使ってるところなんてたいてい事務で
エクセル職人が少数いるだけだろ
331デフォルトの名無しさん (テテンテンテン MM86-Rkqs)
2021/10/08(金) 00:37:30.31ID:d3eTt0zpM 実際にはそういうときには業務そのものが消滅するケースも多いよ
そもそもVBAで簡単に自動化できるような業務はもともと無意味であるものが多いからな
そもそもVBAで簡単に自動化できるような業務はもともと無意味であるものが多いからな
332デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/08(金) 02:32:08.41ID:KEaimES90 人がやめた後に職場がどうなるかはその職場の責任者が決めるんじゃね
下っ端が気にすることじゃない
下っ端が気にすることじゃない
333デフォルトの名無しさん (スフッ Sdea-JSxF)
2021/10/08(金) 04:11:36.40ID:vcejz6/Ud 市販アプリでも、天才的な開発者が辞めて、会社もろともアプリもダメになって終わったパターンをいくつも見てきた
334デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/08(金) 07:11:46.26ID:GXvDbP/z0335デフォルトの名無しさん (アウアウウー Sa2f-YkK2)
2021/10/08(金) 08:09:49.53ID:Am1Ugnvua336デフォルトの名無しさん (ワッチョイ 8a05-GJBa)
2021/10/08(金) 09:40:27.58ID:JQJjKarL0 CPU使用率が大きかったのでダメもとで開いて修復を実行したら
かなり軽くなるのな、知らんかった
これ定期的にやったほうがいいのか?
VBAのコードを一旦退避させるのが面倒だが...
かなり軽くなるのな、知らんかった
これ定期的にやったほうがいいのか?
VBAのコードを一旦退避させるのが面倒だが...
337デフォルトの名無しさん (ワッチョイ 5f2f-GJBa)
2021/10/08(金) 17:00:42.44ID:EVmjGNOc0 >>336
詳しく
詳しく
338デフォルトの名無しさん (ワッチョイ de10-J+i2)
2021/10/08(金) 22:11:41.59ID:x7uCSItJ0 属人的にならない仕組みで効率化できればいいんだが、頭の中が古き良きな方々が幅を利かせる日本ではなかなか難しい
339デフォルトの名無しさん (ワッチョイ b301-A6QN)
2021/10/09(土) 01:49:50.17ID:98oBjVW70 自分が初めてVBAを使って解決した時点で、他にVBAを使う人がいないんだから属人化しないわけがないと思うけどな
しかもVBAってプログラミング言語の中では非常に初心者向けなわけで、
誰もVBAで組めない=プログラミングに全員疎いのはほぼ決定なんだから尚更さ
VBAを共通知識にしたいっていうのは、
最初にプログラミングっていう一般的には取っ付き難い物に興味を持たせるっていう途轍もなく大きなハードルを超える必要があって、
それは「興味がある生徒に教える」プログラミング講師以上に難しいと思う
相当な根気が必要だと思うよ
しかもVBAってプログラミング言語の中では非常に初心者向けなわけで、
誰もVBAで組めない=プログラミングに全員疎いのはほぼ決定なんだから尚更さ
VBAを共通知識にしたいっていうのは、
最初にプログラミングっていう一般的には取っ付き難い物に興味を持たせるっていう途轍もなく大きなハードルを超える必要があって、
それは「興味がある生徒に教える」プログラミング講師以上に難しいと思う
相当な根気が必要だと思うよ
340デフォルトの名無しさん (ワッチョイ 5f2f-GJBa)
2021/10/09(土) 02:16:01.12ID:2HXwYm4Z0 そもそも人に仕事が割り振られた段階で属人化されてるわけで
たんに次の人が困って終わりだよ
たんに次の人が困って終わりだよ
341デフォルトの名無しさん (ワッチョイ b301-A6QN)
2021/10/09(土) 02:30:43.66ID:98oBjVW70 確かに。
レス漁ってみたが、
ここでいう「属人化で困る」は「他の人にはできないVBAというテクニックを持つオレスゲー」を単にオブラートに包んだだけっぽい感じがするな
レス漁ってみたが、
ここでいう「属人化で困る」は「他の人にはできないVBAというテクニックを持つオレスゲー」を単にオブラートに包んだだけっぽい感じがするな
342デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 02:49:32.47ID:0Qsp0NFP0 マクロの効率化ガン無視で社員の手が開いた分だけ仕事を割り振る上司がいるらしいけど
その時点である意味属人化してるよね
その仕事引き継ぐやつ
まずさばき切れないだろ
その時点である意味属人化してるよね
その仕事引き継ぐやつ
まずさばき切れないだろ
343デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/09(土) 04:49:21.33ID:UCXjyRPA0 うちの職場ではほとんどの人がマクロできるけど、新人に自信持たせるためにわざわざ気を使って
「君マクロできるなんて凄いね〜」っておだててるのに同調するのが正直めんどくさい
「君マクロできるなんて凄いね〜」っておだててるのに同調するのが正直めんどくさい
344デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 04:50:24.64ID:0Qsp0NFP0 そういうとこは給料高そうで羨ましい
345デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/09(土) 05:01:41.26ID:UCXjyRPA0 >>344
給料は個人の能力に比例します
給料は個人の能力に比例します
346デフォルトの名無しさん (スプッッ Sd02-JSxF)
2021/10/09(土) 08:10:48.77ID:KDe6uexsd 新人の育成は面倒だけど将来的に必要なことだからなあ
褒めた方が上達が早いってのも科学的に証明されつつあるし、そういうもんだからあきらめろ
褒めた方が上達が早いってのも科学的に証明されつつあるし、そういうもんだからあきらめろ
347デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 08:19:40.75ID:0Qsp0NFP0 全員VBAできるとか絶対給料高いとこだろ
うちのところなんて一人しかいないよ
しかも残りは関数すらまともにあつない
うちのところなんて一人しかいないよ
しかも残りは関数すらまともにあつない
348デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 08:21:07.29ID:0Qsp0NFP0 おかげで効率がすげー悪い
基本は専用ソフト扱うからエクセルは必須ではないとはいえ
それでもエクセルやVBAやれるのとやれないのとでは効率が雲泥の差
基本は専用ソフト扱うからエクセルは必須ではないとはいえ
それでもエクセルやVBAやれるのとやれないのとでは効率が雲泥の差
349デフォルトの名無しさん (ラクッペペ MM86-65Sl)
2021/10/09(土) 08:31:06.39ID:HlWFX8NcM 選民思想ここに極まれり
350デフォルトの名無しさん (ワッチョイ 1bda-JSxF)
2021/10/09(土) 08:33:14.89ID:qDyUb0P50 研修とか外部の自宅学習プログラムでもやったら?
費用は会社持ち、報奨金も少しは付けて
費用は会社持ち、報奨金も少しは付けて
351デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 08:37:41.66ID:0Qsp0NFP0 そんな金あったら給料上げてレベルの高い人材雇うか
もうちょっとマシな専用ソフト使ってる
金をケチったせいでオンボロ専用ソフト使わせれて
専用ソフトじゃフォローしきれないのでエクセル活用しないと行けない羽目になってる
もうちょっとマシな専用ソフト使ってる
金をケチったせいでオンボロ専用ソフト使わせれて
専用ソフトじゃフォローしきれないのでエクセル活用しないと行けない羽目になってる
352デフォルトの名無しさん (スフッ Sdea-JSxF)
2021/10/09(土) 08:57:09.18ID:g5OHjBNSd 会社は社員に楽させたいと思ってるわけじゃない、という大前提
人材なんて時間いっぱい、めいっぱい働かせてナンボ
安いアプリを買って、あとは社員にやらせて、それで回ってるなら何も問題ないんだよ
人材なんて時間いっぱい、めいっぱい働かせてナンボ
安いアプリを買って、あとは社員にやらせて、それで回ってるなら何も問題ないんだよ
353デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 09:27:27.16ID:0Qsp0NFP0 高い金出して高価な専用ソフト使うくらいなら
多少残業代だしてもいいからボロソフト使ったほうが安上がりだからな
多少残業代だしてもいいからボロソフト使ったほうが安上がりだからな
354デフォルトの名無しさん (ワッチョイ 4a42-sdlf)
2021/10/09(土) 09:42:15.79ID:58+qPlR+0 エクセルはマス目状に文章を入力できるソフトぐらいにしか思ってない人もいるしなあ
355デフォルトの名無しさん (スププ Sdea-J+i2)
2021/10/09(土) 15:35:55.10ID:8vFa8kgUd356デフォルトの名無しさん (アウアウエー Sac2-U6Q3)
2021/10/09(土) 20:10:49.92ID:J89rndhPa セル結合せずにせめて広げろや、とは思う
357デフォルトの名無しさん (ブーイモ MM86-ir1/)
2021/10/09(土) 20:26:49.65ID:XLSjDb/pM セル結合とvlookupをディスってようやくエクセル使いとして一人前
358デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 20:30:33.16ID:0Qsp0NFP0 べつにvlookupは悪くないだろ俺は使いたくないけど
359デフォルトの名無しさん (ブーイモ MM4f-ir1/)
2021/10/09(土) 20:58:23.98ID:ZXG2HktNM >俺は使いたくないけど
さりげないアピール
さりげないアピール
360デフォルトの名無しさん (ブーイモ MM4f-ir1/)
2021/10/09(土) 20:59:19.46ID:ZXG2HktNM >俺は使いたくないけど
さりげなさを装ったアピール
さりげなさを装ったアピール
361デフォルトの名無しさん (ドコグロ MMdf-sB7P)
2021/10/09(土) 21:05:39.47ID:LYlfiTybM VLOOKUPディスってるのは情弱だろ
2016からめっちゃ高速化されてるから数万行ぐらいなら普通に使える
2016からめっちゃ高速化されてるから数万行ぐらいなら普通に使える
362デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/09(土) 21:11:18.66ID:0Qsp0NFP0 高速化とかどうでも良い
左端しかデータが使えないのが不便
無駄な検索用データが全部左端に固まる
左端しかデータが使えないのが不便
無駄な検索用データが全部左端に固まる
363デフォルトの名無しさん (ササクッテロレ Sp03-+BSw)
2021/10/10(日) 06:43:03.77ID:LB6rENWtp 個人的に使いたい使いたくないは仕方がない
適材適所で最適解を出す手段に自ら縛りを掛けているだけだから
それで他の人に迷惑掛けている訳でなければとやかく言う筋合いでも無いしな
適材適所で最適解を出す手段に自ら縛りを掛けているだけだから
それで他の人に迷惑掛けている訳でなければとやかく言う筋合いでも無いしな
364デフォルトの名無しさん (ドコグロ MMdf-sB7P)
2021/10/10(日) 08:15:02.57ID:AQQzB40DM365デフォルトの名無しさん (ワッチョイ 9e68-JSxF)
2021/10/10(日) 10:34:27.64ID:iKRuQHQv0 index matchでええやん
366デフォルトの名無しさん (ブーイモ MM4f-Wbmm)
2021/10/10(日) 15:09:30.75ID:2USb7I2AM MATCHはいちいちIFERROR組み込まなきゃいけないから式が冗長になりがちであんまり好きくない
367デフォルトの名無しさん (スフッ Sdea-JSxF)
2021/10/10(日) 15:39:33.06ID:wqZqaK12d そもそもスピードは求めてない
元データを1日に何回もアップデートするわけじゃないし
元データを1日に何回もアップデートするわけじゃないし
368デフォルトの名無しさん (ワッチョイ 9e68-JSxF)
2021/10/10(日) 15:46:10.06ID:iKRuQHQv0 >>366は何使ってんの?
369デフォルトの名無しさん (ブーイモ MM4f-Wbmm)
2021/10/10(日) 16:04:08.10ID:2USb7I2AM >>368
あんまり関数でデータベース検索かけたくないけどかけなきゃいけないならXLOOKUP、自分以外が使う可能性があるならVLOOKUPかHLOOKUPかなぁ
状況に合わないならMATCHも使うけど使用優先度は低め
VBAにやらせる時も中に確実に存在する場合でなければRange型にFind使って放り込む事が多いかも
Is Nothingで見つからない場合でも処理が止まらずに弾けるし
あんまり関数でデータベース検索かけたくないけどかけなきゃいけないならXLOOKUP、自分以外が使う可能性があるならVLOOKUPかHLOOKUPかなぁ
状況に合わないならMATCHも使うけど使用優先度は低め
VBAにやらせる時も中に確実に存在する場合でなければRange型にFind使って放り込む事が多いかも
Is Nothingで見つからない場合でも処理が止まらずに弾けるし
370デフォルトの名無しさん (ワッチョイ 9e68-JSxF)
2021/10/10(日) 16:23:38.63ID:iKRuQHQv0371デフォルトの名無しさん (ドコグロ MMdf-sB7P)
2021/10/10(日) 16:30:18.62ID:6uQRu7X1M372デフォルトの名無しさん (ワッチョイ 67da-JSxF)
2021/10/10(日) 16:51:12.87ID:JSJMRLhD0 ある行を内容の変更は自由にできるけど削除できないようにすることはできますか?
373デフォルトの名無しさん (ワッチョイ cb01-VEx9)
2021/10/10(日) 17:26:53.27ID:rp73utgy0 それ、ここでする質問?
374デフォルトの名無しさん (ワッチョイ 0668-Mxyx)
2021/10/10(日) 17:53:50.05ID:19DRUExW0375デフォルトの名無しさん (ワッチョイ 0310-1otZ)
2021/10/10(日) 18:04:32.90ID:u+pPz2Uo0 ゴミみたいな回答ばかり
376デフォルトの名無しさん (ワッチョイ 9eda-h0Ad)
2021/10/10(日) 19:05:42.11ID:eL4HRu610 じゃあ、ゴミじゃない回答よろ
377デフォルトの名無しさん (ワッチョイ 03d0-Oubo)
2021/10/10(日) 19:35:34.55ID:rFwRYXWV0 「削除できないように」というのが:
・「セルや行の削除をできないようにしたい」→シートの保護で対処
・「値の変更はできるが消去(空欄に)できないようにしたい」→入力規則で対処
・「セルや行の削除をできないようにしたい」→シートの保護で対処
・「値の変更はできるが消去(空欄に)できないようにしたい」→入力規則で対処
378デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/10(日) 20:12:04.54ID:eL4HRu610 対処の方法がわからないのかと思ったら、対処する方法があるのかどうかの質問だったのかw
379372 (ワッチョイ 67da-JSxF)
2021/10/11(月) 00:26:21.39ID:Z2LLk70Q0380デフォルトの名無しさん (ワッチョイ 635f-hK1x)
2021/10/11(月) 14:09:59.80ID:7nZn8gcC0381デフォルトの名無しさん (ワッチョイ 67da-jfFw)
2021/10/11(月) 14:59:32.76ID:Z2LLk70Q0382デフォルトの名無しさん (アウアウクー MM43-tvk4)
2021/10/11(月) 18:57:29.54ID:nQqo0+vnM 空白に編集する場合とかどう取り扱うつもりなんだろう
383デフォルトの名無しさん (ワッチョイ de10-J+i2)
2021/10/11(月) 20:49:58.25ID:SLAXBehE0 クビか配置転換したほうがよいかと
384デフォルトの名無しさん (ワッチョイ 0b8e-o/se)
2021/10/11(月) 21:18:23.92ID:oro4FUng0 馬鹿でもある程度作れてしまうからダメなんだよな
385デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/12(火) 18:51:44.09ID:F8L1eENx0 それを求める環境が悪い
386デフォルトの名無しさん (ワッチョイ 9eda-JSxF)
2021/10/14(木) 18:44:35.26ID:FbYeSmKT0 空白は削除じゃないんじゃね
387デフォルトの名無しさん (オッペケ Sr03-iuVz)
2021/10/14(木) 19:05:30.78ID:DEjpZ/5cr メーカー開発設計だけど実験データ処理とかで
なれないながら頑張ってvba使ってるけど
試行錯誤で調べながらだからあんまりシート使ってるときと比べて効率化できてる気がしない…
でもシートでチマチマするよりは知的労働してる気がするし
いつかのペイオフを期待するわ
なれないながら頑張ってvba使ってるけど
試行錯誤で調べながらだからあんまりシート使ってるときと比べて効率化できてる気がしない…
でもシートでチマチマするよりは知的労働してる気がするし
いつかのペイオフを期待するわ
388デフォルトの名無しさん (ワッチョイ 0310-1otZ)
2021/10/14(木) 20:42:17.77ID:BHqqoV+20 あるレベルを超えると突然やりたいことはこうやりゃいいじゃんってなってバリバリ書けるようになる
389デフォルトの名無しさん (ワッチョイ 0668-Mxyx)
2021/10/14(木) 22:26:04.22ID:FxTzsGq40 set覚えてオブジェクトの概念覚えてイベントを理解してしばらくするとほぼ全ての場面で対応できるようになる
390デフォルトの名無しさん (ワッチョイ 6b01-18WC)
2021/10/15(金) 06:17:54.01ID:YCIon6in0 色々覚えて余計な知識が付いてきて、
これはもっと綺麗に書けるんじゃないか?っていう欲が出て進まなくなる事が増えたんだけどどうすりゃいいのか
今までは明らかに冗長で読みづらいコードが多かったけど、生産性で見れば高かったように思う
特にプログラミング自体に興味が出てきて他の言語の記事も見るようになって、
そこで得た知識をVBAで無理に再現しようとしてドツボに嵌る事態も多いように感じる
これはもっと綺麗に書けるんじゃないか?っていう欲が出て進まなくなる事が増えたんだけどどうすりゃいいのか
今までは明らかに冗長で読みづらいコードが多かったけど、生産性で見れば高かったように思う
特にプログラミング自体に興味が出てきて他の言語の記事も見るようになって、
そこで得た知識をVBAで無理に再現しようとしてドツボに嵌る事態も多いように感じる
391デフォルトの名無しさん (ワッチョイ 9f4f-/GGz)
2021/10/15(金) 07:30:19.61ID:xvvRRo/+0 >>390
まず単一責任原則に沿って作るといいよ。
つらつらとコードを一直線に書くんじゃなくて、
役割に合わせてメソッドや関数を作って
それを部品として組み立てて行くイメージ。
後、他言語をやっていてクラスや
インターフェースの概念を理解しているなら
行き当たりばったりで最初からコードを
書くんじゃなくてどういう構成で組むかを
一度図に書いてイメージしてから作るといいよ。
そのためにもUMLとかもかじっておくと
いいんじゃないかな。
後は暇なときにデザインパターンの本でも
読んでおいて使えそうなのだけ
使えばいいんじゃないかな。
ただ、VBAでは自分一人で使うんであれば
それでいいけど、後々人が見たり手を入れたり
することを考えると、やり過ぎると
そもそもその辺の概念を理解していない
人が多いからね。自分以外誰も触れない
オナニーコードの完成だよ。
その辺は気を付けないとね。
まず単一責任原則に沿って作るといいよ。
つらつらとコードを一直線に書くんじゃなくて、
役割に合わせてメソッドや関数を作って
それを部品として組み立てて行くイメージ。
後、他言語をやっていてクラスや
インターフェースの概念を理解しているなら
行き当たりばったりで最初からコードを
書くんじゃなくてどういう構成で組むかを
一度図に書いてイメージしてから作るといいよ。
そのためにもUMLとかもかじっておくと
いいんじゃないかな。
後は暇なときにデザインパターンの本でも
読んでおいて使えそうなのだけ
使えばいいんじゃないかな。
ただ、VBAでは自分一人で使うんであれば
それでいいけど、後々人が見たり手を入れたり
することを考えると、やり過ぎると
そもそもその辺の概念を理解していない
人が多いからね。自分以外誰も触れない
オナニーコードの完成だよ。
その辺は気を付けないとね。
392デフォルトの名無しさん (ワッチョイ ef68-VjlT)
2021/10/15(金) 07:53:52.36ID:i1GdH9Fr0393デフォルトの名無しさん (ゲマー MM3f-/SeR)
2021/10/15(金) 08:56:32.98ID:Ob8xTIA6M メソッドが3つ以上にできそうなときはクラスを検討する
394デフォルトの名無しさん (ラクッペペ MM7f-xEoX)
2021/10/15(金) 09:22:10.96ID:Y66b/sjXM 美しさより速さだよ
最初の頃は両立するが(無駄なSelectなど)
次第によ醜くなっていく
最初の頃は両立するが(無駄なSelectなど)
次第によ醜くなっていく
395デフォルトの名無しさん (エムゾネ FFbf-mxW8)
2021/10/15(金) 10:10:42.08ID:Sjupi756F もう3年くらいExcel使ってないけど全然困らないωωω
396デフォルトの名無しさん (ワッチョイ 2b10-c8v8)
2021/10/15(金) 11:34:26.87ID:r1bpZsgJ0 ふーん
397デフォルトの名無しさん (ブーイモ MM4f-gSog)
2021/10/15(金) 20:36:17.72ID:WLz9ti2OM >>395
なんでこのスレに居るの?
なんでこのスレに居るの?
398デフォルトの名無しさん (ワッチョイ 6b01-18WC)
2021/10/15(金) 21:42:47.27ID:YCIon6in0 >>391,392
ありがとう
分けた方がスッキリするんだけど、
分けすぎると逆に関数があっちこっちに分散してどれが何に使われているのか分かり辛くなる
そういう時に「どこまで分けるか」っていう塩梅はどういう基準で決めてる?
ありがとう
分けた方がスッキリするんだけど、
分けすぎると逆に関数があっちこっちに分散してどれが何に使われているのか分かり辛くなる
そういう時に「どこまで分けるか」っていう塩梅はどういう基準で決めてる?
399デフォルトの名無しさん (ワッチョイ 9f4f-/GGz)
2021/10/15(金) 22:02:32.86ID:xvvRRo/+0 >>398
役割。
モジュールもメソッドも全てに役割分担を持たせてキチンと仕舞うべき場所に仕舞っておく。
だからその役割を行う為なら100行になろうが1000行になろうがそのメソッドに記載する。
何を持ってしてひとつの役割とするかは作る人のセンスに掛かってくるから場数をこなして慣れるしかないかな。
役割。
モジュールもメソッドも全てに役割分担を持たせてキチンと仕舞うべき場所に仕舞っておく。
だからその役割を行う為なら100行になろうが1000行になろうがそのメソッドに記載する。
何を持ってしてひとつの役割とするかは作る人のセンスに掛かってくるから場数をこなして慣れるしかないかな。
400デフォルトの名無しさん (ワッチョイ 0fda-ZO17)
2021/10/15(金) 22:06:51.27ID:xdjJa8Ad0401デフォルトの名無しさん (ワッチョイ ab5f-UsRe)
2021/10/16(土) 13:55:14.29ID:Hx8OP0An0 >>398
> 分けすぎると逆に関数があっちこっちに分散してどれが何に使われているのか分かり辛くなる
関数にカーソル合わせて「Shift+F2」で定義箇所に飛べるよ
https://www.wordvbalab.com/code/2925/
まあ言語自体も開発環境も貧弱すぎるからまとめたくなっちゃう感覚はわかるけど
> 分けすぎると逆に関数があっちこっちに分散してどれが何に使われているのか分かり辛くなる
関数にカーソル合わせて「Shift+F2」で定義箇所に飛べるよ
https://www.wordvbalab.com/code/2925/
まあ言語自体も開発環境も貧弱すぎるからまとめたくなっちゃう感覚はわかるけど
402デフォルトの名無しさん (ワッチョイ 6b01-Avck)
2021/10/16(土) 16:39:05.71ID:EZGI4ZK10 調べてもわからないのでお聞きしたいです
下の処理でtest3まで処理は正常に行われるんですが
mainに戻ったときに型の不一致でエラーが出て止まってしまいます。
Dim WS As Worksheet
Sub main()
Call test3(TEMP_SHEET)
End Sub
Function TEMP_SHEET() As Worksheet
Set TEMP_SHEET = ThisWorkbook.Worksheets("temp")
Set WS = TEMP_SHEET
End Function
Function test3() As Variant
With WS
.Select
.Cells(1, 1) = "test"
End With
End Function
下の処理でtest3まで処理は正常に行われるんですが
mainに戻ったときに型の不一致でエラーが出て止まってしまいます。
Dim WS As Worksheet
Sub main()
Call test3(TEMP_SHEET)
End Sub
Function TEMP_SHEET() As Worksheet
Set TEMP_SHEET = ThisWorkbook.Worksheets("temp")
Set WS = TEMP_SHEET
End Function
Function test3() As Variant
With WS
.Select
.Cells(1, 1) = "test"
End With
End Function
403デフォルトの名無しさん (ワッチョイ 4b68-ZO17)
2021/10/16(土) 16:51:56.90ID:a6cW1Kja0 test3()なのにcallで引数渡そうとしてる
404デフォルトの名無しさん (ワッチョイ fbe6-twAR)
2021/10/16(土) 17:03:21.91ID:cq/EQnSr0 VariantにはArrayとかも入るから ()付けても書式エラーにはならないのかな
405デフォルトの名無しさん (ワッチョイ 5bda-ir6K)
2021/10/16(土) 17:06:32.68ID:eJomN4xc0406デフォルトの名無しさん (ワッチョイ fbe6-twAR)
2021/10/16(土) 17:09:51.40ID:cq/EQnSr0 test3の実行後にエラーになるのがこの質問のミソだと思うよ
407デフォルトの名無しさん (ブーイモ MM4f-ZO17)
2021/10/16(土) 17:43:21.23ID:nAOL9IkjM >>402
そもそも「test3までは正常」というのが間違い
これではまったく動かない
とりあえず動くようにするなら、たとえばこう書けばいい
ほかにも色々なパターンが考えられるけど、何がやりたいのかよくわからないので
Dim WS As Worksheet
Sub main()
Call TEMP_SHEET
Call test3
End Sub
Sub TEMP_SHEET()
Set WS = ThisWorkbook.Worksheets("temp")
End Sub
Sub test3()
With WS
.Select
.Cells(1, 1) = "test"
End With
End Sub
そもそも「test3までは正常」というのが間違い
これではまったく動かない
とりあえず動くようにするなら、たとえばこう書けばいい
ほかにも色々なパターンが考えられるけど、何がやりたいのかよくわからないので
Dim WS As Worksheet
Sub main()
Call TEMP_SHEET
Call test3
End Sub
Sub TEMP_SHEET()
Set WS = ThisWorkbook.Worksheets("temp")
End Sub
Sub test3()
With WS
.Select
.Cells(1, 1) = "test"
End With
End Sub
408デフォルトの名無しさん (ワッチョイ 2b10-c8v8)
2021/10/16(土) 18:35:14.73ID:Pp6vdwK70 確かにこれではtest3は動かない
409デフォルトの名無しさん (ワッチョイ 0fda-ZO17)
2021/10/16(土) 18:36:14.79ID:njPM+lzE0 >>402
test3まで処理が正常に行われたなら気にしなくていいんじゃね
test3まで処理が正常に行われたなら気にしなくていいんじゃね
410デフォルトの名無しさん (ワッチョイ fb2f-4HJo)
2021/10/16(土) 18:46:34.14ID:m1u7MgLp0 ステップ実行させたら確かにtest3実行するな
こんなのコンパイルエラーで良いと思うんだが、なかなか興味深い
こんなのコンパイルエラーで良いと思うんだが、なかなか興味深い
411デフォルトの名無しさん (ワッチョイ 6b01-Avck)
2021/10/16(土) 18:57:45.79ID:EZGI4ZK10 ありがとうございます!
test3はsubでよかったんですね。
参考にしながらいろいろ試したらできました。
すごく助かりました。
test3はsubでよかったんですね。
参考にしながらいろいろ試したらできました。
すごく助かりました。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化 過去10年間に使用のメールアドレスや電話番号等も [Hitzeschleier★]
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” [ぐれ★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★3 [Hitzeschleier★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 日本人、タイとカンボジアの戦争に興味がなさすぎる。高市もなんか言えよ [811796219]
- 日本人、世界で最もブランドに興味なし🇯🇵 [462275543]
- 【悲報】たぬかなが渡邊渚を壮絶バッシング 「グラビア出したあたりから臭いな~と思ってたが激臭になってたわ。中居は悪くない」 [455031798]
- 【悲報】鈴木農水大臣、国民から「こいつひょっとしてアホなんじゃね?」と思われ始めてしまうwww [793117252]
- 日本に旅行来てる中国人減ったとか言ったの誰だよ
- 自閉症児の父親「中絶しておけば良かった。 家族が欲しかったのに、手に入れたのは人間たまごっち」 [777114754]
