Excel VBA 質問スレ Part57

■ このスレッドは過去ログ倉庫に格納されています
2018/09/10(月) 21:42:39.57ID:K1uuwFLt
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/
2018/09/20(木) 18:30:13.49ID:5eDdLMhs
VBAが使えるのを売りにしてる事務員は多いからね
さすがにそろそろVBEは標準では付属しなくなって、
MSのサイトの分かりにくい場所から別途ダウンロードが必要になるくらいの弾圧施策は打ってくるんじゃないかな
2018/09/20(木) 18:36:30.44ID:49SYfM/r
事務員にそんなもの期待してない
2018/09/20(木) 19:29:49.01ID:lix+OrrW
冷静に考えたらプロは喜ばないか
営業が喜ぶかもしれないってだけだな
2018/09/20(木) 20:28:39.42ID:qGj9TL9d
>>222
2019にPythonが実装されるという噂だが…
結局COMやらないと駄目、ってなったら旨味がほぼゼロ。
Excelが.NETに完全対応するんならVBAとか今すぐ無くなっていい。
2018/09/20(木) 21:44:20.01ID:MjJalB6Y
>>234
ん?
Excelに搭載するならVBA並みに使えるようにするだろ
COMで使うなら今でも使えるし
2018/09/20(木) 21:59:37.62ID:whO82xMw
マルチプラットフォーム、クラウドに注力してるのに
わざわざローカルのOSベッタリの技術にリソースは割きたくないでしょ

というかVBAの前にIEが消えると思う
2018/09/20(木) 22:42:00.54ID:oVrOG/N2
IEはガチのオワコンだからしゃーない
2018/09/20(木) 22:54:11.74ID:tLKfXY5t
>>234
そんな噂はねーよ
とっくの昔に否定されてる
239デフォルトの名無しさん
垢版 |
2018/09/21(金) 01:31:15.05ID:MqKbhYRD
ところがここだけの話そうでもないんだよねーあんまり詳しくは言えないけどね
2018/09/21(金) 02:38:37.17ID:ITZv+Gmc
>>239
負け惜しみ言ってるんじゃねーよ、死ねよ
2018/09/21(金) 09:35:36.97ID:mvgA0QsA
どんなのが搭載されても関係無いだろ。
それに合わせるだけだ。
逆に待ち望んでた奴らはまたコレジャ・・・がダメとか言い出すんだろう。

結局今と変わらない。
自分の能力の低さを言語のせいにするような奴らなんだから。
2018/09/21(金) 16:53:09.50ID:Qvv9rksr
事務仕事でVBA使えると業務効率すごく良くなるの?
作業自動化とか見て心がわくわくするけど、うちの会社誰もVBA使えなくていまいちどんな感じなのか想像できない
2018/09/21(金) 17:42:59.81ID:CSX4ORRK
>>242
自分でやってるExcelの仕事を、この部分を自動で出来たらどうなるかって考えてみたらよろしいやん。
出来るところ出来ないところ色々あるだろうけどさ。
244デフォルトの名無しさん
垢版 |
2018/09/21(金) 17:54:42.09ID:r3aTV2Xy
まだ始めたばったりで基本もまだまだだけど、実際の業務で自動化できそうな簡単な課題を考えて試行錯誤してるんだけどこんな感じで身につくかな?
2018/09/21(金) 17:56:20.06ID:xQShnEjp
>>242
今からやるならdotnetやpythonがいいよ
どの言語でもエクセルを処理できる
業務はエクセルだけじゃない
だからどうせなら簡単で色々できてパワフルな別の言語を使ったほうがいいというわけ
2018/09/21(金) 18:04:23.10ID:liVyxOie
メモ帳でC#組めるし.NETはオススメだね
2018/09/21(金) 18:06:59.84ID:2TZ1ouJm
VBAスレまできてPythonのステマとか
やっぱりPython信者は一味違うな
2018/09/21(金) 18:11:58.90ID:mvgA0QsA
dotnetもpythonもExcel上で使うには力不足。
VBAが一番都合が良いんだね。
2018/09/21(金) 18:16:59.14ID:xQShnEjp
エクセルはビジネスのごくわずかな領域でしかない
なのでエクセル依存のVBAはビジネスではイマイチなんだね
2018/09/21(金) 18:29:31.75ID:liVyxOie
やっぱり.NET、Python、PowerShellで決まりだよ
2018/09/21(金) 18:33:05.98ID:MQAmc69g
ユーザー定義ワークシート関数作れるようになってから出直せ
2018/09/21(金) 18:35:03.52ID:uQKWYjQl
>>242
凄く良くなるかは分からん
業務の種類と自分が出来る自動化のスキルによる
うちはシステム化ダメダメだったから日報を2時間掛けて作ってたらしいそれを2分で出来るようにした
土日も作ってるらしいからそこそこになった
253デフォルトの名無しさん
垢版 |
2018/09/21(金) 18:40:23.75ID:Qvv9rksr
なるほどー。普段の業務考えてみたらルーチン作業ばっかしてるし自動化できそう


