ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
探検
Excel VBA 質問スレ Part53
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/04/27(金) 19:02:38.39ID:+ocy8bIv715デフォルトの名無しさん
2018/05/08(火) 12:26:06.82ID:q/XYqxRj 正常に終了しても明示的に解放しない限りCOMへの参照が破棄される保証はない
とゆうおはなしやでw
とゆうおはなしやでw
716デフォルトの名無しさん
2018/05/08(火) 12:28:02.90ID:OM34GclB717デフォルトの名無しさん
2018/05/08(火) 12:38:19.90ID:fJWr41VM718デフォルトの名無しさん
2018/05/08(火) 12:55:25.46ID:q/XYqxRj719デフォルトの名無しさん
2018/05/08(火) 13:10:03.51ID:iJTBAWwZ >>717
rubyでExcel操作してるけど見たことない
rubyでExcel操作してるけど見たことない
720デフォルトの名無しさん
2018/05/08(火) 13:13:01.29ID:fJWr41VM これさぁ
よくある処理で読み込み終わったファイルは別フォルダに移動するときに解放されてなかったら一発で終わりだよねぇ
何年間もやっててそういうのに当たらなかったってラッキーだよねぇ
よくある処理で読み込み終わったファイルは別フォルダに移動するときに解放されてなかったら一発で終わりだよねぇ
何年間もやっててそういうのに当たらなかったってラッキーだよねぇ
721デフォルトの名無しさん
2018/05/08(火) 13:55:31.26ID:PZU+/yxW こんなクソみたいな言い合いで流されていく質問がかわいそう
722デフォルトの名無しさん
2018/05/08(火) 17:48:39.27ID:RLDOeZ1j723デフォルトの名無しさん
2018/05/08(火) 18:03:05.92ID:n71fT5S2 PSer VBAer
気色悪い造語まで作ってまぁ。
次は Rybyer か? C#er か?
気色悪い造語まで作ってまぁ。
次は Rybyer か? C#er か?
724デフォルトの名無しさん
2018/05/08(火) 18:23:15.70ID:8UeVEK10 PSer(笑)が居なければ皆 質問に答えてくれると思うんですがそれは…
725デフォルトの名無しさん
2018/05/08(火) 18:47:27.59ID:0Wckg3pR726デフォルトの名無しさん
2018/05/08(火) 18:51:24.86ID:RLDOeZ1j >>725
事実を述べただけなんだよなぁ
事実を述べただけなんだよなぁ
727デフォルトの名無しさん
2018/05/08(火) 19:12:51.48ID:xEIBE+xH PSと言えばポストスクリプト
でも頭の中にあるのはパーフェクトソルジャー
でも頭の中にあるのはパーフェクトソルジャー
728デフォルトの名無しさん
2018/05/08(火) 19:50:54.67ID:nQl5yvJD729デフォルトの名無しさん
2018/05/08(火) 19:51:44.12ID:26d0nyKi 築二十年の人ン家へ勝手に上がり込んで、トイレが遠いだのオール電化じゃないだの
床暖房じゃないだの言い募ってるのと一緒だな
ウォシュレットとかIHとかソーラーとかをつぶさに語る前に、自分が居座り強盗並みの行為を
してるのには気付けないのかな 勝手に上がり込んだのはマズイとは思わないのかな
床暖房じゃないだの言い募ってるのと一緒だな
ウォシュレットとかIHとかソーラーとかをつぶさに語る前に、自分が居座り強盗並みの行為を
してるのには気付けないのかな 勝手に上がり込んだのはマズイとは思わないのかな
730デフォルトの名無しさん
2018/05/08(火) 19:51:54.02ID:nQl5yvJD731デフォルトの名無しさん
2018/05/08(火) 19:55:04.51ID:nQl5yvJD732デフォルトの名無しさん
2018/05/08(火) 19:57:51.93ID:rh4JdchR そもそもお前の家じゃない
733デフォルトの名無しさん
2018/05/08(火) 20:07:26.39ID:3X1kagHT 結局VBAの質問スレに何しに来てるんだろうなぁこいつら
所詮は本来のスレで変なことばっかり言って追い出されて
仕方なく居場所を求めて荒らし回ってる口だろうなぁ
ああ見苦しい
所詮は本来のスレで変なことばっかり言って追い出されて
仕方なく居場所を求めて荒らし回ってる口だろうなぁ
ああ見苦しい
734デフォルトの名無しさん
2018/05/08(火) 20:52:10.15ID:26d0nyKi >>731
邪魔だ っつってんの 迷惑だと明言してる 喩えも判らんレベルか
わかりやすい例えにしたらガッツリ食い付いてくるんだな
グレードアップする時は自ら選びにいくわ 助言はその時に求めるわ、みずから
戦後の押し売りか トランクにゴム紐入れて売り歩く寅さんか
面白いこと言って見ろよ、ほら
思わず苦笑いするようなチャチャなら読み飛ばすが、連続居座りは御免被る
邪魔だ っつってんの 迷惑だと明言してる 喩えも判らんレベルか
わかりやすい例えにしたらガッツリ食い付いてくるんだな
グレードアップする時は自ら選びにいくわ 助言はその時に求めるわ、みずから
戦後の押し売りか トランクにゴム紐入れて売り歩く寅さんか
面白いこと言って見ろよ、ほら
思わず苦笑いするようなチャチャなら読み飛ばすが、連続居座りは御免被る
735デフォルトの名無しさん
2018/05/08(火) 21:19:47.00ID:OdLjkejS 勝手にスレを私物化してるお前も十分迷惑だよ
わざわざ長文で反応してんじゃねえよてめぇも出てけ
わざわざ長文で反応してんじゃねえよてめぇも出てけ
736デフォルトの名無しさん
2018/05/08(火) 21:44:06.06ID:J/XX4wKL 複数条件が重なるとどういった書き方をするのが良いのかわからず混乱してしまいます、何か良い方法がありましたら教えてください
例えば、変数x,y,zがありそれぞれ1-10までの数字が入る可能性があり、x,y,zそれぞれの値が違うと処理も違います
例えばx,y,zが1,1,1だと処理A 1,1,2だと処理B 1,2,1だと処理Kといった様子です
case文をネストして書いてしまっても良いんでしょうか?
例えば、変数x,y,zがありそれぞれ1-10までの数字が入る可能性があり、x,y,zそれぞれの値が違うと処理も違います
例えばx,y,zが1,1,1だと処理A 1,1,2だと処理B 1,2,1だと処理Kといった様子です
case文をネストして書いてしまっても良いんでしょうか?
737デフォルトの名無しさん
2018/05/08(火) 21:59:14.00ID:SsMGLoTY >>736
ネスとしてもいいし、if文の条件式のとこにandで複数条件書いてもいいんちゃう
ネスとしてもいいし、if文の条件式のとこにandで複数条件書いてもいいんちゃう
738デフォルトの名無しさん
2018/05/08(火) 22:05:22.53ID:UggVkA90739デフォルトの名無しさん
2018/05/08(火) 22:10:52.74ID:RuTuN8AF >>736
処理Xがx,y,zを変数として一般化できそうなら頑張って一般化して書く方法を考える
x,y,zによってどんな処理になるか論理的に決定できるなら
x,y,z -> 処理X を返すような関数を先に作って処理ごとにcaseで分岐
論理的に決定できない場合はkeyを"xyz"、valueが"処理X"みたいなDictionaryを用意する
x,y,zの組み合わせごとに処理が全部異なるなら、
index = 1000^(x-1) + 100^(y-1) + 10^(z-1)
みたいにindexを計算してindexごとにcaseで分岐させる
(10^3通りになってありえないケースだと思うけど)
思いつくのはこんなもん
caseネストするのは頭おかしなるで
処理Xがx,y,zを変数として一般化できそうなら頑張って一般化して書く方法を考える
x,y,zによってどんな処理になるか論理的に決定できるなら
x,y,z -> 処理X を返すような関数を先に作って処理ごとにcaseで分岐
論理的に決定できない場合はkeyを"xyz"、valueが"処理X"みたいなDictionaryを用意する
x,y,zの組み合わせごとに処理が全部異なるなら、
index = 1000^(x-1) + 100^(y-1) + 10^(z-1)
みたいにindexを計算してindexごとにcaseで分岐させる
(10^3通りになってありえないケースだと思うけど)
思いつくのはこんなもん
caseネストするのは頭おかしなるで
740デフォルトの名無しさん
2018/05/08(火) 22:15:38.92ID:RuTuN8AF 最後のindex計算するのは意味ねえな忘れてくれ
741デフォルトの名無しさん
2018/05/08(火) 22:19:59.22ID:fJWr41VM >>736
後ろに続く処理次第だねぇ
一つの役割内で短く細かく纏まる分岐ならそれでいいし
分岐先がちょっと大きくて役割も違う処理だったら関数やメソッドにして呼んでやればいいし
根幹部分で大きな処理に沢山分かれるようなら
分岐を行うところも関数化して処理番号を返却するようにして
その番号に該当する関数名を前もってコレクションに突っ込んでおいて
引っ張り出してCallByNameで呼ぶ方法もあるよぉ
他にもあるけどVBAではこのくらいが丁度いいと思うなぁ
後ろに続く処理次第だねぇ
一つの役割内で短く細かく纏まる分岐ならそれでいいし
分岐先がちょっと大きくて役割も違う処理だったら関数やメソッドにして呼んでやればいいし
根幹部分で大きな処理に沢山分かれるようなら
分岐を行うところも関数化して処理番号を返却するようにして
その番号に該当する関数名を前もってコレクションに突っ込んでおいて
引っ張り出してCallByNameで呼ぶ方法もあるよぉ
他にもあるけどVBAではこのくらいが丁度いいと思うなぁ
742デフォルトの名無しさん
2018/05/08(火) 22:27:45.23ID:X/JD7QJy743デフォルトの名無しさん
2018/05/08(火) 22:54:19.84 >>736
やりたい処理内容によるけど、こういう書き方をするとすっきり書けるかも
Dim sid As String
sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)
Select Case True
Case sid Like “1-1-1”
Call ProcA
Case sid Like “1-1-2”
Call ProcB
Case sid Like “1-2-1”
Call ProcK
Case sid Like “1-3-*”
Call ProcC
Case sid Like “[4,5,6]-[!1,2,3]-*”
Call ProcD
Case Else
Call ProcZ
End Select
パターンマッチングの記法はLike演算子のヘルプを見てね
やりたい処理内容によるけど、こういう書き方をするとすっきり書けるかも
Dim sid As String
sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)
Select Case True
Case sid Like “1-1-1”
Call ProcA
Case sid Like “1-1-2”
Call ProcB
Case sid Like “1-2-1”
Call ProcK
Case sid Like “1-3-*”
Call ProcC
Case sid Like “[4,5,6]-[!1,2,3]-*”
Call ProcD
Case Else
Call ProcZ
End Select
パターンマッチングの記法はLike演算子のヘルプを見てね
744デフォルトの名無しさん
2018/05/08(火) 23:00:52.76 >>743
あとは、
> sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)
を
sid = Format(x, “00”) & “-” & Format(y, “00”) & “-” & Format(z, “00”)
にして
“01-02-03” の形式にしたほうが
sid Like “##-15-##”
sid Like “9#-##-##”
みたいに書けて、より扱いやすいかも
あとは、
> sid = CStr(x) & “-” & CStr(y) & “-” & CStr(z)
を
sid = Format(x, “00”) & “-” & Format(y, “00”) & “-” & Format(z, “00”)
にして
“01-02-03” の形式にしたほうが
sid Like “##-15-##”
sid Like “9#-##-##”
みたいに書けて、より扱いやすいかも
745デフォルトの名無しさん
2018/05/08(火) 23:27:07.19ID:J/XX4wKL 皆さんありがとうございます
レス参考に考えてみます
後から小出しに条件変えるのはどうかと思ったんですが、例が少しアレだったのでもう少し状況説明します
x,y,z全て文字列型でxは4通り,yは12通り,zは18通り、後続処理はメール送信です
使用する既定の本文テンプレートのどれを使うかを変数で判定してます
テンプレート自体は8通りで変数の組み合わせによってはメール送信しない場合もあります
ただ規則性はほとんど無く、例ですが1[1-3]1はテンプレA。 1[4-6]1はテンプレB。 171は未送信。 181はテンプレAのようにごちゃごちゃしてます。
ただxが3.4の時は処理がそれぞれ固定の為、早期リターン?で処理を書き、xが1,2の場合は全部羅列しようかと思ってます
レス参考に考えてみます
後から小出しに条件変えるのはどうかと思ったんですが、例が少しアレだったのでもう少し状況説明します
x,y,z全て文字列型でxは4通り,yは12通り,zは18通り、後続処理はメール送信です
使用する既定の本文テンプレートのどれを使うかを変数で判定してます
テンプレート自体は8通りで変数の組み合わせによってはメール送信しない場合もあります
ただ規則性はほとんど無く、例ですが1[1-3]1はテンプレA。 1[4-6]1はテンプレB。 171は未送信。 181はテンプレAのようにごちゃごちゃしてます。
ただxが3.4の時は処理がそれぞれ固定の為、早期リターン?で処理を書き、xが1,2の場合は全部羅列しようかと思ってます
746デフォルトの名無しさん
2018/05/08(火) 23:35:13.46ID:FrjuwbIK >>695
いや、貼られたコード見てない。
アホらしいので。
>>699
正にその通り。
しかし、VBAが使われる場面を考えれば当然Excelでやるべき場面なわけ。
君がExcelである必要無いと言っても、仕事では他のExcel文書とやり取りしたり、その処理以外に関数とかExcelの便利機能も使うわけで。
組む処理以外の面でExcelであるべきということはたくさんある。
>>705
Excel起動せずにVBAを動かすのが普通か?
どれも共通してるのはPSやRubyの例はバッチ処理だろうけどVBAで想定されてるのはバッチ処理ではないということ。
あるいはバッチ処理もするけど、それ単体で使われることは想定されてない。
単体で使われる処理"も"書けるけど、Excel使った業務に沿って対応する処理を書けるのは有利だ。
それで、業務に沿ってExcel開いた状態で実行する処理についてはVBA以外だと不利じゃないの?ということ。
例えばADOでDBに繋げて取ってきたデータをそのExcel上でその場で見れるわけ。
もちろんC#とかでExcelを介在させないで組むなんてのもありだがExcelは会社のPCなら誰のPCにも入っているし、別のデータ(当然Excelのデータ)ともやり取りしやすい。
というか、開いた状態で、別のデータも表示されてる状態からのスタートだったりするからやり取りじゃないか。
いや、貼られたコード見てない。
アホらしいので。
>>699
正にその通り。
しかし、VBAが使われる場面を考えれば当然Excelでやるべき場面なわけ。
君がExcelである必要無いと言っても、仕事では他のExcel文書とやり取りしたり、その処理以外に関数とかExcelの便利機能も使うわけで。
組む処理以外の面でExcelであるべきということはたくさんある。
>>705
Excel起動せずにVBAを動かすのが普通か?
どれも共通してるのはPSやRubyの例はバッチ処理だろうけどVBAで想定されてるのはバッチ処理ではないということ。
あるいはバッチ処理もするけど、それ単体で使われることは想定されてない。
単体で使われる処理"も"書けるけど、Excel使った業務に沿って対応する処理を書けるのは有利だ。
それで、業務に沿ってExcel開いた状態で実行する処理についてはVBA以外だと不利じゃないの?ということ。
例えばADOでDBに繋げて取ってきたデータをそのExcel上でその場で見れるわけ。
もちろんC#とかでExcelを介在させないで組むなんてのもありだがExcelは会社のPCなら誰のPCにも入っているし、別のデータ(当然Excelのデータ)ともやり取りしやすい。
というか、開いた状態で、別のデータも表示されてる状態からのスタートだったりするからやり取りじゃないか。
747デフォルトの名無しさん
2018/05/08(火) 23:42:26.20ID:FrjuwbIK >>707
違う。そういう意味合いで開いた状態について言及したわけじゃない。
実際、VBAで書く処理はバッチ処理じゃなくて今表示されてる表に対しての処理だとか、バッチ処理でも今表示されてる表にバッチ処理の結果を組み合わせたりの場合が普通で、単純なバッチ処理なんて殆ど組むことが無い。
違う。そういう意味合いで開いた状態について言及したわけじゃない。
実際、VBAで書く処理はバッチ処理じゃなくて今表示されてる表に対しての処理だとか、バッチ処理でも今表示されてる表にバッチ処理の結果を組み合わせたりの場合が普通で、単純なバッチ処理なんて殆ど組むことが無い。
748デフォルトの名無しさん
2018/05/09(水) 00:00:09.89ID:Yu+xGlRu749デフォルトの名無しさん
2018/05/09(水) 00:19:49.71ID:w1k9kHe1 なんか「少なくともExcel上では〜」とか縄張り争いみたいになってるね。
自分はExcelに限らずVBA使ってるよ。例えばOutlook。これは常に立ち上がってるから。
Outlookのオブジェクトモデルなんて知らないし、メールとは全然関係ない処理で使う。
イミディエイトウィンドウをシェル代わりにしてワンライナーを書くのさ。
ExcelはIOが多めになったときにシートを使うくらいかな。
バッチ的な処理ももちろんVBAだ。
自分はExcelに限らずVBA使ってるよ。例えばOutlook。これは常に立ち上がってるから。
Outlookのオブジェクトモデルなんて知らないし、メールとは全然関係ない処理で使う。
イミディエイトウィンドウをシェル代わりにしてワンライナーを書くのさ。
ExcelはIOが多めになったときにシートを使うくらいかな。
バッチ的な処理ももちろんVBAだ。
750デフォルトの名無しさん
2018/05/09(水) 00:35:13.23 >>749
それは個人の趣味の範疇だから好きにすればって感じ
それは個人の趣味の範疇だから好きにすればって感じ
751デフォルトの名無しさん
2018/05/09(水) 02:52:59.97ID:fZf43uAK なんでこんなくだらない話をいつまでも続けてるのかわからないけど
ここはあなた達が何をしてるか発表する場じゃなくて、わからない人が質問をしてわかる人がそれに答える場なので
どれだけ良いコードが書けようがそんな事もわからないんじゃまともな仕事はできそうにないですね
ここはあなた達が何をしてるか発表する場じゃなくて、わからない人が質問をしてわかる人がそれに答える場なので
どれだけ良いコードが書けようがそんな事もわからないんじゃまともな仕事はできそうにないですね
752デフォルトの名無しさん
2018/05/09(水) 03:47:11.80ID:wUvS2pdo >>749
さすがにそれはPS最高君を見習ってもいいぞ
さすがにそれはPS最高君を見習ってもいいぞ
753デフォルトの名無しさん
2018/05/09(水) 04:08:41.95ID:DtKw0WOF 連休が終わったら話も終わるだろうと思って見てたけど、さてはお前らまともに仕事してないエアプログラマーだな?
754デフォルトの名無しさん
2018/05/09(水) 05:53:37.33ID:SERID1ot 変なのが来たときみんな触るからいけないんだよ
NGIDにしといて誰もレスつけなければそのうち勝手に消える
NGIDにしといて誰もレスつけなければそのうち勝手に消える
755デフォルトの名無しさん
2018/05/09(水) 06:04:55.40ID:SavMNDDu756デフォルトの名無しさん
2018/05/09(水) 06:57:27.89ID:SERID1ot757デフォルトの名無しさん
2018/05/09(水) 07:11:12.83ID:yKqvqHOX > NGIDにしといて誰もレスつけなければそのうち勝手に消える
>>756はバカと言うことだなww
>>756はバカと言うことだなww
758デフォルトの名無しさん
2018/05/09(水) 07:29:34.49ID:SERID1ot759デフォルトの名無しさん
2018/05/09(水) 08:48:12.99ID:u9lv0tHz >>745
スパムメール
スパムメール
760デフォルトの名無しさん
2018/05/09(水) 08:50:09.41ID:Yu+xGlRu どうやらExcel起動してPSで動かすことも可能という事がわかってない奴がいるらしい
761デフォルトの名無しさん
2018/05/09(水) 10:13:15.95ID:idFoGogH762デフォルトの名無しさん
2018/05/09(水) 10:27:49.21ID:Yu+xGlRu763デフォルトの名無しさん
2018/05/09(水) 11:03:26.74ID:idFoGogH >>762
いやぁ、VBScriptってCreateObjectでVBE内に直書きできるじゃないですか。
PSも似たような感じで中にかけると便利だなと思って。
PS1ファイルに記述するとして、たとえばExcel内のボタンやEventに割り付けるときって
具体的にどのようにするのでしょうか。
いやぁ、VBScriptってCreateObjectでVBE内に直書きできるじゃないですか。
PSも似たような感じで中にかけると便利だなと思って。
PS1ファイルに記述するとして、たとえばExcel内のボタンやEventに割り付けるときって
具体的にどのようにするのでしょうか。
764デフォルトの名無しさん
2018/05/09(水) 11:43:28.49ID:Yu+xGlRu >>763
powershellがcomサーバーに登録されてないから無理だね
WScript.Shellで無理やりできなくもなさそうだけど
ボタンやユーザー定義ワークシート関数とかのイベントハンドラが出てくるときは今のところVBAを使うしかない
以前のレスでも散々言われてるVBAの唯一のアドバンテージ
powershellがcomサーバーに登録されてないから無理だね
WScript.Shellで無理やりできなくもなさそうだけど
ボタンやユーザー定義ワークシート関数とかのイベントハンドラが出てくるときは今のところVBAを使うしかない
以前のレスでも散々言われてるVBAの唯一のアドバンテージ
765デフォルトの名無しさん
2018/05/09(水) 11:57:17.22ID:idFoGogH >>764
なるほど、外のファイルを直接叩くんですか。
中から呼ぶとすると、Shellコマンドで呼ぶ感じですか?
ちなみに管理ユーザ以外でPS1ファイル実行する際、Set-ExecutionPolicyでしたっけ、
これ設定されていない端末では一般ユーザは実行できましたっけ?
なるほど、外のファイルを直接叩くんですか。
中から呼ぶとすると、Shellコマンドで呼ぶ感じですか?
ちなみに管理ユーザ以外でPS1ファイル実行する際、Set-ExecutionPolicyでしたっけ、
これ設定されていない端末では一般ユーザは実行できましたっけ?
766デフォルトの名無しさん
2018/05/09(水) 12:10:21.66ID:Yu+xGlRu767デフォルトの名無しさん
2018/05/09(水) 12:22:14.29ID:yKqvqHOX 久々に後釣り宣言なんて見たわ w
768デフォルトの名無しさん
2018/05/09(水) 12:25:06.10ID:idFoGogH >>766
冷たいなぁ。もっとやさしくPowerShell啓蒙してくださいよ。
みんなにおすすめしたいから、わざわざこのスレにこられているんですよね?
Excel操作に詳しいPowerShell関連サイトでおすすめがあったら教えてください。
VBAとの比較とかあるとうれしいです。
冷たいなぁ。もっとやさしくPowerShell啓蒙してくださいよ。
みんなにおすすめしたいから、わざわざこのスレにこられているんですよね?
Excel操作に詳しいPowerShell関連サイトでおすすめがあったら教えてください。
VBAとの比較とかあるとうれしいです。
769デフォルトの名無しさん
2018/05/09(水) 12:26:57.73ID:idFoGogH >>767
後釣り宣言って?
後釣り宣言って?
770デフォルトの名無しさん
2018/05/09(水) 12:29:51.31ID:et5rpIq2771デフォルトの名無しさん
2018/05/09(水) 12:31:39.91ID:idFoGogH じゃぁ、話題を変えてVBAの質問です。
教えてください。
1.4万行の検索範囲セルx1.4万行の検索値の単純マッチングをMatch関数で行った場合、
約36secかかります。これを高速化しようと思い、前者TableをVariant型に投げ込んで
検索したところ、結果120secに延長してしまいました。
配列上で処理したほうがより高速に動くという認識だったのですが、どのように解釈すれば
よいでしょうか?
検索値、値はStringです。
教えてください。
1.4万行の検索範囲セルx1.4万行の検索値の単純マッチングをMatch関数で行った場合、
約36secかかります。これを高速化しようと思い、前者TableをVariant型に投げ込んで
検索したところ、結果120secに延長してしまいました。
配列上で処理したほうがより高速に動くという認識だったのですが、どのように解釈すれば
よいでしょうか?
検索値、値はStringです。
772デフォルトの名無しさん
2018/05/09(水) 12:40:19.25ID:3+WmT7VP >>771
ソートしたか?
ソートしたか?
773デフォルトの名無しさん
2018/05/09(水) 12:43:03.63ID:QVPn4o2T 後釣りの意味がわからないならググれ
どのレスのこと言ってるのかわからないならこのスレを「釣」で検索
どのレスのこと言ってるのかわからないならこのスレを「釣」で検索
774デフォルトの名無しさん
2018/05/09(水) 12:56:39.40ID:idFoGogH >>772
検索範囲を昇順ソートしてみました。結果、、
・Cell範囲の場合: 43sec
・配列の場合: 127sec
ん? 更に延びた。さっきのはキャッシュでも効いてたのかな?
Stringの中身は "ID-枝番" 書式の文字列です。
検索範囲を昇順ソートしてみました。結果、、
・Cell範囲の場合: 43sec
・配列の場合: 127sec
ん? 更に延びた。さっきのはキャッシュでも効いてたのかな?
Stringの中身は "ID-枝番" 書式の文字列です。
775デフォルトの名無しさん
2018/05/09(水) 14:17:26.27ID:3+WmT7VP >>774
検索アルゴリズムをバイナリサーチにしてないんじゃないの?
検索アルゴリズムをバイナリサーチにしてないんじゃないの?
776デフォルトの名無しさん
2018/05/09(水) 15:17:53.88ID:eDrKJyoy 初めまして。共有保護について教えていただけませんでしょうか。
共有保護解除→マクロ処理終了→共有保護設定をする方法を作ってみましたが問題がありました。
「On Error Goto」を入れるとエラー発生→共有保護設定後、一回閉じてまた開くと「共有」が消えてしまう。
色々試したけどダメでした。(「On Error Goto」を設定しないとうまくいく。)
Sub 共有保護解除設定()
Dim x As String:x=1
On Error GoTo myError
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ActiveWorkbook.UnprotectSharing Sharingpassword:="aaa"
Do: Sheets( x ).Delete: x = x + 1: Loop
myError:
ActiveWorkbook.ProtectSharing Sharingpassword:="aaa"
End Sub
共有保護解除→マクロ処理終了→共有保護設定をする方法を作ってみましたが問題がありました。
「On Error Goto」を入れるとエラー発生→共有保護設定後、一回閉じてまた開くと「共有」が消えてしまう。
色々試したけどダメでした。(「On Error Goto」を設定しないとうまくいく。)
Sub 共有保護解除設定()
Dim x As String:x=1
On Error GoTo myError
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ActiveWorkbook.UnprotectSharing Sharingpassword:="aaa"
Do: Sheets( x ).Delete: x = x + 1: Loop
myError:
ActiveWorkbook.ProtectSharing Sharingpassword:="aaa"
End Sub
777デフォルトの名無しさん
2018/05/09(水) 18:14:36.75ID:iSDGF1Po778デフォルトの名無しさん
2018/05/09(水) 18:16:21.44ID:moyciPZH779デフォルトの名無しさん
2018/05/09(水) 19:46:24.05ID:wUvS2pdo >>771
VBAは基本的にシングルスレッドで動く
今のワークシート関数とかは、条件が整えばマルチスレッドで動く
なので、必ずしもVBAの方が早くなるとは限らんのだよ
Match関数がどうなってるかは知らんがな
VBAは基本的にシングルスレッドで動く
今のワークシート関数とかは、条件が整えばマルチスレッドで動く
なので、必ずしもVBAの方が早くなるとは限らんのだよ
Match関数がどうなってるかは知らんがな
780デフォルトの名無しさん
2018/05/09(水) 19:58:04.93ID:hUIK0iNE 二分探索使ってないとか初歩的なことじゃなく?
781デフォルトの名無しさん
2018/05/09(水) 20:43:17.83ID:z3LuxVKv >>771
Variant配列には何が入ってるかわからんので最適化しにくい
Variant配列には何が入ってるかわからんので最適化しにくい
782デフォルトの名無しさん
2018/05/09(水) 20:59:13.98ID:HhkRUfwj このように答えがついても反応しない質問者がよくいるからQA以外の話題で盛り上がる。
ま、興味深い話題ならいいんだけどね。
ま、興味深い話題ならいいんだけどね。
783デフォルトの名無しさん
2018/05/09(水) 21:26:33.65ID:fZf43uAK >>777
ループの中じゃなくね?
ループの中じゃなくね?
784デフォルトの名無しさん
2018/05/09(水) 21:43:05.88785デフォルトの名無しさん
2018/05/09(水) 21:52:15.61ID:idFoGogH786デフォルトの名無しさん
2018/05/09(水) 21:53:17.93ID:idFoGogH >>779
メモリに乗せれば単純に早くなるわけではないんですね。
メモリに乗せれば単純に早くなるわけではないんですね。
787デフォルトの名無しさん
2018/05/09(水) 21:55:25.27ID:w1k9kHe1 >>786
配列のマッチングはどうやって書いたの?
配列のマッチングはどうやって書いたの?
788デフォルトの名無しさん
2018/05/09(水) 21:57:44.24ID:idFoGogH >>780
Match使うときはたいてい絶対一致でつかってました。
クロスマッチになっちゃうんでしたっけ?
ここのカキコみて、以前、高速Lookupは使ったことがあるのですが、、
半分うろ覚えです。
リストを昇順ソートして、第3引数を 1 にするだけじゃ
だめですよね。変な答えが返ってきます。
Match使うときはたいてい絶対一致でつかってました。
クロスマッチになっちゃうんでしたっけ?
ここのカキコみて、以前、高速Lookupは使ったことがあるのですが、、
半分うろ覚えです。
リストを昇順ソートして、第3引数を 1 にするだけじゃ
だめですよね。変な答えが返ってきます。
789デフォルトの名無しさん
2018/05/09(水) 21:58:30.50ID:idFoGogH >>781
そうですか。型かえてみようかな?
そうですか。型かえてみようかな?
790デフォルトの名無しさん
2018/05/09(水) 22:14:27.61ID:idFoGogH >>787
いろいろ省略してますが、こんな感じです。
Dim rngFdList as Range: Set rngFdList= Range( ** 以下略(調査表) **
Dim arrFdList as Variant: arrFdList = rngFdList
For each r In Range( ** 以下略(駆動表) **
With Application
iHit = .IfError( _
.Match(r.value, arrFdList, 0), _
0 _
)
End With
(処理...)
Next
いろいろ省略してますが、こんな感じです。
Dim rngFdList as Range: Set rngFdList= Range( ** 以下略(調査表) **
Dim arrFdList as Variant: arrFdList = rngFdList
For each r In Range( ** 以下略(駆動表) **
With Application
iHit = .IfError( _
.Match(r.value, arrFdList, 0), _
0 _
)
End With
(処理...)
Next
791デフォルトの名無しさん
2018/05/09(水) 22:19:47.47ID:w1k9kHe1792デフォルトの名無しさん
2018/05/09(水) 22:23:25.94ID:idFoGogH >>779
ああ、ワークシート上の関数と比較して、じゃなく、VBA上でMatch関数を使う際に
テーブルをRange指定するか、配列指定するかで速度が変わった、という話です。
これもマルチスレッドが関係します?
たぶんMatchの使い方がまずいんだと思いますが、、
ああ、ワークシート上の関数と比較して、じゃなく、VBA上でMatch関数を使う際に
テーブルをRange指定するか、配列指定するかで速度が変わった、という話です。
これもマルチスレッドが関係します?
たぶんMatchの使い方がまずいんだと思いますが、、
793デフォルトの名無しさん
2018/05/09(水) 22:25:05.08ID:idFoGogH794デフォルトの名無しさん
2018/05/09(水) 22:28:35.61ID:iSDGF1Po795デフォルトの名無しさん
2018/05/09(水) 22:49:17.51ID:w1k9kHe1796デフォルトの名無しさん
2018/05/10(木) 01:15:35.99ID:/NGeWAX7 エクセル2016や2013等の新しいエクセルで追加された関数を、
2010等の下位バージョンで動作させるような、
ユーザー定義関数が書かれたVBAモジュールを配布しているサイトってありますか?
検索の仕方が悪いのか、自分では見つけられませんでした。
2010等の下位バージョンで動作させるような、
ユーザー定義関数が書かれたVBAモジュールを配布しているサイトってありますか?
検索の仕方が悪いのか、自分では見つけられませんでした。
797デフォルトの名無しさん
2018/05/10(木) 06:25:28.16ID:hUon7v2K798デフォルトの名無しさん
2018/05/10(木) 06:42:21.45ID:n6BTi4dI >>796
ピンポイントで〇〇の関数を2010で使いたいと言うならまだしも2013/2016の関数って一言で言われてもなぁ
ピンポイントで〇〇の関数を2010で使いたいと言うならまだしも2013/2016の関数って一言で言われてもなぁ
799デフォルトの名無しさん
2018/05/10(木) 06:45:52.61800デフォルトの名無しさん
2018/05/10(木) 08:15:00.88ID:/JKhPozC801デフォルトの名無しさん
2018/05/10(木) 10:09:42.27ID:1RQmg1q/ 答えがついてもろくに反応しない質問者がいるからQA以外の話題で盛り上がる
ってのは本当だな
ってのは本当だな
802デフォルトの名無しさん
2018/05/10(木) 10:46:30.23ID:JA/wCecl803デフォルトの名無しさん
2018/05/10(木) 13:58:29.65ID:IeALN+vJ804デフォルトの名無しさん
2018/05/10(木) 13:58:57.48ID:IeALN+vJ805デフォルトの名無しさん
2018/05/10(木) 14:05:11.32ID:IeALN+vJ806デフォルトの名無しさん
2018/05/10(木) 14:06:13.75ID:IeALN+vJ >>805
あれ、安価ミス。799への回答でした。
あれ、安価ミス。799への回答でした。
807デフォルトの名無しさん
2018/05/10(木) 15:30:36.46ID:QBpsjCo6 SQLiteでいいじゃん
808デフォルトの名無しさん
2018/05/10(木) 16:51:36.95ID:jLma9UA8809デフォルトの名無しさん
2018/05/10(木) 17:47:50.99 >>805
このへん見るに、かなり高速化できそう
まあループよりハッシュのほうがそりゃあ圧倒的に速いに決まってるけど
https://excel-ubara.com/excelvba4/EXCEL268.html
このへん見るに、かなり高速化できそう
まあループよりハッシュのほうがそりゃあ圧倒的に速いに決まってるけど
https://excel-ubara.com/excelvba4/EXCEL268.html
810デフォルトの名無しさん
2018/05/10(木) 17:54:52.83ID:7DjALtvb エクセルマクロはやりたい放題なのにセキュリティとか片腹痛いわ
811デフォルトの名無しさん
2018/05/10(木) 19:14:27.72ID:39NqoQfJ Excel VBAで悪意のあるもの作るには本人の意思が必要。
外部ソフト入れるなら意図しないものが混入する可能性がある。
これぐらい理解できないのか?
外部ソフト入れるなら意図しないものが混入する可能性がある。
これぐらい理解できないのか?
812デフォルトの名無しさん
2018/05/10(木) 19:26:28.88ID:NzRSgzkJ オプソならすっきり解決
813デフォルトの名無しさん
2018/05/10(木) 20:08:04.83ID:F9pCnCSA >>811
内部犯やチョンボを考えられないあたりが事務員さんって感じで微笑ましい
内部犯やチョンボを考えられないあたりが事務員さんって感じで微笑ましい
814デフォルトの名無しさん
2018/05/10(木) 21:33:49.65ID:n6BTi4dI >>811
怪しいサイトからダウンロードするならまだわかるけどメジャーなオプソでそんなコードが見つかったら祭りになるわ w
怪しいサイトからダウンロードするならまだわかるけどメジャーなオプソでそんなコードが見つかったら祭りになるわ w
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 高市が早くあの発言を撤回しないと、中国からもっと大きな制裁が飛んでくるぞ [805596214]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【画像】髙市さん「無職のシンママ支援を手厚くするため、世帯年収900万円以上の控除をカットします🙂」 [881878332]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
