ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
Excel VBA 質問スレ Part80(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1700826110/
※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
Excel VBA 質問スレ Part80
https://mevius.5ch.net/test/read.cgi/tech/1685489018/
Excel VBA 質問スレ Part81
https://mevius.5ch.net/test/read.cgi/tech/1713416618/
探検
Excel VBA 質問スレ Part82
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2025/01/24(金) 03:31:15.25ID:l239yW+P788デフォルトの名無しさん
2025/05/23(金) 15:53:12.83ID:dHvUhuhP 長くてわかりにくい
スパゲッティ文章はやめろ
スパゲッティ文章はやめろ
789デフォルトの名無しさん
2025/05/23(金) 16:24:52.89ID:oLOrCYhj うん、途中からどうも話が噛みあわないな、とかは思っていた
ひと頃「ExcelのVBAは属人化しやすいから禁止する企業が増えてる」とかのたまう輩が徘徊してて
おま、それ、何もExcelに限らんだろ っつー意味で反抗してたし、そんなアホ論をこのスレで
平気で吹聴してる奴に向けて言葉のげんこつしてたんだけど どっか行っちゃったんか?
所詮、世間は、世の中は属人三昧だろ? それで右往左往世界が悪い方向に向かってる実例を
まざまざと目の当たりにしてる真っ最中だろ? で、それが悪かどうかなんか、もう少し様子を
見極めなきゃいけないまである
なんでわざわざこのスレをターゲットに、VBAは属人化!!!とか言い募らなきゃならん?
どこの回し者だ?、と
細かいこと言えば、じゃあってんでこれでもかっつー関数並べ立てて複雑怪奇な数式を組んだ
WorkSheetはどうなんだ? 属人化の極みだけどそれはいいのか? 見た目xlsxならおkなのか? と
至るスレで属人化!属人化!!属人化!!!と連呼してるならまだわかるが、なんでExcelスレ限定
で、こないだ別件で「Excel 売上管理」とかでネットをモゾモゾしてたら、そこら中の売上管理アプリの
宣伝サイトが、形ばかりのExcelのサンプル載せて「しかしExcelは属人化」っつー文言を決まり文句の
ように添えてたんだ ははぁ〜ん、とね、ある意味腑に落ちたし別の意味でがっかりしてたんだ
言い募る連中が自分の言葉でその悪弊を語れなくて「ネット見ろ」とか返すしか能が無かった理由が判明
そんなサイトだけじゃ無いのは承知してても、結局自分の意見として主張してンじゃなくて、受け売り
余所で聞きかじったのをなぞってるだけのレベルなんだな、と
しかし、少なくともこのスレに居続ける人間なら、ExcelのVBAで効率を図ることに意欲的であって欲しい
他のがいいよ、って奴はその宣伝だけして書き逃げしてて欲しい
まだまだExcel もっともっとVBA であり続けることが、このスレの健全化に貢献するはずなんだから
すぱげってぃwww 読み飛ばせばいいじゃんか 読んでくれなんて頼んで無いぞ?
ひと頃「ExcelのVBAは属人化しやすいから禁止する企業が増えてる」とかのたまう輩が徘徊してて
おま、それ、何もExcelに限らんだろ っつー意味で反抗してたし、そんなアホ論をこのスレで
平気で吹聴してる奴に向けて言葉のげんこつしてたんだけど どっか行っちゃったんか?
所詮、世間は、世の中は属人三昧だろ? それで右往左往世界が悪い方向に向かってる実例を
まざまざと目の当たりにしてる真っ最中だろ? で、それが悪かどうかなんか、もう少し様子を
見極めなきゃいけないまである
なんでわざわざこのスレをターゲットに、VBAは属人化!!!とか言い募らなきゃならん?
どこの回し者だ?、と
細かいこと言えば、じゃあってんでこれでもかっつー関数並べ立てて複雑怪奇な数式を組んだ
WorkSheetはどうなんだ? 属人化の極みだけどそれはいいのか? 見た目xlsxならおkなのか? と
至るスレで属人化!属人化!!属人化!!!と連呼してるならまだわかるが、なんでExcelスレ限定
で、こないだ別件で「Excel 売上管理」とかでネットをモゾモゾしてたら、そこら中の売上管理アプリの
宣伝サイトが、形ばかりのExcelのサンプル載せて「しかしExcelは属人化」っつー文言を決まり文句の
ように添えてたんだ ははぁ〜ん、とね、ある意味腑に落ちたし別の意味でがっかりしてたんだ
言い募る連中が自分の言葉でその悪弊を語れなくて「ネット見ろ」とか返すしか能が無かった理由が判明
そんなサイトだけじゃ無いのは承知してても、結局自分の意見として主張してンじゃなくて、受け売り
余所で聞きかじったのをなぞってるだけのレベルなんだな、と
しかし、少なくともこのスレに居続ける人間なら、ExcelのVBAで効率を図ることに意欲的であって欲しい
他のがいいよ、って奴はその宣伝だけして書き逃げしてて欲しい
まだまだExcel もっともっとVBA であり続けることが、このスレの健全化に貢献するはずなんだから
すぱげってぃwww 読み飛ばせばいいじゃんか 読んでくれなんて頼んで無いぞ?
790デフォルトの名無しさん
2025/05/23(金) 16:44:22.04ID:HIpPOdnz スレタイ
791デフォルトの名無しさん
2025/05/23(金) 16:53:05.49ID:fshmIkkH xlsmって唐突に未知のウイルスの疑いのあるファイル扱いになったりする事もあるから何も知らない人は扱うのが怖いかもね
792デフォルトの名無しさん
2025/05/23(金) 17:18:49.63ID:4lmOgu2G VBA職人が揶揄されるのも分かるわ。
ところで、仮にVBA職人、Ruby信者、Haskell信者、Rust信者で比べられたら、やっぱりVBA職人が圧倒的に格下扱いされちゃうのかな。ちょっと悲しみ。
ところで、仮にVBA職人、Ruby信者、Haskell信者、Rust信者で比べられたら、やっぱりVBA職人が圧倒的に格下扱いされちゃうのかな。ちょっと悲しみ。
793デフォルトの名無しさん
2025/05/23(金) 17:28:32.52ID:U7YdU8g0 VBAがそれらと同列に比較されることはないから互いに眼中にないと思うよ
Excel VBAはピボットテーブルとか分析関数とかと同列の、Excelの上級スキルの一つに過ぎない
一般的なプログラミングとは別物
そのへんのエンジニアより、むしろBIツールがメインのデータアナリストなんかの方がVBA意識してるよ
Excel VBAはピボットテーブルとか分析関数とかと同列の、Excelの上級スキルの一つに過ぎない
一般的なプログラミングとは別物
そのへんのエンジニアより、むしろBIツールがメインのデータアナリストなんかの方がVBA意識してるよ
794デフォルトの名無しさん
2025/05/23(金) 17:34:04.21ID:4lmOgu2G なるほど、そんなものかねぇ。
795デフォルトの名無しさん
2025/05/23(金) 17:39:18.56ID:+XeHUCKJ796デフォルトの名無しさん
2025/05/23(金) 18:31:41.70ID:5vSRBrjF 言語にすぐ上だ下だ騒ぐ奴いるからな
797デフォルトの名無しさん
2025/05/23(金) 18:59:01.81ID:BlARSTzn 言語じたいは下の下
反論する奴すらいない
反論する奴すらいない
798デフォルトの名無しさん
2025/05/23(金) 19:12:24.88ID:K4ioF38n 構文として最低限どんなものがあって欲しいかっていうのは人によって違うからねぇ。いまは、JavascriptとかPython辺りが平均的なラインなのかな。まぁ、関数型言語等のユーザーから見ればJavaScriptとかPytnon辺りでも足りないものだらけということになるんだろうし、VBAでも慣れればそんなに不自由ではないよという人も大勢いるわけだしね。
799デフォルトの名無しさん
2025/05/23(金) 19:54:42.34ID:ybuGJY2P C言語育ちのワイ、VBA始めた頃「えっ、ポインタってどうやって使うの?」って戸惑った思い出
自分の仕事が楽になる用途で使いまくってるからまぁ属人化しまくりだけど、
自分が退職した後(2年後)は知らんと思っている
自分の仕事が楽になる用途で使いまくってるからまぁ属人化しまくりだけど、
自分が退職した後(2年後)は知らんと思っている
800デフォルトの名無しさん
2025/05/23(金) 20:17:02.36ID:dHvUhuhP この辺がつらい
・tryがない
・for eachがバリアントのみ
・continueがない
・tryがない
・for eachがバリアントのみ
・continueがない
801デフォルトの名無しさん
2025/05/23(金) 21:01:05.99ID:61koEGUg まぁ、なければないで何とかやっていけるもんだよ。
このスレではそう言っておくのが無難。
このスレではそう言っておくのが無難。
802デフォルトの名無しさん
2025/05/23(金) 21:05:52.61ID:fxCKrz9G >>799
C言語にはfor eachがない、なぜならもっと原始的、シンプルな言語だからってCopilotに聞いたのですが本当なのでしょうか?
C言語にはfor eachがない、なぜならもっと原始的、シンプルな言語だからってCopilotに聞いたのですが本当なのでしょうか?
803デフォルトの名無しさん
2025/05/23(金) 21:21:09.60ID:eG6EJpyW >>802
ポインタに++すれば次の要素になるからむしろCのほうが融通が効く
ポインタに++すれば次の要素になるからむしろCのほうが融通が効く
804デフォルトの名無しさん
2025/05/23(金) 22:01:59.52ID:ai481srR 4行以上のレスは読む必要無いってマジだな
805デフォルトの名無しさん
2025/05/23(金) 22:09:05.20ID:4KSUIwLz ぬるぽ
806デフォルトの名無しさん
2025/05/23(金) 23:17:20.35ID:fxCKrz9G >>793
データアナリストならパワークエリーしてほしいな
データアナリストならパワークエリーしてほしいな
807デフォルトの名無しさん
2025/05/24(土) 06:17:34.64ID:OSW0csek 属人化し易い言語と言うことは融通の利く言語と言うことでもある。
例えば、CやC++ではポインタが使えたけどC#では「それは危険だ」ということで使えなくなってしまった。
代わりにデリゲートを使ってセーフティーに参照しなさい、ってことなんだろうけど、まぁお仕事用の開発だったらそれでもいいのかもしれないけど、
昔PS-VITAってゲーム機があって、これがエクスペリアってスマホとクロスプラットフォームで開発できるように開発言語をC#にしてしまった。
ポインタは確かに参照先間違えると吹っ飛んだりメモリリーク起こしたりと危険なものではあったけど、扱いが面倒ではないし融通の利く機能だった。
それを潰してしまったことがPSPシリーズがVITAで終わってしまった原因ではないかと今でも思ってる。
例えば、CやC++ではポインタが使えたけどC#では「それは危険だ」ということで使えなくなってしまった。
代わりにデリゲートを使ってセーフティーに参照しなさい、ってことなんだろうけど、まぁお仕事用の開発だったらそれでもいいのかもしれないけど、
昔PS-VITAってゲーム機があって、これがエクスペリアってスマホとクロスプラットフォームで開発できるように開発言語をC#にしてしまった。
ポインタは確かに参照先間違えると吹っ飛んだりメモリリーク起こしたりと危険なものではあったけど、扱いが面倒ではないし融通の利く機能だった。
それを潰してしまったことがPSPシリーズがVITAで終わってしまった原因ではないかと今でも思ってる。
808デフォルトの名無しさん
2025/05/24(土) 06:41:52.12ID:OSW0csek >>798
JavaScriptをやったときには
前から.Net系の言語や、まぁVBAでもそうなんだけど、
何でクラスのインスタンスや文字列とかは変数に入れられるのにメソッドは入れられないんだろ?
って思ってた時期があって、
JavaScriptに当たったとき、
あ、出来る言語もあるんだってなって、あれVBAに欲しいなぁとは思った。
後はスクリプト系の言語はスカラー変数で型の指定がないから型の指定に慣れてると逆にそれが面倒だったかな。
VBAで言えば全部Variantで扱ってるようなもんだし。厳密には違うらしいけど。
JavaScriptをやったときには
前から.Net系の言語や、まぁVBAでもそうなんだけど、
何でクラスのインスタンスや文字列とかは変数に入れられるのにメソッドは入れられないんだろ?
って思ってた時期があって、
JavaScriptに当たったとき、
あ、出来る言語もあるんだってなって、あれVBAに欲しいなぁとは思った。
後はスクリプト系の言語はスカラー変数で型の指定がないから型の指定に慣れてると逆にそれが面倒だったかな。
VBAで言えば全部Variantで扱ってるようなもんだし。厳密には違うらしいけど。
809デフォルトの名無しさん
2025/05/24(土) 10:35:16.26ID:sJ/mZ3mU 若いコにはやっぱPython辺りが人気とか?
810デフォルトの名無しさん
2025/05/24(土) 13:44:59.73ID:3VNn3d5Y スピル周りやLET,LAMBDAなどの関数が充実し
Excel=ビジュアルな関数型言語だと勝手に思っている
Excel=ビジュアルな関数型言語だと勝手に思っている
811デフォルトの名無しさん
2025/05/24(土) 14:39:09.90ID:a4AdJqTs ビジュアルな関数型言語はemacs-lispだろ
812デフォルトの名無しさん
2025/05/24(土) 15:44:49.02ID:0gUvgwlc 表検索するのにSQL使ってたけど、FILTER覚えたら単純な検索ならこれでいいかー、ってなった
813デフォルトの名無しさん
2025/05/24(土) 20:17:19.55ID:c7V+L981 このスレはバカの話はなぜ長いのか考えるスレになりました
814デフォルトの名無しさん
2025/05/24(土) 20:41:36.84ID:6QA0+Pxw 頭の良い人は難しいことを簡単に説明出来る
馬鹿は簡単なことを長々と判り難くする
馬鹿は簡単なことを長々と判り難くする
815デフォルトの名無しさん
2025/05/24(土) 20:44:24.68ID:OSW0csek816デフォルトの名無しさん
2025/05/24(土) 21:07:47.86ID:cYe6QRvj VBAは言語なのだろうか
VBは言語だけども
VBは言語だけども
817デフォルトの名無しさん
2025/05/24(土) 21:42:51.33ID:ZMjSY/PV A1セルはこのフォルダのパスを記入する
A2セルはこのフォルダのパスを記入する
流石にこれは通じる、、、よね?
A2セルはこのフォルダのパスを記入する
流石にこれは通じる、、、よね?
818デフォルトの名無しさん
2025/05/24(土) 21:44:12.53ID:ZMjSY/PV819デフォルトの名無しさん
2025/05/24(土) 22:37:10.39ID:iK5rs3WU A1 Write this folder pass.
820デフォルトの名無しさん
2025/05/25(日) 12:18:28.20ID:IvH5YvLQ dictionaryやFileSystemObjectのfunction関数を使っているけど、dictionaryに登録する処理や取得したファイル名やファイルパスに対する操作は事なる
こう言う場合、どうすれば個別の条件にも対応できるfunction関数が作れますか?
こう言う場合、どうすれば個別の条件にも対応できるfunction関数が作れますか?
821デフォルトの名無しさん
2025/05/25(日) 12:36:22.85ID:ubpRgCst 異なる操作をひとつの関数で行いたいという質問ですね!
まずはどういう操作を行っているのか教えてください!
まずはどういう操作を行っているのか教えてください!
822デフォルトの名無しさん
2025/05/25(日) 12:45:27.58ID:czPn1bap dictionaryは死ぬ予定だから使うのやめなよ
823デフォルトの名無しさん
2025/05/25(日) 12:53:50.40ID:ubpRgCst824デフォルトの名無しさん
2025/05/25(日) 13:20:14.05ID:fZ8kzLje AIみたいな解答ワラタ
825デフォルトの名無しさん
2025/05/25(日) 16:48:27.92ID:zOE9ehCa ホントにAIに聞いた。
個別の条件にも柔軟に対応できる function を作るには、いくつかのアプローチが考えられます。例えば、以下のような方法を試してみてはいかがでしょうか。
1. パラメータを活用する
2. Enum または定数を使う
3. コールバック関数を使う
個別の条件にも柔軟に対応できる function を作るには、いくつかのアプローチが考えられます。例えば、以下のような方法を試してみてはいかがでしょうか。
1. パラメータを活用する
2. Enum または定数を使う
3. コールバック関数を使う
826デフォルトの名無しさん
2025/05/25(日) 17:36:59.25ID:QBoxveBd 何をしたいのかが謎
型によって処理を分岐させたいってことかね
Function 関数(処理対象)
型名 = TypeName(処理対象)
Select Case 型名
Case "Dictionary"
Case "File"
Case "Folder"
End Select
End Function
型によって処理を分岐させたいってことかね
Function 関数(処理対象)
型名 = TypeName(処理対象)
Select Case 型名
Case "Dictionary"
Case "File"
Case "Folder"
End Select
End Function
827デフォルトの名無しさん
2025/05/25(日) 18:31:50.10ID:czPn1bap >>823
そういう話じゃなくVBS廃止の副作用で連想配列や正規表現が死ぬって話
そういう話じゃなくVBS廃止の副作用で連想配列や正規表現が死ぬって話
828デフォルトの名無しさん
2025/05/25(日) 18:42:26.13ID:rOBfPREU >>827
VBS廃止の副作用で死ぬのは噂や推測じゃなくて公式の情報なの?
VBS廃止の副作用で死ぬのは噂や推測じゃなくて公式の情報なの?
829デフォルトの名無しさん
2025/05/25(日) 19:07:30.81ID:IvH5YvLQ ファイルシステムオブジェクトでフォルダの中のファイル名一覧と、ファイルパスを取得したい時もあれば、
ファイル名に部分一致するファイルのパスを取得したい時もある
ファイル名に部分一致するファイルのパスを取得したい時もある
830デフォルトの名無しさん
2025/05/25(日) 19:13:49.79ID:5C/Jye7Q 従来の正規表現の代用って無いの
831デフォルトの名無しさん
2025/05/25(日) 19:54:07.08ID:czPn1bap >>828
逆にあれだけ情報出ててなんで死なないと思うの?
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301
>>830
vba-regex by sihlfallっていう、
RegExp代替のフルVBAで書かれた正規表現エンジンがある
逆にあれだけ情報出ててなんで死なないと思うの?
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301
>>830
vba-regex by sihlfallっていう、
RegExp代替のフルVBAで書かれた正規表現エンジンがある
832デフォルトの名無しさん
2025/05/25(日) 19:58:13.45ID:bo3VS07C833デフォルトの名無しさん
2025/05/25(日) 20:04:43.89ID:IvH5YvLQ 私はVBAの正規表現が死んだら、パワークエリーでJavaScriptの正規表現を使うわ
set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
Wordのドキュメントやアプリケーションを処理する時にエラーが出たのでそう思いました。
set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
Wordのドキュメントやアプリケーションを処理する時にエラーが出たのでそう思いました。
834デフォルトの名無しさん
2025/05/25(日) 22:03:34.39ID:QBoxveBd 正規表現はREGEX関数が実装されたのでVBAでやる必要なし
835デフォルトの名無しさん
2025/05/25(日) 22:32:05.60ID:d/seLvao836デフォルトの名無しさん
2025/05/26(月) 02:34:52.38ID:J879X3+V >>835
Microsoft Scripting Runtimeに依存してるからVBSと共に死ぬ
FSOなんかはScripting Runtimeには依存してないから引き続き使える
間違ってるなら指摘して
認識改めるから
Microsoft Scripting Runtimeに依存してるからVBSと共に死ぬ
FSOなんかはScripting Runtimeには依存してないから引き続き使える
間違ってるなら指摘して
認識改めるから
837デフォルトの名無しさん
2025/05/26(月) 09:38:22.00ID:G1Vrdcz4 >>820 が聞きたいのは
https://www.limecode.jp/entry/syntax/bind-set-filesystemobject
この辺の処理の仕方なんでは? 最後まで精読すれば、どういう書き方をすれば
より都合が良くなるか、それなり理解が深まるような
https://www.limecode.jp/entry/syntax/bind-set-filesystemobject
この辺の処理の仕方なんでは? 最後まで精読すれば、どういう書き方をすれば
より都合が良くなるか、それなり理解が深まるような
838デフォルトの名無しさん
2025/05/26(月) 09:53:10.39ID:wHcYCN0P >>833
>set オブジェクト = nothing
それ書かないで過去に何度か問題起きてたような
ファイルopenして、close書かなくても勝手に閉じてくれるとしても、書いたほうがいいようなもん
たった1行各程度で未然にトラブル防げるなら書いとけと
(かと言って、親オブジェクトから連なる小オブジェクトはいちいちnothingせずに、親オブジェクトだけ書いちゃうことも多いけどな。小さい処理だと特に)
>set オブジェクト = nothing
それ書かないで過去に何度か問題起きてたような
ファイルopenして、close書かなくても勝手に閉じてくれるとしても、書いたほうがいいようなもん
たった1行各程度で未然にトラブル防げるなら書いとけと
(かと言って、親オブジェクトから連なる小オブジェクトはいちいちnothingせずに、親オブジェクトだけ書いちゃうことも多いけどな。小さい処理だと特に)
839デフォルトの名無しさん
2025/05/26(月) 12:08:21.83ID:chNfFSjB840デフォルトの名無しさん
2025/05/26(月) 13:55:33.90ID:cvwCoF8H >set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
した方が良いじゃなくてするべき
した方が良いじゃなくてするべき
841デフォルトの名無しさん
2025/05/26(月) 17:21:30.90ID:c1JRhLC0 コピペ荒らしこのスレだけ来ないの面白いな
842デフォルトの名無しさん
2025/05/26(月) 18:35:02.01ID:FaOK97dk >>837
すみません
今の私は例えばファイルシステムで言えば、
フォルダの中の全てのフォルダ名とフォルダパスを取得
フォルダの中の全てのファイル名とファイルパスを取得
フォルダの中に指定のファイル名と異なるファイルがあれば削除
と言う様に、
それぞれのサブプロシージャを作成する事しかできていません
なので、一つのサブプロシージャに条件に応じて複数の処理が行えないかなと思いました
原作論で言えば、一つの処理しかできないサブプロシージャこそ正しいのかもしれませんが
あと、それぞれのプロシージャでファイルシステムオブジェクトを宣言とセットをしてしまっています
nothingは今までプロシージャを抜けた時点で解放されるから特にする必要がないと思っていましたが、Wordを操作する様になって、nothingをしないと処理が止まってしまうので意識する様になりました
すみません
今の私は例えばファイルシステムで言えば、
フォルダの中の全てのフォルダ名とフォルダパスを取得
フォルダの中の全てのファイル名とファイルパスを取得
フォルダの中に指定のファイル名と異なるファイルがあれば削除
と言う様に、
それぞれのサブプロシージャを作成する事しかできていません
なので、一つのサブプロシージャに条件に応じて複数の処理が行えないかなと思いました
原作論で言えば、一つの処理しかできないサブプロシージャこそ正しいのかもしれませんが
あと、それぞれのプロシージャでファイルシステムオブジェクトを宣言とセットをしてしまっています
nothingは今までプロシージャを抜けた時点で解放されるから特にする必要がないと思っていましたが、Wordを操作する様になって、nothingをしないと処理が止まってしまうので意識する様になりました
843デフォルトの名無しさん
2025/05/26(月) 19:11:18.49ID:mCaBFscc Sub Yaritai(i as integer)
if (i and 1) <> 0 then
Call Sub1()
elseif (i and 2) <> 0 then
Call Sub2()
End Sub
if (i and 1) <> 0 then
Call Sub1()
elseif (i and 2) <> 0 then
Call Sub2()
End Sub
844デフォルトの名無しさん
2025/05/26(月) 20:30:26.44ID:sP5+kUYx >>842
ご自分で言ってる通り、ひとつのモジュール、関数、メソッド等にはひとつの役割を与えて作るのがセオリーです。ちなみにそれを単一責任原則と言います。
ひとつのプロシージャ内で出来るかと言えば、再起処理やStaticな変数を上手く使えば恐らく出来ないことは無いでしょうが、そうするメリットをあまり感じません。
ひとつのプロシージャで処理するのではなく、ひとつのクラスとしてその辺の処理を行うことを検討しては如何でしょうか?
そうすればメンバ変数として宣言したもののインスタンスをコンストラクタで生成することも出来ますし、デストラクタで解放することも出来ますよ
ご自分で言ってる通り、ひとつのモジュール、関数、メソッド等にはひとつの役割を与えて作るのがセオリーです。ちなみにそれを単一責任原則と言います。
ひとつのプロシージャ内で出来るかと言えば、再起処理やStaticな変数を上手く使えば恐らく出来ないことは無いでしょうが、そうするメリットをあまり感じません。
ひとつのプロシージャで処理するのではなく、ひとつのクラスとしてその辺の処理を行うことを検討しては如何でしょうか?
そうすればメンバ変数として宣言したもののインスタンスをコンストラクタで生成することも出来ますし、デストラクタで解放することも出来ますよ
845デフォルトの名無しさん
2025/05/26(月) 20:36:57.49ID:sP5+kUYx ×再起処理
◯再帰処理
誤変換すまんこ
◯再帰処理
誤変換すまんこ
846デフォルトの名無しさん
2025/05/26(月) 21:18:23.47ID:FaOK97dk847デフォルトの名無しさん
2025/05/26(月) 22:59:03.14ID:Eh03XDLb セルから機種依存文字を直接拾ってくるのは難しいですか?
例えば☐(unicode:2610)が入ってるセルをクリックすると☑(unicode:2611)に書き換える、みたいなのを実装する場合、
if(Range("A1").text="☐")then
だとRange("A1").textでセルの文字は取得できませんよね?
(もちろん「="☐"」で直接比較することもできませんが)
どうにかしてセルの機種依存文字を拾ってきてその種類を判定することは可能でしょうか?
例えば☐(unicode:2610)が入ってるセルをクリックすると☑(unicode:2611)に書き換える、みたいなのを実装する場合、
if(Range("A1").text="☐")then
だとRange("A1").textでセルの文字は取得できませんよね?
(もちろん「="☐"」で直接比較することもできませんが)
どうにかしてセルの機種依存文字を拾ってきてその種類を判定することは可能でしょうか?
848デフォルトの名無しさん
2025/05/26(月) 23:15:54.66ID:MWZ/4kNq >>847
Hex(WorksheetFunction.Unicode(Range("A1")))
Hex(WorksheetFunction.Unicode(Range("A1")))
849デフォルトの名無しさん
2025/05/27(火) 15:49:48.18ID:j5Gfr/Ar >>847
>Range("A1").textでセルの文字は取得できませんよね?
取得はできる。VBEで使えない文字だからソースに直接その文字を書けないだけ
Dim CHECK_ON As String: CHECK_ON = ChrW(&H2610)
Dim CHECK_OFF As String: CHECK_OFF = ChrW(&H2611)
If Range("A1").Value = CHECK_ON Then
Range("A1").Value = CHECK_OFF
Else
Range("A1").Value = CHECK_ON
End If
>Range("A1").textでセルの文字は取得できませんよね?
取得はできる。VBEで使えない文字だからソースに直接その文字を書けないだけ
Dim CHECK_ON As String: CHECK_ON = ChrW(&H2610)
Dim CHECK_OFF As String: CHECK_OFF = ChrW(&H2611)
If Range("A1").Value = CHECK_ON Then
Range("A1").Value = CHECK_OFF
Else
Range("A1").Value = CHECK_ON
End If
850デフォルトの名無しさん
2025/05/27(火) 17:59:07.28ID:2OPk25Mu851デフォルトの名無しさん
2025/05/27(火) 20:17:39.42ID:3QS90eHP Excelの話ではないからスレ違いなんですが、 Wordのドキュメントの2ページ目の行に文字列を挿入するにはどうしたらいいでしょうか?
2ページ目の〜行目にと言う様な指定はできないのでしょうか?
2ページ目の〜行目にと言う様な指定はできないのでしょうか?
852デフォルトの名無しさん
2025/05/27(火) 20:38:35.17ID:0hlUsnMF853デフォルトの名無しさん
2025/05/27(火) 20:52:46.35ID:OuONf5SF854デフォルトの名無しさん
2025/05/27(火) 20:54:35.84ID:DtCiAPP8 >>853
死ね
死ね
855デフォルトの名無しさん
2025/05/27(火) 22:13:59.20ID:JUnNHiQe >>851
ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range = "文字列" & ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range
ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range = "文字列" & ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range
856デフォルトの名無しさん
2025/05/28(水) 00:45:03.58ID:7WzKj5D7 フォームを作るのに標準のコントロールやAPIでは動かないことがあったから、ついにPowershellで作り始めちゃった
857デフォルトの名無しさん
2025/05/28(水) 01:00:15.46ID:+7HocyMO PowerShellは
System.Collections.Genericが使えるからかなり楽だよなぁ
VBAと違ってフォームデザイナが標準で付いてないのが難だが
System.Collections.Genericが使えるからかなり楽だよなぁ
VBAと違ってフォームデザイナが標準で付いてないのが難だが
858デフォルトの名無しさん
2025/05/28(水) 07:40:29.71ID:LbsE8EcH VSの方が楽なんでは
PS使ったことないけど
PS使ったことないけど
859デフォルトの名無しさん
2025/05/28(水) 08:42:06.86ID:WNN+73zR PowerShellはbatと違って、一手間や権限設定が必要と聞いたからやめた震え声
本当にそうなのですか?
本当にそうなのですか?
860デフォルトの名無しさん
2025/05/28(水) 08:58:57.33ID:DZlhdmsz 震え声で言ってるの?
861デフォルトの名無しさん
2025/05/28(水) 09:02:42.36ID:3/66YXCT スレタイを音読してみよう
862デフォルトの名無しさん
2025/05/28(水) 09:56:27.88ID:0RI44N1Y エグザイル ビバ しつもんしる
863デフォルトの名無しさん
2025/05/28(水) 20:05:51.40ID:WNN+73zR VBAでファイルやフォルダのパスはいつも一覧表で利用しているのですが、当然属人化するリスクがあるので、もっと柔軟にパスを設定できる方法を探しています。
今考えているのは、ファイルやフォルダが見つからなかった時にダイアログを開いてフォルダやファイルを選択させ、選択したファイルやフォルダのパスをセルに記入する、と言う方法なのですが、もっと簡単で確実で柔軟な方法はないでしょうか?
今考えているのは、ファイルやフォルダが見つからなかった時にダイアログを開いてフォルダやファイルを選択させ、選択したファイルやフォルダのパスをセルに記入する、と言う方法なのですが、もっと簡単で確実で柔軟な方法はないでしょうか?
864デフォルトの名無しさん
2025/05/28(水) 20:44:52.08ID:Z5h4paoG 自分は設定シートを用意して、そこに記述してあるものを参照してる
865デフォルトの名無しさん
2025/05/28(水) 20:50:09.42ID:bd87TuSw ログインユーザーのマイドキュメントをルートにして開く
具体的には「HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal」
のパス
具体的には「HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal」
のパス
866デフォルトの名無しさん
2025/05/28(水) 21:40:10.79ID:WNN+73zR867デフォルトの名無しさん
2025/05/28(水) 21:58:53.67ID://Fv0twK >>863
エクスプローラーからファイルをドラッグドロップ
エクスプローラーからファイルをドラッグドロップ
868デフォルトの名無しさん
2025/05/28(水) 22:16:15.52ID:WNN+73zR869デフォルトの名無しさん
2025/05/28(水) 22:18:57.59ID:QfAx2JsO 馬鹿ばっか
870デフォルトの名無しさん
2025/05/28(水) 23:46:46.18ID://Fv0twK871デフォルトの名無しさん
2025/05/29(木) 07:11:07.31ID:cC95Jm/J872デフォルトの名無しさん
2025/05/29(木) 17:25:49.51ID:fp+yAGdo FileSystemObject の TextStream が使えないなら ADODB の Stream を使えばいいじゃない
と思ったら挙動が違ってびっくり
と思ったら挙動が違ってびっくり
873デフォルトの名無しさん
2025/06/01(日) 20:16:56.40ID:wTah86rB 初歩的な質問で申し訳ないですが、マクロ実行中にエラーなどでデバック画面、エディタ画面に移動せずに、エラーハンドリングなどを実行してプロシージャを終了するにはどうしたらいいですか?
874デフォルトの名無しさん
2025/06/01(日) 21:54:45.65ID:fzXRF4Kq >>873
On Error Resume Next
On Error Resume Next
875デフォルトの名無しさん
2025/06/02(月) 00:34:11.70ID:14Td775l [ツール] [オプション] [全般]
エラーでトラップ
●エラー処理対象外のエラーで中断
ということではなくて?
エラーでトラップ
●エラー処理対象外のエラーで中断
ということではなくて?
876デフォルトの名無しさん
2025/06/02(月) 00:35:28.23ID:14Td775l ×エラーでトラップ
◯エラートラップ
◯エラートラップ
877デフォルトの名無しさん
2025/06/02(月) 07:36:05.35ID:hx4qvUMZ878デフォルトの名無しさん
2025/06/02(月) 08:46:36.26ID:IeMpK/LE879デフォルトの名無しさん
2025/06/02(月) 09:24:06.39ID:3Ov4fjqk >>878
何を基準にかを書かかないと役立たずじゃない?
何を基準にかを書かかないと役立たずじゃない?
880デフォルトの名無しさん
2025/06/02(月) 15:03:33.91ID:DSKTrfoz 馬鹿はそんなことも判らないのか
881デフォルトの名無しさん
2025/06/02(月) 15:07:32.82ID:OjGRkHiP >>880
スレタイ読めない馬鹿w
スレタイ読めない馬鹿w
882デフォルトの名無しさん
2025/06/02(月) 19:50:00.14ID:K2UVQp3e >>614
ひとつのモジュールにはひとつの役割を
ひとつのプロシージャにもひとつの役割を
与えて書けばいいんじゃない?
もちろん、モジュールとプロシージャでは
与える役割が全然変わってくるけど
例えばモジュールに車という役割を与えたら
プロシージャには走る役割を与えたり
後はセンス
ひとつのモジュールにはひとつの役割を
ひとつのプロシージャにもひとつの役割を
与えて書けばいいんじゃない?
もちろん、モジュールとプロシージャでは
与える役割が全然変わってくるけど
例えばモジュールに車という役割を与えたら
プロシージャには走る役割を与えたり
後はセンス
883デフォルトの名無しさん
2025/06/02(月) 20:06:38.96ID:Xhmb9taU ありがとうございます
やはり on error goto ラベル名 なのですね
やはり on error goto ラベル名 なのですね
884デフォルトの名無しさん
2025/06/02(月) 20:25:45.14ID:gI3jZeU7 on error resume next
ヤバそうな処理
if err.number<>0 then
エラーリカバリー
end if
on error goto0
ヤバそうな処理
if err.number<>0 then
エラーリカバリー
end if
on error goto0
885デフォルトの名無しさん
2025/06/02(月) 20:45:44.86ID:Xhmb9taU >>884
エラーが発生している、あるいはしそうな処理がある、というよりは、マクロ実行中にどんなバグでも発生したら、発生した時点で終了させる必要があります
エラーが発生している、あるいはしそうな処理がある、というよりは、マクロ実行中にどんなバグでも発生したら、発生した時点で終了させる必要があります
886デフォルトの名無しさん
2025/06/02(月) 21:35:59.74ID:nQl9pEtd 終了前に
err.number = エラー番号
をセットしてジャンプさせるハンドラがいる
こわー
err.number = エラー番号
をセットしてジャンプさせるハンドラがいる
こわー
887デフォルトの名無しさん
2025/06/02(月) 22:06:18.54ID:ZCDsMgZ+ Sub Div0()
On Error GoTo Err
MsgBox 1 / 1
MsgBox 1 / 0
MsgBox 1 / -1
Err:
MsgBox "ゼロで割るな、クソが"
End
End Sub
On Error GoTo Err
MsgBox 1 / 1
MsgBox 1 / 0
MsgBox 1 / -1
Err:
MsgBox "ゼロで割るな、クソが"
End
End Sub
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」 [ぐれ★]
- 【テレビ】玉川徹「これ天災じゃなくて人災でしょ。責任どうするんだ」 日本のホテル、中国人観光客からのキャンセルが相次ぐ [冬月記者★]
- プーチン大統領「ウクライナ軍が撤退すれば戦闘は終わる」と主張 [どどん★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★10 [Ailuropoda melanoleuca★]
- 高市総理の「そんなことよりも」発言を釈明 木原官房長官「急いで話題転換する趣旨」 [ぐれ★]
- 【中国国防省】日本は戦争犯罪を悔い改め、憲法改正と軍備増強という危険な試みをただちに改めよと発信… [BFU★]
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★15
- 巨専】 ★2
- とらせん IP
- ハム専
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★14
- こいせん 全レス転載禁止
- ところで、ネトウヨの敗北ですよねぇ(ニチャァ [805596214]
- すまん、俺の勝ちで良いか?
- 【高市悲報】中国、世界中に是非を問うwwwwwwwwwwwwwwwwwww [308389511]
- ほぼ全ての男性医は結婚しているが女医の半分は結婚してないという事実
- エロサイトTK Tubeが地味に神アップデート
- 中国政府、非常にしつこい。本日も改めて「高市が正式に答弁を撤回するまで決して受け入れない」と表明。 [271912485]