>>252
まさにそんな感じで日報も作ってるわ。部署ごとにわけて〜で2時間は余裕でかかってる
これがもし2分で終わったりしたら夢あるなぁ
2018/09/21(金) 18:44:00.14ID:liVyxOie
C#あたり使ってVBEのコードペインにユーザー定義関数用のVB6コードを差し込むようにすれば大丈夫だと思うの
2018/09/21(金) 18:46:12.21ID:MQAmc69g
>>254
で、そのファイルは他の人が開いたらどうなるんや
2018/09/21(金) 18:50:57.60ID:liVyxOie
ブックのコードペインに差し込んでスタンドアロンなVBAプログラムとして保存すれば他のユーザーがそのブックを開いても普通に関数として使えるじゃん
2018/09/21(金) 18:56:13.68ID:xQShnEjp
>>251
何に使うの?
ユーザー定義関数を定義する事が目的化してない?
2018/09/21(金) 19:01:09.32ID:MQAmc69g
>>257
標準関数で書くと低速になるような式のとき、VBAに移す事で大幅に高速化できる。
必要になった時にその場で作るものだから、c#の場合VS起動してコンパイルしてとか論外。
その後、計算書完成したから後よろしくって上司に渡すとかよくある
2018/09/21(金) 19:17:25.97ID:FvpQrvJK
計算書なんて何度も計算するものじゃないだろ?
それに経過の計算を残すことが重要な書類じゃないのか?

無意味に速度なんて気にして誰も解読できないオナニー関数とか使うなよハゲ
2018/09/21(金) 19:22:37.61ID:xQShnEjp
え?それだけ?
定義した関数をデリゲートとして渡してコレクションをソートしたり
メタデータを取得してデコレーターを生成したり
再利用可能なモジュールとしてシステムに登録したり
とかできないの?
使い捨てのシートに表示するのを高速化するだけのために重いエクセルとVBEを開いてVBAで我慢強くコーディングして動作確認とか辛いんですけど
2018/09/21(金) 19:30:10.67ID:liVyxOie
必要になったときに手軽に使うのはPowerShell
2018/09/21(金) 19:31:16.07ID:MQAmc69g
そういうのが作りたいなら好きにしてくれ。
VBAが適している場面もあるって話や
あと数秒で計算終わるなら必要ない。物によっては諸元入力のたびに再計算に1分かかる場合とかあるんよ。
エクセルエアプには分からなくても仕方がないが。
2018/09/21(金) 19:35:55.04ID:FvpQrvJK
どうせSUMPRODUCTとか使いまくって悦に浸ってんだろ
エクセルプロ()さんは凄いですね
2018/09/21(金) 19:42:04.04ID:xQShnEjp
リアルタイム更新はエクセル弱っちいよね
非同期処理のサポートが残念だから
入力するたび重い計算を同期で待ちってユーザーが激怒する典型的なパターンだよ
2018/09/21(金) 19:54:44.02ID:liVyxOie
大容量データをエクセルで扱うならパワーピボット使おうよって思うし、ワークシートで行列計算の評価を何重にも行うならそれ全部外部の高速なプログラムにオンメモリでやってもらおうよって思うの
2018/09/21(金) 20:16:40.40ID:4Tb64i1X
>>260
お前、VBAに何やらせようと思ってるの?
VBAはあくまでOfficeアプリケーション上で使える便利機能でしかないんだよ?
お前が言ってることはデカいシステム作ることに対応した言語持ってきて
アレが出来ないコレが出来ないと騒いでいるに過ぎない。

