!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part59
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ d2a3-A3MQ)
2019/02/09(土) 15:12:30.70ID:3lTArmdf0851デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/11(月) 20:46:16.50ID:tsrenNBW0852デフォルトの名無しさん (スプッッ Sd52-ekDA)
2019/03/11(月) 21:21:38.01ID:B6nWiYCUd >>845
最初に「今Accessを使う意味」とか、言い出した奴が都合が悪くなると人のことを上から目線だとか言い出すからなあ。
そもそもの話はAccessにしちまうからExcelでDB処理することは多く無いって話から始まっている。
(実際は結構あるけどAccessと食い合うって話)
最初から、バックエンドSQLサーバーでフロントがExcelって話なら、SQLサーバーじゃなくて正にExcelでDB処理の話になって、俺の主張に一致するから反論にならん。それとも絶対にExcelフロントでAccessフロントはあり得ないって話ならもう一度センスね―と言ってやる。
Excelフロントはあり得るけどAccessフロントの方がよりあり得るわ。
いやいやそういう構成ではExcelでDB処理には該当しないというなら、ExcelでDB処理とはExcel単体でのDB処理ということになるから、それに対しての比較対象にSQLサーバー持って来たの?という話になる。
この場合もやっぱりセンスね―と言ってやる。
だからそもそもの話に反論としてSQLサーバーを挙げるってことはExcelフロントではないということを意味するんだろう。
つまりOffice系では無く、開発系で組むという話だろう。
Accessで済むようもん、場合によってはExcelで済むようもんをC#とかを使って組むの?
部署内での打ち合わせ資料をWordで作ると言ったらPagemakerの方が良いと言われた気分だわ。
最初に「今Accessを使う意味」とか、言い出した奴が都合が悪くなると人のことを上から目線だとか言い出すからなあ。
そもそもの話はAccessにしちまうからExcelでDB処理することは多く無いって話から始まっている。
(実際は結構あるけどAccessと食い合うって話)
最初から、バックエンドSQLサーバーでフロントがExcelって話なら、SQLサーバーじゃなくて正にExcelでDB処理の話になって、俺の主張に一致するから反論にならん。それとも絶対にExcelフロントでAccessフロントはあり得ないって話ならもう一度センスね―と言ってやる。
Excelフロントはあり得るけどAccessフロントの方がよりあり得るわ。
いやいやそういう構成ではExcelでDB処理には該当しないというなら、ExcelでDB処理とはExcel単体でのDB処理ということになるから、それに対しての比較対象にSQLサーバー持って来たの?という話になる。
この場合もやっぱりセンスね―と言ってやる。
だからそもそもの話に反論としてSQLサーバーを挙げるってことはExcelフロントではないということを意味するんだろう。
つまりOffice系では無く、開発系で組むという話だろう。
Accessで済むようもん、場合によってはExcelで済むようもんをC#とかを使って組むの?
部署内での打ち合わせ資料をWordで作ると言ったらPagemakerの方が良いと言われた気分だわ。
853デフォルトの名無しさん (ワッチョイ cbda-/kwh)
2019/03/11(月) 21:56:59.54ID:SWNQzsKE0 accessが好きとか嫌いとか最初に言い出したのは誰なのかしら
854デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/11(月) 22:03:37.96ID:tsrenNBW0855デフォルトの名無しさん (ワッチョイ b78e-mXZC)
2019/03/11(月) 22:45:47.44ID:JOj7lbWG0 >>854
馬鹿は死ねよ
馬鹿は死ねよ
856デフォルトの名無しさん (ワッチョイ a3e6-uGU8)
2019/03/11(月) 23:03:46.33ID:tJkNrW1I0 >>854
フロントがExcel程度でなんとかなるデータならAccessで十分だろ
すでに大量のデータがSQLServerに溜まっているならそっち使えばいいけど
Excelでデータ入力とか考えただけでも吐きそう
フロントがExcel程度でなんとかなるデータならAccessで十分だろ
すでに大量のデータがSQLServerに溜まっているならそっち使えばいいけど
Excelでデータ入力とか考えただけでも吐きそう
857デフォルトの名無しさん (ワッチョイ 7234-pA/6)
2019/03/11(月) 23:17:24.96ID:sG7ktWvJ0 まだやってんのかよ
858デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/11(月) 23:24:53.12ID:tsrenNBW0859デフォルトの名無しさん (ワッチョイ a3e6-uGU8)
2019/03/11(月) 23:31:06.64ID:tJkNrW1I0 二人以上でAccess使うなんて想像してなかったわ。すまん
860デフォルトの名無しさん (ワッチョイ a701-rbBm)
2019/03/12(火) 01:08:58.03ID:aDT3+eco0861デフォルトの名無しさん (ワッチョイ 7335-uGU8)
2019/03/12(火) 01:16:33.47ID:VCAYIPgk0 あの〜そろそろ〜
862デフォルトの名無しさん (ワッチョイ b78e-mXZC)
2019/03/12(火) 01:28:26.03ID:Ed2A5qJf0 ID:tsrenNBW0
馬鹿は早く死ねよ
馬鹿は早く死ねよ
863デフォルトの名無しさん (アークセー Sxc7-sOih)
2019/03/12(火) 01:58:18.19ID:ZdQx8dmlx 端から見てると何でこの人たちがVBAやらされる羽目になってるのか分かるよね
864デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/12(火) 06:19:34.26ID:bIQY567R0 むしろこんな奴等に何かやらせる羽目になってる上司に同情するわ
865デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 07:21:53.89ID:hut6v0dp0 弊社では無理です
866デフォルトの名無しさん (JP 0H6e-q+B7)
2019/03/12(火) 07:54:30.64ID:HcsazPCZH 2日ぶりに覗いたらまだ同じ話してて草
867デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 08:15:48.17ID:hut6v0dp0 うちなんかSQLServer導入して部署内誰でも使えるようにセッティングしてるのにずっとAccess使い続けてる。
Excel VBAからADOで繋げてるパターンなんで移行は手間じゃないと思うんだけど2〜3人が試しに使い始めただけ。
思い通りになんていかないよ。
社内稟議通した人がお気の毒w
Excel VBAからADOで繋げてるパターンなんで移行は手間じゃないと思うんだけど2〜3人が試しに使い始めただけ。
思い通りになんていかないよ。
社内稟議通した人がお気の毒w
868デフォルトの名無しさん (スプッッ Sd52-ekDA)
2019/03/12(火) 08:18:57.13ID:xgWEcpqAd869デフォルトの名無しさん (スプッッ Sd52-ekDA)
2019/03/12(火) 08:24:06.51ID:xgWEcpqAd870デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)
2019/03/12(火) 10:47:16.64ID:InKVz4tPM >>867
それはね、ローカルに置いてる(としとこう)Accessの中に人に見せられないデータがあるからだよw
それはね、ローカルに置いてる(としとこう)Accessの中に人に見せられないデータがあるからだよw
871デフォルトの名無しさん (ドコグロ MMea-DUKr)
2019/03/12(火) 12:45:42.87ID:fAXK62aoM >>867
そもそもそれエンジンの話なのか帳票とかのデザインの話なのかはっきりしてくれ
あと人は今困ってないなら移行なんてしないよ、トラブル招くかもしれないしな
移行させたいならAccess使用禁止ぐらいしないとダメ
どうせ導入した奴もそこまで腹くくってないだろ
そもそもそれエンジンの話なのか帳票とかのデザインの話なのかはっきりしてくれ
あと人は今困ってないなら移行なんてしないよ、トラブル招くかもしれないしな
移行させたいならAccess使用禁止ぐらいしないとダメ
どうせ導入した奴もそこまで腹くくってないだろ
872デフォルトの名無しさん (ブーイモ MMdb-4aR2)
2019/03/12(火) 13:22:50.41ID:Kg1wec9nM >>870
本当にあったりしてなw
本当にあったりしてなw
873デフォルトの名無しさん (ラクペッ MMdf-/Er5)
2019/03/12(火) 15:31:02.26ID:4U4zzI9jM874デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/12(火) 18:07:30.07ID:0BPWRBQDa >>867
もしかしてクライアントサイドの管理ツールとか知らないのでは?
もしかしてクライアントサイドの管理ツールとか知らないのでは?
875デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 21:59:22.23ID:hut6v0dp0876デフォルトの名無しさん (ワッチョイ a701-rbBm)
2019/03/12(火) 22:19:10.50ID:aDT3+eco0 >>875
移行するメリットがないとねぇ
レコード数が少ないと速度なんてほとんど変わらないし…
100万レコードでも、きちんと作られてればAccessでも十分実用になるし…
まずは、めちゃ処理時間がかかるやつ一つを移行。ストアド作り込んで速くなるのを見せるとか。
せっかくSQLServer使うなら、ストアド使わないと勿体ない。ただレコード持ってるだけの箱になってしまう。
ストアドはとっつきにくいと思うが、レコードをこねくり回すような時間かかる処理には効果絶大。
逆に言うと、軽いデータや処理のmdbは移行後回し。(というより、そんなの移行しなくてよろしい。労力に見合わない)
移行するメリットがないとねぇ
レコード数が少ないと速度なんてほとんど変わらないし…
100万レコードでも、きちんと作られてればAccessでも十分実用になるし…
まずは、めちゃ処理時間がかかるやつ一つを移行。ストアド作り込んで速くなるのを見せるとか。
せっかくSQLServer使うなら、ストアド使わないと勿体ない。ただレコード持ってるだけの箱になってしまう。
ストアドはとっつきにくいと思うが、レコードをこねくり回すような時間かかる処理には効果絶大。
逆に言うと、軽いデータや処理のmdbは移行後回し。(というより、そんなの移行しなくてよろしい。労力に見合わない)
877デフォルトの名無しさん (ワッチョイ a701-rbBm)
2019/03/12(火) 22:41:48.72ID:aDT3+eco0878デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 22:50:26.01ID:hut6v0dp0879デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/12(火) 23:05:56.66ID:0BPWRBQDa ストアドはRDBの設計思想に反する邪悪な存在なので可能な限り避けるべきです
最適化をかけにくいのでインデックスの効いたクエリに比べて速度も遅くなります
最適化をかけにくいのでインデックスの効いたクエリに比べて速度も遅くなります
880デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 23:30:38.78ID:hut6v0dp0 >>879
マジで!?
マジで!?
881デフォルトの名無しさん (アウアウエー Saaa-/Er5)
2019/03/12(火) 23:43:55.90ID:hqmBJoBXa Webシステムで全て開発側の手元にあるんならストアドなんか害悪しかないけど、
VBAだったらストアドやビューを最大限に活用して可能な限りDBMS側に寄せるべき
神VBAは作りっぱなしで逃げられるならいいけど、後々Excel側の変更やDB側のスキーマ変更で地獄を見ることになる
VBAだったらストアドやビューを最大限に活用して可能な限りDBMS側に寄せるべき
神VBAは作りっぱなしで逃げられるならいいけど、後々Excel側の変更やDB側のスキーマ変更で地獄を見ることになる
882デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/12(火) 23:46:34.37ID:hut6v0dp0 ExcelからAccessのデータを取得するきはこういうコードをクラス化してAccess立ち上げる必要ないようにした。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html
他言語使ってる人の事情は知らんけど似たような感じだと思う。
SQLサーバ向けのもADOだからインターフェース変えずにできた。
せっかくツールったんだから移行しろよ!
と思ってたけどもう何がいいのかわからんくなった。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html
他言語使ってる人の事情は知らんけど似たような感じだと思う。
SQLサーバ向けのもADOだからインターフェース変えずにできた。
せっかくツールったんだから移行しろよ!
と思ってたけどもう何がいいのかわからんくなった。
883デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/13(水) 00:27:28.10ID:lH3YwFhl0884デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/13(水) 00:29:37.94ID:lH3YwFhl0885デフォルトの名無しさん (アウアウエー Saaa-/Er5)
2019/03/13(水) 00:41:34.27ID:jknGRCgKa >>884
879が批判してるのは、ストアドの中でループしたり一時テーブルを安易に多用したりするような使い方じゃないのかな
879が批判してるのは、ストアドの中でループしたり一時テーブルを安易に多用したりするような使い方じゃないのかな
886デフォルトの名無しさん (ワッチョイ a3e6-/Er5)
2019/03/13(水) 00:41:51.32ID:wiEoxIAU0 >>882
そのめんどくさいselect文を作るのがaccessやssmsじゃね?
そのめんどくさいselect文を作るのがaccessやssmsじゃね?
887デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/13(水) 00:46:32.81ID:A37ahhw6a >>884
インデックスが効かないとは言ってませんが?
SQLなら期待される結果を返す範囲で最適化して高速化する余地があります
これはSQLが宣言的な言語だからできることです
最終的な答えが同じなら途中の結合や絞り込みを入れ替えたり省略することが可能です
逆にストアドは手続き型なので基本的に定義した順に処理が逐次実行されます
全く最適化できないわけではありませんが宣言的な言語と比べるとこの順序があるという性質のせいで制約が強く最適化のかかりが弱くなります
インデックスが効かないとは言ってませんが?
SQLなら期待される結果を返す範囲で最適化して高速化する余地があります
これはSQLが宣言的な言語だからできることです
最終的な答えが同じなら途中の結合や絞り込みを入れ替えたり省略することが可能です
逆にストアドは手続き型なので基本的に定義した順に処理が逐次実行されます
全く最適化できないわけではありませんが宣言的な言語と比べるとこの順序があるという性質のせいで制約が強く最適化のかかりが弱くなります
888デフォルトの名無しさん (アウアウエー Saaa-/Er5)
2019/03/13(水) 00:50:37.91ID:jknGRCgKa889デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/13(水) 00:52:52.41ID:lH3YwFhl0 >>885
変な使い方を前提にストアドが遅いとか言われても困る
変な使い方を前提にストアドが遅いとか言われても困る
890デフォルトの名無しさん (アウアウエー Saaa-/Er5)
2019/03/13(水) 00:55:59.30ID:jknGRCgKa >>889
実際、ぐるぐるSQLを書いちゃうような人はDBに寄せた設計になるとストアド使いたがるからね
実際、ぐるぐるSQLを書いちゃうような人はDBに寄せた設計になるとストアド使いたがるからね
891デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/13(水) 00:57:03.71ID:lH3YwFhl0 >>887
だからその逐次実行を行うのがクライアントなのかサーバーなのかが違うだけでしょ
そりゃストアドと単一のSQL比べたらストアドの方が遅いだろうけどクライアントが同様の処理すること思えば全体としては(ちゃんと設計されてりゃ)速くなるでしょ
だからその逐次実行を行うのがクライアントなのかサーバーなのかが違うだけでしょ
そりゃストアドと単一のSQL比べたらストアドの方が遅いだろうけどクライアントが同様の処理すること思えば全体としては(ちゃんと設計されてりゃ)速くなるでしょ
892デフォルトの名無しさん (ワッチョイ a3e6-/Er5)
2019/03/13(水) 00:59:49.50ID:wiEoxIAU0 >>891
SQLをコンパイルする必要がないからストアードの方が速くね?
SQLをコンパイルする必要がないからストアードの方が速くね?
893デフォルトの名無しさん (ドコグロ MMb3-/Er5)
2019/03/13(水) 01:13:08.97ID:GE2OVSGdM894デフォルトの名無しさん (アウアウエー Saaa-/Er5)
2019/03/13(水) 01:22:09.36ID:jknGRCgKa そもそもSQLの発行がパフォーマンスに響くような状況はSQLの粒度が小さすぎる
大抵そういう時はうまく纏めれば一桁速くなる
大抵そういう時はうまく纏めれば一桁速くなる
895デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/13(水) 01:32:35.47ID:A37ahhw6a >>891
アプリケーションとストアドの比較をしているのではなく同じ結果をもたらすSQLとストアドの比較をして言った
そもそもアプリケーションに書かれたビジネスロジックをそのままストアドに移植する時点で論外なので比較する発想がなかった
アプリケーションとストアドの比較をしているのではなく同じ結果をもたらすSQLとストアドの比較をして言った
そもそもアプリケーションに書かれたビジネスロジックをそのままストアドに移植する時点で論外なので比較する発想がなかった
896デフォルトの名無しさん (ワッチョイ 1201-DUKr)
2019/03/13(水) 04:57:47.34ID:lH3YwFhl0897デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/13(水) 06:19:07.90ID:A37ahhw6a >>896
残念ながらありえます
しかも少なくありません
単にSQLが苦手な人
ストアドの方が速いと思ってる人
深く考えずアプリケーションコードストアドに移植してしまう人
SQLでいいのにストアドを書いてしまう人というのは何処にでも居ます
残念ながらありえます
しかも少なくありません
単にSQLが苦手な人
ストアドの方が速いと思ってる人
深く考えずアプリケーションコードストアドに移植してしまう人
SQLでいいのにストアドを書いてしまう人というのは何処にでも居ます
898デフォルトの名無しさん (ドコグロ MMb3-DUKr)
2019/03/13(水) 06:45:04.68ID:JacIk+SfM899デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/13(水) 07:00:38.50ID:A37ahhw6a >>898
このスレッドにもいましたよね
このスレッドにもいましたよね
900デフォルトの名無しさん (ドコグロ MMb3-DUKr)
2019/03/13(水) 07:12:08.08ID:JacIk+SfM 何を言いたいのかさっぱりわからんw
901デフォルトの名無しさん (アウアウウー Sac3-cVal)
2019/03/13(水) 08:04:29.56ID:A37ahhw6a 煽りか
902デフォルトの名無しさん (ワッチョイ 9290-uGU8)
2019/03/13(水) 10:36:45.92ID:4v7XhTis0 一体いつまで同じ話をぐだぐだ続けるつもり?
プログラマ板のどっか雑談スレでやれよ低能プログラマどもは
プログラマ板のどっか雑談スレでやれよ低能プログラマどもは
903デフォルトの名無しさん (ブーイモ MM0e-ehMm)
2019/03/13(水) 11:12:26.48ID:JQlBKVP4M だってここ以外ではマウントとれないんだもの
904デフォルトの名無しさん (ワッチョイ 1201-ouaW)
2019/03/13(水) 15:18:57.45ID:6SLKDaoM0 セルA1に =aaa と書き込んで数式エラーを作っておきます
その上で
Dim ary() As Variant
ary = Activesheet.Range("A1:A10")
MsgBox ary(1, 1)
結果:
型が一致しません
ary(1, 1)をVariant型の変数に代入する場合は何も起きないので
MsgBoxに表示するときに内部的にString型に変換するため
エラーがおきるのだろうと思っています
それはともかく、ary(1, 1) からエラー値を削除したいのですが
ary(1, 1) = ""
MsgBox ary(1, 1)
とやってもダメでエラーが出ます
ary(1, 1) を何もない状態にするにはどうしたらいいですか?
ary(1, 1)はこの先いろいろな操作をすることになるため、そのたびに
どこに隠れているか分からない数式エラーをチェックするのは大変なのです
その上で
Dim ary() As Variant
ary = Activesheet.Range("A1:A10")
MsgBox ary(1, 1)
結果:
型が一致しません
ary(1, 1)をVariant型の変数に代入する場合は何も起きないので
MsgBoxに表示するときに内部的にString型に変換するため
エラーがおきるのだろうと思っています
それはともかく、ary(1, 1) からエラー値を削除したいのですが
ary(1, 1) = ""
MsgBox ary(1, 1)
とやってもダメでエラーが出ます
ary(1, 1) を何もない状態にするにはどうしたらいいですか?
ary(1, 1)はこの先いろいろな操作をすることになるため、そのたびに
どこに隠れているか分からない数式エラーをチェックするのは大変なのです
905デフォルトの名無しさん (ワッチョイ 1201-ouaW)
2019/03/13(水) 15:24:34.25ID:6SLKDaoM0906デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/13(水) 15:25:55.52ID:ril+FLd/0 とりあえず
Dim ary() As Variant
はエラーが出るので
Dim ary As Variant
に変更している
Dim ary() As Variant
はエラーが出るので
Dim ary As Variant
に変更している
907デフォルトの名無しさん (ワッチョイ 9212-UKFF)
2019/03/13(水) 15:26:27.13ID:YE/558h40 あー、荒れてるところ申し訳ないのですが、
ちょっと、質問…いいですかね…
初心者なんでさっぱり文が思いつかないから
例文みたいなのを作ってほしいんですけど…
B3:F○○の表があります。
・B3:F10にそれぞれセルに名前を付けていきたい。
・B3を「_0」としてC3「_2」というように、+2ずつ、
F3「_8」までいったらB4「_10」と同じように+2して、
最後のF10までやりたい。
こんな感じのってできますか??
他のシートでも同様の作業を行ないたくて、
B3から、F列の表で、数字が入力されている部分だけ名前をつけたいから、
if文とかで、数字が入力されていなかったら名前をつけるのを終わるみたいなできたら嬉しいです。
ちょっと、質問…いいですかね…
初心者なんでさっぱり文が思いつかないから
例文みたいなのを作ってほしいんですけど…
B3:F○○の表があります。
・B3:F10にそれぞれセルに名前を付けていきたい。
・B3を「_0」としてC3「_2」というように、+2ずつ、
F3「_8」までいったらB4「_10」と同じように+2して、
最後のF10までやりたい。
こんな感じのってできますか??
他のシートでも同様の作業を行ないたくて、
B3から、F列の表で、数字が入力されている部分だけ名前をつけたいから、
if文とかで、数字が入力されていなかったら名前をつけるのを終わるみたいなできたら嬉しいです。
908デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/13(水) 15:27:20.71ID:ril+FLd/0 >>905
あ、はい。
あ、はい。
909デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/13(水) 15:38:57.02ID:ril+FLd/0 >>907
先に範囲選択してからマクロ実行
セルに何も入ってない場合に終了(数字かどうかは判定していない)
Sub Macro1()
番号 = 0
For Each セル In Selection
If セル.Value = "" Then
Exit Sub
Else
ActiveWorkbook.Names.Add Name:="_" & 番号, RefersTo:="=" & セル.Address
番号 = 番号 + 2
End If
Next
End Sub
先に範囲選択してからマクロ実行
セルに何も入ってない場合に終了(数字かどうかは判定していない)
Sub Macro1()
番号 = 0
For Each セル In Selection
If セル.Value = "" Then
Exit Sub
Else
ActiveWorkbook.Names.Add Name:="_" & 番号, RefersTo:="=" & セル.Address
番号 = 番号 + 2
End If
Next
End Sub
910デフォルトの名無しさん (ワッチョイ 12e7-+lbj)
2019/03/13(水) 16:22:51.30ID:kv9h9xOp0 以前、ifの条件に合わない時に実行したい時はthenに続けてelseと書いて実行したい内容を書くよりも、条件をnotで括った方が処理が速いと言われました
実際に計測したら確かに僅かな差が有ったのですが何故なのでしょうか
実際に計測したら確かに僅かな差が有ったのですが何故なのでしょうか
911デフォルトの名無しさん (スップ Sd32-UKFF)
2019/03/13(水) 17:11:51.63ID:mnfDUUl9d912デフォルトの名無しさん (アークセー Sxc7-sOih)
2019/03/13(水) 20:59:56.96ID:p9thMYjCx >>910
Ifブロックは先頭の条件から逐次Boolean評価していって、一度Trueと判定されるとそこで条件を満たす場合の処理を実行し、残りの条件は評価しない仕組み
Elseのケースでの処理を実行するとなると、If条件とそれ以降のElseIf条件全てにおいてTrueが成立しないという条件が必要になる
なので、同じ条件数のIfブロックで比較すると、Elseより前に置かれた条件で処理を行わせる方がElse以降で処理させる場合よりも条件評価を行う回数が少なくなる
Ifブロックは先頭の条件から逐次Boolean評価していって、一度Trueと判定されるとそこで条件を満たす場合の処理を実行し、残りの条件は評価しない仕組み
Elseのケースでの処理を実行するとなると、If条件とそれ以降のElseIf条件全てにおいてTrueが成立しないという条件が必要になる
なので、同じ条件数のIfブロックで比較すると、Elseより前に置かれた条件で処理を行わせる方がElse以降で処理させる場合よりも条件評価を行う回数が少なくなる
913デフォルトの名無しさん (ワッチョイ 12e7-+lbj)
2019/03/13(水) 21:38:41.07ID:kv9h9xOp0 >>912
if not true then temp = 0
if true then else temp = 0
の二つのif文があった時、後者はtrueの評価の後にelseという評価をしてるという事でしょうか
if not true then temp = 0
if true then else temp = 0
の二つのif文があった時、後者はtrueの評価の後にelseという評価をしてるという事でしょうか
914デフォルトの名無しさん (オッペケ Src7-t9Np)
2019/03/13(水) 21:39:18.39ID:hyG2utnjr >>912
VBAはショートサーキットしないけどな
VBAはショートサーキットしないけどな
915デフォルトの名無しさん (ワッチョイ a701-rbBm)
2019/03/13(水) 21:40:15.61ID:uWZ9EglX0916デフォルトの名無しさん (ワッチョイ a701-rbBm)
2019/03/13(水) 21:43:27.67ID:uWZ9EglX0917デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)
2019/03/13(水) 21:53:50.43ID:Blqbf86O0 はっきりさせておきたい
VBAのとき、
if A and B and C then
ってなってるとき、A、B、C全部必ずチェックするのか、AがFALSEだったら、もうB、Cは無視するのか
どっち?
C言語みたいに、& と && みたいなandに2種類ないよね
VBAのとき、
if A and B and C then
ってなってるとき、A、B、C全部必ずチェックするのか、AがFALSEだったら、もうB、Cは無視するのか
どっち?
C言語みたいに、& と && みたいなandに2種類ないよね
918デフォルトの名無しさん (ワッチョイ b769-F75Q)
2019/03/13(水) 21:54:09.23ID:mPSJoOjB0 ショートサーキットないおかげでどんどんネストしてゆく…
919デフォルトの名無しさん (アウアウエー Saaa-CO8P)
2019/03/13(水) 22:06:55.44ID:x7l49vOfa ショートサーキットなんてねえよw
920デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)
2019/03/13(水) 22:10:56.03ID:Blqbf86O0 >>919
A、B、C全部必ずチェックすんだね
A、B、C全部必ずチェックすんだね
921デフォルトの名無しさん (ワッチョイ de8c-4aR2)
2019/03/13(水) 22:39:10.74ID:BElBpZaB0 >>917
そういう場合は
Select Case False
Case A, B, C
' !( A && B && C)の場合の処理
Case Else
' A && B && C の場合の処理
End Select
と書けばショートサーキットになるよ。
直感的じゃないけどね。
そういう場合は
Select Case False
Case A, B, C
' !( A && B && C)の場合の処理
Case Else
' A && B && C の場合の処理
End Select
と書けばショートサーキットになるよ。
直感的じゃないけどね。
922デフォルトの名無しさん (ワッチョイ f2bc-E/ds)
2019/03/13(水) 22:41:50.24ID:MTZmUGDO0 不慣れな初心者ですみません
リストシートのボタンを押すと
リストに入力していたデータ行数分書類型シートが作られるのですが
その作られた書類型シートにもそれぞれボタンがあり
各ボタンを押すとデータ送信用シートが作られる二段構造?になっています
書類シートからデータ送信用シートを作るには
いちいち各シートのボタンを1つずつ押さねばならず大変です
選択したシートのボタンを一括で押すことのできるマクロはありませんでしょうか…?
本当はリストからボタン1つで書類シートとデータ送信用シートができれば最高なのですが
そこまでの改変は難しそうで…
リストシートのボタンを押すと
リストに入力していたデータ行数分書類型シートが作られるのですが
その作られた書類型シートにもそれぞれボタンがあり
各ボタンを押すとデータ送信用シートが作られる二段構造?になっています
書類シートからデータ送信用シートを作るには
いちいち各シートのボタンを1つずつ押さねばならず大変です
選択したシートのボタンを一括で押すことのできるマクロはありませんでしょうか…?
本当はリストからボタン1つで書類シートとデータ送信用シートができれば最高なのですが
そこまでの改変は難しそうで…
923デフォルトの名無しさん (ワッチョイ a37c-DZHv)
2019/03/13(水) 22:46:46.17ID:TdaaOBVz0 >>922
それぞれのボタンに組まれたマクロを一つのボタンにまとめる
それぞれのボタンに組まれたマクロを一つのボタンにまとめる
924デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/13(水) 22:48:55.81ID:ril+FLd/0 作り直した方が遥かに楽なパターン
925デフォルトの名無しさん (ワッチョイ a37c-DZHv)
2019/03/13(水) 22:53:39.78ID:TdaaOBVz0 ごめん>>923は内容勘違いなので忘れて
一括で送信シート作るボタンを一つ作ってその中に、
forで選択した書類シート分回す
その書類シート内の送信シートを作るボタンClickを呼ぶ
Next
ってのはどうですか
一括で送信シート作るボタンを一つ作ってその中に、
forで選択した書類シート分回す
その書類シート内の送信シートを作るボタンClickを呼ぶ
Next
ってのはどうですか
926デフォルトの名無しさん (ワッチョイ 1e68-uGU8)
2019/03/13(水) 23:04:41.65ID:ril+FLd/0 >>922
見られちゃマズイデータ消してアップロードすれば誰かが作ってくれると思う
見られちゃマズイデータ消してアップロードすれば誰かが作ってくれると思う
927デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)
2019/03/13(水) 23:09:57.29ID:Blqbf86O0 >>921
そんな技があったのね。 ありがと
そんな技があったのね。 ありがと
928デフォルトの名無しさん (ワッチョイ 16da-/kwh)
2019/03/13(水) 23:13:30.84ID:nm3P40mI0 Clickを呼んでも、クリックするわけじゃないが、
クリックされちゃいそうで怖い。
クリックされちゃいそうで怖い。
929デフォルトの名無しさん (ワッチョイ a301-89K6)
2019/03/14(木) 01:04:48.38ID:D/xLb5AQ0 ピボットテーブルの集計結果使いたい時って今まで計算用シートで作成→せる決め打ちで取得 てやってたんだけど稀にカラムずれる
こういうのvbaだけで計算する関数とかないよね?
こういうのvbaだけで計算する関数とかないよね?
930デフォルトの名無しさん (アウアウエー Sadf-Cp6o)
2019/03/14(木) 01:36:50.73ID:lGFaI2Uva ピボットテーブルはアドホックな集計や分析に使うもんだろ
やることが決まってるんなら要らん
やることが決まってるんなら要らん
931デフォルトの名無しさん (ワッチョイ ff7c-YxN5)
2019/03/14(木) 04:24:36.89ID:ci+9chmP0 >>922
現物見てないからよくわからないんだけど、
リストシートや書類シートにボタンがついてるってのは
マクロ有効ブックの中にそれらのシートがあるってこと?
出来ればデータとマクロは別のブックに分離しといたほうが良いんじゃないかな。
そういう作りにしてれば改修も簡単になりそう。
現物見てないからよくわからないんだけど、
リストシートや書類シートにボタンがついてるってのは
マクロ有効ブックの中にそれらのシートがあるってこと?
出来ればデータとマクロは別のブックに分離しといたほうが良いんじゃないかな。
そういう作りにしてれば改修も簡単になりそう。
932デフォルトの名無しさん (スプッッ Sd1f-TAcj)
2019/03/14(木) 08:13:54.22ID:YBKQY7Hwd >>927
普通に
If A Then
If B Tnen
If C Then
A And B And Cの時の処理
EndIf
EndIf
EndIf
とするかな。
でも、これでの速度アップより、他に速度ダウン要因を減らした方が良さそう。
自分はIf A AndB And C Thenを気にせず使うな。
普通に
If A Then
If B Tnen
If C Then
A And B And Cの時の処理
EndIf
EndIf
EndIf
とするかな。
でも、これでの速度アップより、他に速度ダウン要因を減らした方が良さそう。
自分はIf A AndB And C Thenを気にせず使うな。
933デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)
2019/03/14(木) 08:39:22.13ID:ssjF3MUN0 >>932
Aが成り立たないときBを評価するとエラーで止まってしまう場合とかが悩ましいんだ
Aが成り立たないときBを評価するとエラーで止まってしまう場合とかが悩ましいんだ
934デフォルトの名無しさん (ドコグロ MM67-s8Gt)
2019/03/14(木) 09:04:59.36ID:Nl2IbJZtM >>921
それ保証されてるんだっけ?
それ保証されてるんだっけ?
935デフォルトの名無しさん (ブーイモ MMa7-HVS4)
2019/03/14(木) 09:13:36.88ID:laeryNOTM936デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)
2019/03/14(木) 09:57:51.33ID:ssjF3MUN0 >>934
一応言語規格上保証されてるね
一応言語規格上保証されてるね
937デフォルトの名無しさん (ドコグロ MM67-s8Gt)
2019/03/14(木) 10:12:09.94ID:Nl2IbJZtM >>936
どこかでドキュメント化されてる?
どこかでドキュメント化されてる?
938デフォルトの名無しさん (ワッチョイ 6f68-B/CD)
2019/03/14(木) 10:14:23.93ID:hUI7fwKe0 なんとなくだけど、VBAであまり離れ業を使わないほうが良いとは思う
939デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)
2019/03/14(木) 10:34:24.95ID:ssjF3MUN0 >>937
https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74
にある Published Version の PDF の 5.4.2.10 Select Case Statement に書かれている。
82ページの一番下二行だね。
https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74
にある Published Version の PDF の 5.4.2.10 Select Case Statement に書かれている。
82ページの一番下二行だね。
940デフォルトの名無しさん (スプッッ Sd1f-TAcj)
2019/03/14(木) 12:36:06.81ID:YBKQY7Hwd >>933
それは別の問題だよ。
そういう場合は最初からIf A And B And C Thenなんてやらない。
Bの評価でエラーが出ない時でも必ずBの評価をすることで速度ダウンするのを防ぐために
If A Then
If B Then
EndIf
EndIf
とするかと言えば、普段はやらないということ。
それで得られる速度アップより他の修正をした方がよっぽど効果有るだろ。
それは別の問題だよ。
そういう場合は最初からIf A And B And C Thenなんてやらない。
Bの評価でエラーが出ない時でも必ずBの評価をすることで速度ダウンするのを防ぐために
If A Then
If B Then
EndIf
EndIf
とするかと言えば、普段はやらないということ。
それで得られる速度アップより他の修正をした方がよっぽど効果有るだろ。
941デフォルトの名無しさん (スッップ Sd1f-sgCc)
2019/03/14(木) 12:53:41.51ID:CJd9O/FZd アスペかよ
942デフォルトの名無しさん (ワッチョイ ff01-s8Gt)
2019/03/14(木) 13:54:08.96ID:3EvgP48J0 >>939
なるほど、ちゃんと明記されてるんだな、ありがとう
なるほど、ちゃんと明記されてるんだな、ありがとう
943デフォルトの名無しさん (ワッチョイ ff01-s8Gt)
2019/03/14(木) 13:57:37.28ID:3EvgP48J0 短絡評価の件で速度云々言ってるのはID:YBKQY7Hwdだけだし
944デフォルトの名無しさん (オイコラミネオ MM47-fmdW)
2019/03/14(木) 14:46:00.52ID:zjiIQsBqM いやいや、役に立った(参考になった)ボタン押してますから
945デフォルトの名無しさん (ワッチョイ 13ce-B/CD)
2019/03/14(木) 15:13:23.25ID:ONwCUS8k0 ショートサーキットが活きてくるのは、Boolean型の関数を並べるときだな
If Func1() Or Func2() Then
みたいなケースだと実行時間がかなり違ってくることも起こりうる
If Func1() Or Func2() Then
みたいなケースだと実行時間がかなり違ってくることも起こりうる
946デフォルトの名無しさん (ワッチョイ 6f68-B/CD)
2019/03/14(木) 15:21:32.05ID:Cgb2oqJn0 標準関数の戻り値に文字列"false"が返ってくる言語があるらしい
947デフォルトの名無しさん (スプッッ Sd1f-TAcj)
2019/03/14(木) 19:08:46.48ID:YBKQY7Hwd948デフォルトの名無しさん (スプッッ Sd1f-TAcj)
2019/03/14(木) 19:08:54.68ID:YBKQY7Hwd949デフォルトの名無しさん (ワッチョイ ff01-jA9u)
2019/03/14(木) 19:33:40.81ID:3EvgP48J0950デフォルトの名無しさん (スプッッ Sd1f-TAcj)
2019/03/14(木) 19:58:36.19ID:YBKQY7Hwd951デフォルトの名無しさん (アウアウエー Sadf-sgCc)
2019/03/14(木) 20:19:12.86ID:RaCvNH3Xa もっと争え
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【悲報】日本人「俺以外の日本人が中国と戦ってくれるぞ!」 [616817505]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 維新の吉村代表「高市総理に中国総領事の国外退去を要請した。今後、知事として中国イベントには出席しない」 [359572271]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【悲報】あまりにも高市早苗の頭が悪過ぎて「これは確かに野党が配慮して質問するべきだったのでは」と結論が出てしまう [517791167]