そもそもそういうことをやるならそれなりのフレームワークを使ってEXCEL吐き出させろ。
2018/09/21(金) 20:23:25.18ID:+w5W7Qw1
>>258
標準の関数ってスピードすごい早いプログラムじゃないの?
自作のほうが上回るとかあるんか
2018/09/21(金) 20:28:26.36ID:dSxNadcR
>>267
VB6標準の組み込み関数じゃなくてエクセル組み込みの標準的なワークシート関数のことを言ってるんじゃないかと理解してたんだけど違うのか?
2018/09/21(金) 20:33:56.46ID:xQShnEjp
>>266
デカイシステム?
日常的な規模のツールもC#やパワーシェルのほうがいいよ
小規模ならまあほとんどパワーシェルだな

エクセルはスケールデカイときは論外だけど
便利で基本的なクラスや言語機能がないからスケールの小さいちょっとした物にも実はそんなに向いてないんだな

外部コマンドの出力結果をパースして並び替えてフィルターしてエクセルに出力してファイルをwebサーバーにHTTPポスト
これぐらいの簡単な作業ですら着手に躊躇してしてしまう
2018/09/21(金) 21:47:31.39ID:c6u7OXiZ
>>268
いやワークシート関数で合ってると思うけどあれを超えられるユーザー定義関数を作る自信はないわ
2018/09/21(金) 22:47:22.07ID:oOcVj6Vd
上で言ってるような重い処理じゃないけど、文字列操作系は自作したほうが便利なことが多いよな。

たとえばSplit関数がワークシートに無いのでパスをバラすときとか糞めんどい。
A1:C:\hoge\fugafuga\piyo

C:・・・・・=MID(A1,1,SEARCH("\",A1,1))
hoge・・・=MID(A1,SEARCH("\",A1,1)+1,SEARCH("\",A1,SEARCH("\",A1,1)+1)-SEARCH("\",A1,1)-1)
fugafuga・・・=MID(A1,SEARCH("\",A1,SEARCH("\",A1,1)+1)+1,
SEARCH("\",A1,SEARCH("\",A1,SEARCH("\",A1,1)+1)+1)-SEARCH("\",A1,SEARCH("\",A1,1)+1)-1)

しかしこれを定義するだけでシンプルになる。
Function SPLIT2(v, deli, idx)
SPLIT2 = Split(v, deli)(idx - 1)
End Function

C:・・・・・=SPLIT2(A1,"\",1)
hoge・・・=SPLIT2(A1,"\",2)
fugafuga・・・=SPLIT2(A1,"\",3)

だから文字列変換が出てきたら大抵VBAで関数組むかな
2018/09/21(金) 22:52:30.61ID:oOcVj6Vd
>>271
書いてから思ったけど、パス分解するだけなら区切り文字で出来るから例が悪かったわ
上の関数は文字を数式で繋いでコネコネするときによく使う
2018/09/21(金) 22:53:01.55ID:/N0VzHQb
splitがめんどいのは同意だけどなんでワークシート関数にするの?
vbaで処理完結したほうが良いと思うけど
2018/09/21(金) 23:05:24.48ID:oOcVj6Vd
>>273
それも場合によるかと
帳票、単票みたいなのをササっと作るときは、セル毎に式を組まないといけないから適してる。
あと行・列挿入が多い表に埋め込むときとか。

たぶんPowerShellerが想像してる表から表に変換するような場合にはあまり適してないね。

あと元の値が頻繁に変化するものは、そのたびにマクロ走らせないといけないから更新漏れが起こるのが困る。
2018/09/21(金) 23:37:14.57ID:3Rh/KByq
考え方なんかなワークシートで式使われる方がめんどく感じる
大量にあったりすると重いしメンテしづらかったりするし
2018/09/21(金) 23:47:44.41ID:dSxNadcR
Lispの糞コードいじる気分になるよね
2018/09/21(金) 23:50:48.56ID:UZbX0jXb
ワークシート関数なら他にはマネ出来ない

データ処理するだけならPowerShell使えって奴も多いんじゃね
278デフォルトの名無しさん
垢版 |
2018/09/21(金) 23:50:54.80ID:MqKbhYRD
盛りすぎプロさんw
2018/09/22(土) 00:01:13.95ID:96L85sWt
SPLITみたいなのはワークシート関数にする派だな
汎用的な関数をワークシート内で使ったほうが見通しがいい
他にもMAP、FILTER、REDUCEみたいなのも自作して使ってるわ
2018/09/22(土) 00:04:01.76ID:/LVptLz+
JSPやASPの失敗を繰り返しとるな
帳票にデータを埋め込みたいなら式じゃなくシンプルにセル参照を使うといいよ
参照先はプレーンなデータ専用シートね
こうしとけばセキュリティ監査的に面倒なマクロ付きにしなくていい、
データ供給元の言語に依存しなくなる、
データ供給元のコードがシンプルになる、
データモデルがわかりやすくなる、などなどメリットが多い
281デフォルトの名無しさん
垢版 |
2018/09/22(土) 00:17:31.94ID:T/6XWx9j
>>279
MAPやREDUCEに渡す無名関数はどうやってる?
2018/09/22(土) 02:18:36.18ID:niETRueG
ワークシート関数って”使う”のにかかる手間が少ないのがメリットだと思う。
関数の入力と出力だけ書いておけばVBA読めない人でもすぐに理解できる。

ワークシート関数使うのは使い捨ての帳票が大半だろうし>>280は全然違うものを想像してそう。
283デフォルトの名無しさん
垢版 |
2018/09/22(土) 02:24:34.84ID:FJlDOW+X
お前ら本当にもっと会社の利益になる事を頑張ってくれよ
やらせてるのは女の子がやる様な簡単な仕事なんだからこんなどーでも良い大して役に立たないVBAなんかに時間を使わずに他の人を手伝うとかちゃんと勤務中は仕事してね
分かったね?
2018/09/22(土) 07:40:51.79ID:z7BGc1C3
自作のワークシート関数作るとエラー処理とか面倒
特にエクセルの柔軟すぎる型変換は予想しない結果になってしまう

>>283
君はまずハローワークに行こうな
285デフォルトの名無しさん
垢版 |
2018/09/22(土) 08:08:03.84ID:T/6XWx9j
>>283
老害かな
2018/09/22(土) 09:49:40.55ID:/LVptLz+
>>282
使い捨て帳票ならそれこそ手入力で十分
デザインするついでにデータも入れればいい
プログラムするものは何度も繰り返し出力するもの、何人もの社員が出力するものだ
そういうのは先ほどレスした理由でセル参照を使ったほうがいい
2018/09/22(土) 09:55:14.40ID:MP8LoRbH
質問です
パワーシェルって.Net Freamworkの寄生虫みたいなもので
単体だとただのシェルと変わらないって本当です?
2018/09/22(土) 09:58:32.80ID:WimPZWqW
VBAがOffice製品の寄生虫なのと一緒
2018/09/22(土) 11:14:47.29ID:KDDLtPfl
VBAは個々の重いOfficeアプリを起動しないと動かせないけどPowerShellはIDEでも普通のPSコンソールでもPSだけでサクサク動かせるからそこが違う
2018/09/22(土) 11:36:15.01ID:mc091pM3
PowerShell自体がたかがコマンドラインシェルのくせに起動ゲロ遅いから目糞鼻糞
2018/09/22(土) 11:38:46.45ID:CkoNNNs2
Cmdプロの人の嫉妬かな
2018/09/22(土) 11:55:38.81ID:mc091pM3
使ってるよ?
最近はだいたいbashで済ませてるけど
2018/09/22(土) 21:13:08.35ID:+NSfHsNE
質問です。
ソルバー 機能をvbaで使ってるんだけど、目的や制約をセルを対象じゃなく、vba内の変数に対して適用したいんだけど不可能?
2018/09/22(土) 22:34:22.71ID:96L85sWt
>>281
クッソダサいしなんちゃってmapだけど文字列で渡してる
=MAP(A1:A10,”$$*EXP($$)”)
みたいな感じで
2018/09/22(土) 23:03:40.40ID:iO7YjT3j
「=SUM(A1:A10)」のようにSUM関数の引数に計算範囲をして合計値を表示したあとで
その計算範囲のセルの値を書き換えた場合に合計値が更新されないことがあるのですがなぜでしょうか?
そのあと値を書き換えたセルでF2を押して入力状態にし、そのままエンターを押すとようやく合計値が更新されます。
2018/09/22(土) 23:53:28.61ID:niETRueG
>>295
自動再計算が手動になっているのでは?
297デフォルトの名無しさん
垢版 |
2018/09/23(日) 13:25:57.01ID:6+b91Fhf
>>279
是非使いたいから公開してよ
2018/09/23(日) 15:33:34.28ID:aZjrg24v
>>254
似たようなことやってる。
ユーザー定義関数じゃないけど昔のAPIビューアをドッカブルにした奴をVB.netで作って使ってる。
2018/09/23(日) 15:35:54.14ID:aZjrg24v
>>258
ただ、ワークシート関数は重くなる場合もあるし自分は敬遠する傾向だな。

でも一長一短でワークシート関数の方が良い場合も当然ある。
2018/09/23(日) 15:38:28.44ID:aZjrg24v
>>260
バカ丸出しだなあ。
あのね、それで使う側にとって何が良くなるの?
そこを語るべきだろ。

それが納得できるような話が今まで殆ど語られたことがない。
2018/09/23(日) 15:47:46.09ID:aZjrg24v
>>269
何度言っても分からない人だねえ。
エクセルのファイル作るだけなら何使っても良い。
別にVBAが有利なことも無い。

逆にファイル開いた状態から動かす時は1ファイルで済むVBAが有利だろう。
だからVBAの話題になってるこのスレなんかもメインはそういうVBA有利な場面の話なんだよ。

実際、VBA不利な場面なんていくらでも知ってるけど、不思議とアンチの言葉とは丸っきり被らない。
アンチの言葉は全く説得力がない。
被れば、こっちも「確かに」となる筈なんだけどね。
2018/09/23(日) 16:04:30.67ID:xERBcwZj
まーた1ファイル論争になってるのか、もう神学論争だよねこれ
VBA以外の言語でもCOMオブジェクトとしてアクティブなブックを操作できるわけだし、想定ユーザーのスキルレベルや運用条件や処理の内容によってVBAを使うべきか使わなくても良いかの判断なんて変わってくるでしょ
2018/09/23(日) 16:04:32.08ID:9e4CRvDY
大将、ドーナッツ一丁!
2018/09/23(日) 16:30:52.15ID:H5quPExp
自分の場合はそもそもエクセルを開いた状態で動かしたいプログラムというのがあまり無いです
VBAを普段使いしているひとはどういう用途・目的でエクセルを開いた状態でマクロを使っているのでしょうか?
305デフォルトの名無しさん
垢版 |
2018/09/23(日) 16:46:09.55ID:yOUnCcQA
つまりVBAなんて必要ないって事だよね
そんなクソ言語を覚える意味ないもんな
2018/09/23(日) 16:49:36.19ID:aZjrg24v
>>302
だから、それはそもそも何の言語でも良い話だろ。
VBAのスレなんだからVBA有利な話になるのが当たり前なんだよ。
だから1ファイルの話になるのが当然なの。

何で当たり前のことも出来ない話をしなきゃならんのかって話。
2018/09/23(日) 16:54:56.19ID:aZjrg24v
>>304
それはそもそもVBAである必要の無い話だろうに。
何でこのスレに来てるんだということになる。

こっちは殆どブック開いた状態が基本だよ。
だから最初から噛み合わない。

CSVなら分かるけどExcelのブックは開いて人の判断なりを使って何かするのが基本。
じゃなかったらそもそも人間が理解出来る表である必要もなく、単なるバイナリのデータで良いわけだ。
2018/09/23(日) 16:59:47.48ID:xERBcwZj
落ち着こうや、常にVBAが有利なわけじゃないよねって言っただけだぞ
2018/09/23(日) 17:00:28.44ID:9e4CRvDY
みんながみんなそういう狭い世界で生きてるわけじゃない
キミのエクセルに対する姿勢はそうだってだけで
他の人は閉じた状態でもエクセルを扱う、
複数のファイルを扱う、エクセル以外との連携もする
その前提は崩しちゃいかんと思うのよ
310デフォルトの名無しさん
垢版 |
2018/09/23(日) 17:04:15.89ID:0vXeudiz
みんながエクセル使えないわけやないんやでw
311デフォルトの名無しさん
垢版 |
2018/09/23(日) 17:06:10.83ID:bxERXRN+
だからさー、、、、話し相手が居ない淋しいプログラマの皆さんは、プログラ「ム」板のExcel VBAスレはなく
上にあるプログラマー板のどっかそういうスレで話し相手探せっつーの

それすら判らんようになってんのかいな。
ここで思いっきりマウンティングしたいというか、ここでないとマウンティング出来ないのは判るけどさー
2018/09/23(日) 17:08:31.58ID:xERBcwZj
このスレに来る目的とかVBAに対して取るべき態度とかそんなの人の勝手じゃんよ
2018/09/23(日) 17:11:49.59ID:aZjrg24v
>>309
違うっちゅうの。
閉じた状態でブック触るならそもそも何の言語でも良いし、というよりむしろVBAは不利なんじゃないの?
じゃあ、何でVBAのスレが有るかと言えばそれは開いた状態で何かする話をしたいからだろ。
そりゃ、VBAだってある程度は汎用的に使えるから閉じた状態からVBAでどうにかする話題が有っても良いけどメインじゃないでしょ。
2018/09/23(日) 17:15:40.69ID:xERBcwZj
C#とかでCOM経由でエクセル触る前提だけどエクセルのオブジェクトモデルについてだけ質問したいと思った人がこっちに来る可能性だって十分あるんだよなぁ
315デフォルトの名無しさん
垢版 |
2018/09/23(日) 17:16:23.42ID:0vXeudiz
ガキかいなw
そもそもvbaがいらない場面でvba使おうとして、あげくの果てにvbaが有利やないとか
訳わからん事言いだすプロさんがおると質問が収束せんねんw
端的に言って迷惑やねんプロさんw
>>312おまえの事やでw
316デフォルトの名無しさん
垢版 |
2018/09/23(日) 17:50:56.48ID:icVHbGJq
自演で荒らすのはよくないよPyキチ君
317デフォルトの名無しさん
垢版 |
2018/09/23(日) 18:06:38.73ID:cRG95Xcq
vbaとrubyはイロイロと空気がにてる
ゴミっぷりも似てる
318デフォルトの名無しさん
垢版 |
2018/09/23(日) 18:07:15.36ID:cRG95Xcq
エクセルは優秀な表計算ソフトウェア
コレは間違いない

しかしエクセルのオマケ機能のvbaはウンコ
コレは間違いない
2018/09/23(日) 18:09:15.69ID:H5quPExp
>>307
すいませんあなたが何を言いたいのかよくわかりません
ブックを開いた状態から起動するマクロで有用な具体例はなにかありませんか?
抽象的な答えでごまかそうとしてませんか?
2018/09/23(日) 18:31:08.96ID:RgL9otrm
ハンカクでまた別人アピールしてるの?
いい加減に板を荒らすのは止めな
2018/09/24(月) 00:45:26.83ID:LqyRy1HC
ちょっと質問です。
とあるコードで
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else
End If
という記述を見たんですけど、Ifの中でEnd使うことってあるんですか?
やってる内容は
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
と同じなのかなと思ったんですけど、ご存知の方御教示頂ければ幸いです。
2018/09/24(月) 00:51:36.52ID:cyCxPH/A
>>321
Endのことはさておき、そのふたつのコードの意味は異なるよ
2018/09/24(月) 01:02:46.39ID:LqyRy1HC
>>322
本来意味が異なるのは分かるんですが、処理内容がそんな感じだったのでEndにはそういった意味があるのかな?と思って質問した次第です。
2018/09/24(月) 01:54:26.03ID:GrunNCaI
>>321
全く意味が違う。END使ったらプログラムが強制終了されてしまう。絶対に使うべきではない。
Sub main1()
Call sub1(True, True)
MsgBox "main終了"
End Sub
Sub sub1(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else

End If
End Sub
'結果:メッセージ1しか出ない

Sub main2()
Call sub2(True, True)
MsgBox "main2終了"
End Sub
Sub sub2(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
End Sub
'結果:メッセージ1、メッセージ2、main終了
2018/09/24(月) 03:08:18.87ID:3gV95ADu
Exit Sub とか Exit Function とかと違って、呼び出し元のプロシージャに返ることもなく一切のプログラムがそこで終了するコードってことだ。
Ifの中でEndを使うことがあるのかと訊かれれば、文法上は問題ないが俺だったら使わん。
もっとも、「早く返す」や「早く終了する」を追い求めたその人なりの結果かもしれんので、見かけたとしても内容次第で、問題のあるコードでなければとやかくは言わない。
2018/09/24(月) 05:43:58.48ID:sHYzq55w
>>321
Endステートメントを使うと、単にコードの実行が止まるだけでなくアプリケーションで保持していた全ての変数の値がリセットされ、アプリケーションに対する外部プロセスからの参照も遮断される

モードレス表示でフォームを表示している場合、値管理やカスタム常駐クラス使用のためにグローバル変数を使っている場合等には問題が生じるので本当に要注意
2018/09/24(月) 07:37:11.59ID:E4VB1fuR
状況わからんからなんとも言えんが致命的なエラー時に強制終了させるぐらいしかないと思う
>>321のコードは微妙にそう言うコード片な感じもするし
2018/09/24(月) 09:12:46.29ID:ALTh+r7C
>>321
多分エラーメッセージの後、後続処理をやりたくないのでendって書いたんだろう
exit subで抜けても呼び元に帰って続行するから
2018/09/24(月) 09:24:57.98ID:LqyRy1HC
皆さまありがとうございます。
ちゃんと読んでみたら終了するコードでした…お恥ずかしい…
今後質問する際は頭をリフレッシュさせて読み直してからに致します。
ご迷惑をお掛けしました。ありがとうございました!
2018/09/24(月) 09:47:07.47ID:ltYXr3cK
psやらrubyやら喚き叫ぶバカよりは良い w
2018/09/24(月) 10:16:18.94ID:Z99vN/yN
>>329
ところで

If 条件1 Then
 ・・・
ElseIf 条件2 Then
 ・・・
End If



If 条件1 Then
 ・・・
End If
If 条件2 Then
 ・・・
End If

では意味が違ってくるのはわかってますか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況