Excel VBA 質問スレ Part60

■ このスレッドは過去ログ倉庫に格納されています
2019/03/16(土) 20:39:09.64ID:6HWXzj9o
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/
2019/04/18(木) 23:47:17.30ID:NyxG62A4
>>765
何で遅いか調べないの?
外部リンクとか、シート間参照が多いとか
2019/04/18(木) 23:47:45.92ID:rY75T8tq
>>765
そうなのか
言語は多分C辺り、pythonは無いと思う
一度面談受けたら?分からない事がさすがに多すぎる
2019/04/18(木) 23:50:56.85ID:NyxG62A4
>>766
すまんアンカー間違えた
769デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:51:11.62ID:RfIDmYfE
>>767
Cだよなぁ、ポインタで挫折しちゃったけいけんがあるんだよなぁ。数字の羅列はやってても楽しくないんだよなぁ。グラフィックに実行結果出ないとつまらないんだよなぁ。
でも一生製造で終わりたくはないし…話ししてみようかなサンクス
770デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:51:26.61ID:RfIDmYfE
>>768
ええんやで
2019/04/18(木) 23:59:44.00ID:tULlneIt
>>764
Excel.Application複数起動してもダメなの?
2019/04/19(金) 05:04:11.19ID:F+IfR3tb
accessのテーブルに接続するデータテーブルをVBAでrefreshallした時に、
読み込み完了前に次の処理に進むのを止めることできますか?
stopで一時的に止めればいけるけれど、読み込み完了後に次処理に自動的に
進めたいです。
2019/04/19(金) 08:11:56.05ID:WxAK0tT/
>>771
たぶんできる。
>>764は思慮が足らないと思う。
774デフォルトの名無しさん
垢版 |
2019/04/19(金) 10:27:04.15ID:L5evqwYE
>>773
Excel2010までは簡単だったがExcel2013から複数インスタンスの起動は難しくなったようだな
ただ、所詮重い処理をそのままにして複数起動してももっと重くなるよな

そもそも、重い原因を確認しないと、自動計算を止めれば早くなる可能性もあるが
それをやっていいかもわからん
2019/04/19(金) 11:03:21.04ID:Bg8kiXU6
正直、余計なことをせずに静観しておいたほうが良い気はする
2019/04/19(金) 11:49:18.40ID:tnpUi0yI
これもそうだな 漠然とした話からは何も産まれない
2019/04/19(金) 13:51:24.35ID:ZnDHFpRl
けどこのスレの人間って、無駄話で罵り合いするの好きだよね w
2019/04/19(金) 14:22:48.38ID:L5evqwYE
漠然とした話から連想ゲームして、自分語りを始める
で、好きな事違うから無駄な話が続くんでない
2019/04/19(金) 15:58:50.09ID:k3MrA8ng
VBA界には有名人がいないから、いじる対象がないってのもある
他言語だとコミュニティの顔みたいな存在がちらほらいるけどVBAは活動自体ないからな
780デフォルトの名無しさん
垢版 |
2019/04/19(金) 18:35:20.89ID:bifIXaiQ
ないねぇ
オープンマインドじゃないし自分の考えが正論だと信じ込んでるから新しい発想は受け入れないもん
全部排除
2019/04/19(金) 19:33:45.34ID:F+IfR3tb
>>772
解決しました
2019/04/19(金) 21:09:28.46ID:+TCHgQUv
書道家にWord使ったほうが早いのにとか言っても仕方ないだろ?
VBAは伝統芸能なんだよ
2019/04/19(金) 21:28:42.21ID:hMAGCQp2
書道家だってWordくらい使うだろ
2019/04/19(金) 21:31:43.30ID:GnXLTXUb
しょれはどうか?
しょどうか?
2019/04/19(金) 22:09:23.17ID:muLZwW/F
>>780
オープンマインドってなんですか?
2019/04/20(土) 00:10:38.45ID:xcWVlBQQ
昇順で並べたデータ(日付など)の変わり目に一行挿入を繰り返すマクロは作れるかな?
セルの差分の列を作って0でないところに行挿入を考えてるんだが、他に何かないでしょうか先生方
2019/04/20(土) 00:19:14.02ID:qwsd80fG
>>786
上下のセルの内容が同じじゃなかったら挿入
2019/04/20(土) 00:30:38.72ID:xcWVlBQQ
>>787
これは早速素晴らしい案をありがとう!よほどシンプルに行けるわ
2019/04/20(土) 00:41:38.87ID:lNRl64h3
>>788
念の為、
for i 最終行 to 2 step -1
で回すんだぞ
790デフォルトの名無しさん
垢版 |
2019/04/20(土) 01:43:17.46ID:ojpyozsg
このスレだとプログラマではないひとの質問が書かれるか。
2019/04/20(土) 02:10:30.65ID:SAylvlqW
>>789
行がずれるから逆から回すということかな、助かりますありがとう!
2019/04/20(土) 02:37:10.84ID:lNRl64h3
>>790
そりゃそうだろう
vba使う層って事務のにーちゃんねーちゃん+できる営業マンが片手間に使うぐらい
793デフォルトの名無しさん
垢版 |
2019/04/20(土) 06:25:29.61ID:X4+f+v7V
VBAをプログラムだと思ってる人はいない
2019/04/20(土) 07:10:53.95ID:ZcIJD8m+
きみの勝手な思い込みだよ、
と思われたくないなら客観的な根拠をあげた方がいいね
2019/04/20(土) 08:13:49.91ID:tWWHyzwg
エクセルの画面が右上に飛んで行って、
画面に「どこいくね〜ん!」って表示させるのはどうでしょう?
2019/04/20(土) 08:27:11.00ID:9HZyCDJw
>>779
居るだろ。
君が知らないだけじゃね?
パッと10人くらいは思いつく。
797デフォルトの名無しさん
垢版 |
2019/04/20(土) 09:01:22.69ID:Khb9FcyX
>>796
例えば誰?
2019/04/20(土) 10:40:51.92ID:50ElbllH
>>797
聞いちゃいけない事ってあるだろ、ニタニタで我慢しろよ
2019/04/20(土) 11:00:20.54ID:hWWI2xiJ
どうせtwitterのキーワード検索にVBAって入れて出てきたやつとt.tanakaぐらいだろうよ
2019/04/20(土) 11:38:03.85ID:9HZyCDJw
Office田中さんはその内の1人だね。
あとはA○○○さん、k○○○○○○さん、魔○○○○○○さん、じ○○○○○○さん、熊○○○さん、K○○さん、き○○○さん、s○○○○さん、y○○○○○○さん、Y○○○○○○さんとか。

き○○○さんは今も活躍されてるけど今は見かけなくなった人が多いけどね。
.netの方へ移動された人もいるし。
ここ数年でVBAやりはじめた人じゃ知らないのも無理無いが。
2019/04/20(土) 11:40:06.78ID:9HZyCDJw
ああ、A○○○さんはA○○○○さんだった。
今はA○○○○○さんかな。
2019/04/20(土) 11:47:01.11ID:hWWI2xiJ
>>800
T○○○さんもI○○○○さんもいないじゃないか
2019/04/20(土) 11:49:12.54ID:lNRl64h3
名前は覚えてないな
サイト見たら大体思い出す
2019/04/20(土) 11:50:13.86ID:lNRl64h3
Office田中はサイトの修正点を送っても反映してくれないのがネック
後続のためにも直してくれ〜
2019/04/20(土) 12:06:15.09ID:hWWI2xiJ
解説系とライブラリ提供系に分けられるがそれなりに有用
しかしコミュニティを形成してるかと言うとちょっと
2019/04/20(土) 12:20:16.39ID:9HZyCDJw
>>802
I○○○○さんは想像つく。
けど、俺がいた所じゃ見かけたことが無い。
そういやtwitterで発言されてるらしいけど、俺VBA関連はtwitter見て無いんでな。
T○○○さんは想像つかないな。

田中さんは有名人だけどあの人のサイトでは教わることは無いな。
基本的に全て知ってることだから。
でも>>800で挙げた人達は全員俺よりかなりレベルが上だ。
807デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:22:08.90ID:n0GthIX7
VBAのworksheetfunction.vlookup関数で
該当の値がないときエラーを回避してそこの処理は無視させるにはどんなコードを書けばいいですか?
該当なしだと問答無用でエラーが出て止まってしまう。
2019/04/20(土) 12:27:26.17ID:9HZyCDJw
>>807
>>423からの流れを読んでね。
2019/04/20(土) 12:29:15.35ID:lNRl64h3
>>807
'forなどで回す時はラベル付けて飛ばす
Sub foo()
On Error GoTo err
For i = 1 To 5
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
'エラーじゃない時の処理
err:
'共通の処理。無ければ何も書かない
Next
End Sub

'使い捨てプログラムならonerrorで囲んでしまうという手もあるが、あまりオススメできない
Sub foo()
On Error Resume Next 'エラーを無視
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
On Error GoTo 0 '無視を無効化
End Sub
2019/04/20(土) 12:43:34.58ID:50ElbllH
>>809
お前ね何度書けば・・・
Sub foo()
On Error GoTo err
For i = 1 To 5
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
'エラーじゃない時の処理
goto 共通
err:
ERR時の処理
共通:
'共通の処理。無ければ何も書かない
Next
End Sub
2019/04/20(土) 13:02:36.97ID:lNRl64h3
>>810
ちゅまん
2019/04/20(土) 13:23:10.42ID:50ElbllH
>>811
てか、WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
見過ごしたけど、これ何?
2019/04/20(土) 14:04:44.42ID:lNRl64h3
>>812
引数を適当に入れただけ
2019/04/20(土) 14:36:59.58ID:tWWHyzwg
>>807
Trueならエラー起きないんじゃない?
815807
垢版 |
2019/04/20(土) 15:39:14.34ID:J0kjNxAu
on errorはセンスがないように感じるのですが。
わたしのセンスがon errorを使うことを許しません。
どうしたらいいですか?
こんなとき定番のような方法はないですか?
816デフォルトの名無しさん
垢版 |
2019/04/20(土) 15:49:30.44ID:Khb9FcyX
on errorで問題ないならそれで良いじゃん
そんな瑣末な事に時間を使わずにもっと生産性のある事に時間を使って組織や社会に貢献して下さい
2019/04/20(土) 15:56:13.97ID:9HZyCDJw
On Errorを使うのがセンス無い?
何処の初心者だ?

想定された動作なのに一緒くたにするのが嫌というならOn Errorの使い方を知らないだけだろ。
2019/04/20(土) 15:56:41.52ID:tgvbScEy
>>815
センスとか気になるならVBAに関わるのは止めた方が良いよ
2019/04/20(土) 15:58:32.36ID:tgvbScEy
>>815
ID:9HZyCDJwのキチガイが起こってるぞw
2019/04/20(土) 16:10:16.59ID:9HZyCDJw
>>819
センスの無いお前には言われたくね―なw
2019/04/20(土) 16:44:47.04ID:lNRl64h3
vbaにtrycatchが無い以上、onerrorで分岐するしかない
ただ今回に限って言えば、ワークシートにvlookup()を入れてその結果で分岐させることは可能
2019/04/20(土) 17:45:57.42ID:V7SrR6WW
こんな方法もある

Range("Z1") = WorksheetFunction.VLookup( 略 )

結果をどこか空いてるセルに入れてしまえば、エラーでも止まらずに結果を判定することができる
もうひとつ、試したことはないけど

WorksheetFunction.Iferror( WorksheetFunction.Vlookup ( 略

みたいな方法でもエラーで停止するのを回避できそうな気がするけど、Vlookupで止まるかなあ
2019/04/20(土) 17:53:15.47ID:V7SrR6WW
>>822
間違えた
こうだった
Range("Z1") = Application.VLookup( 略 )
2019/04/20(土) 17:58:05.16ID:yRp1LpZz
ちゃんとエラー番号調べて処理すりゃ良いだろ
2019/04/20(土) 18:00:15.98ID:KuIF036/
>>823
なんでセル
変数でいいじゃん
2019/04/20(土) 19:12:25.83ID:tWWHyzwg
じゃあLeft Outer Joinで。
2019/04/20(土) 19:43:05.64ID:qwsd80fG
>>807
・VlookupじゃなくてFindを使う
・事前にcountifとかエラー値が返らないもので存在確認してから使う
・worksheetfunctionの代わりにApplication.VLookupを使うと見つからなかった場合N/Aが返るが、旧バージョンの命令だからあまりおすすめしない
2019/04/21(日) 10:03:39.80ID:fPscZosh
質問者は、もっと具体的に書くべきだな、対応方法は多種多様にあるから
質問に対するベストな回答が、質問者の意図するベストの回答とは限らん
2019/04/21(日) 15:50:42.83ID:4kO5c1T5
もうね、On Error Resume Nextが嫌とか、宗教だと思うんですよ。
830デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:59:22.44ID:IGJB+uLA
んて訳の分からん面倒なコードを書くとかキチってるよね
2019/04/21(日) 16:03:59.70ID:h3OWzsvU
>>829
でも配列の次元すらOn Error 使わないと求められないってひどくないですか?
2019/04/21(日) 16:50:25.73ID:7jtZEDKn
>>831
何も分かってないんだから大人しく使いなよ
2019/04/21(日) 17:30:52.05ID:fXlSQHRa
>>832
ほう、じゃやり方を教えてくれよ
2019/04/21(日) 17:35:25.49ID:7jtZEDKn
>>833

だから文句言わずにonerrorを使えば良いだけなんだが
2019/04/21(日) 17:37:30.55ID:VJZKP3mE
>>831
お前の言ってることは結局、コ−ド書かないと動かないって酷くないですかってのと同じ。
2019/04/21(日) 17:51:22.14ID:fXlSQHRa
>>834
アスペか?
配列の次元を取得するのにOn Errorを使うなどという事自体は酷い。これは事実だ。
それに対して「何も分かってない」とdisる以上、On Errorを使わない真っ当な方法があると解釈するのが当然のこと。
2019/04/21(日) 18:06:20.94ID:jEVddS48
そこじゃないよ
vbaの酷い点はtrycatchが無い事
2019/04/21(日) 18:15:35.13ID:VJZKP3mE
>>836
酷い?なぜ?
と言ってるんだろう。
2019/04/21(日) 18:15:57.22ID:hbj2KyMO
客見ずにマウント取り合いってツルッパゲのする事 産毛すら無い
2019/04/21(日) 18:16:48.81ID:blm05+38
>>835
流石にそれはないわ
VB.NETやC#は普通にプロパティあるし
2019/04/21(日) 18:17:02.42ID:VJZKP3mE
>>837
書き方の問題じゃね?
実質同じことが出来るんじゃないの?
2019/04/21(日) 18:19:22.95ID:VJZKP3mE
>>840
それはVBAに無いものをあげつらっているだけ。
VB.netやC#に無いものをあげつらうことも出来るだろ。

そもそも何が酷いのかサッパリ分からん。
2019/04/21(日) 18:26:29.16ID:fXlSQHRa
On Error とか例外機構っていうのは、メモリ不足とかファイルの不在なんかのソフトウェア的には想定しづらい
例外的な事象に使うものなんだよ。
例えば「関数引数に対する事前条件がもし守られていなかったら」なんていう
ソフトウェア的に想定できるような事には例外を使うのべきじゃない。
ましてや配列の次元の取得なんてことに使うのは「ひどい」としか言いようがない。
それはセンスとかの問題じゃなくて常識だと思うよ。
2019/04/21(日) 18:33:13.89ID:VJZKP3mE
>>843
で?
何が酷いの?
2019/04/21(日) 18:33:17.05ID:uW2zy1zl
>>842
> そもそも何が酷いのかサッパリ分からん。
まじで言ってるの?
2019/04/21(日) 18:35:05.76ID:KjSHT9nF
もともと有る機能を組み合わせて
目的の動作をするように作るしかない
2019/04/21(日) 18:42:35.76ID:vxMMLTMP
>>845
そういう返しじゃなくて、教えてやれば
2019/04/21(日) 18:47:06.02ID:VJZKP3mE
例えば昔仕事で扱ったWin32APIのGetPrinterでは取得するPinterInfo2構造体のサイズを0にして渡して敢えて失敗させることによって正しい構造体のサイズを取得するなんてのがある。
再度正しいサイズで実行するやり方が想定されていて、そして失敗時はdllエラーも当然発生するなんてのが有るわけなんだが。

確かDevmode構造体を取得するする時に使うDocumentPropertiesも同じような使い方してたと思う。
2019/04/21(日) 18:48:35.29ID:VJZKP3mE
>>845
結局取得できる。
何も問題無い。

お前のオナニー以外は。
2019/04/21(日) 18:48:56.55ID:fXlSQHRa
>>844
まず次元の取得方が標準で用意されていない点が少しひどい。
さらにそのワークアラウンドがOn Error利用である点が一層酷い。
わかる?
これでキミもバッチリだ。
2019/04/21(日) 18:50:13.13ID:VJZKP3mE
>>847
>>832じゃねーから何も考えておらん。
2019/04/21(日) 18:51:26.42ID:VJZKP3mE
>>850
だからそれは無いものをあげつらっているだけ。
どんな言語にもあることだ。
2019/04/21(日) 19:11:57.22ID:jEVddS48
>>841
実質同じ事って言い出すと何でもアリになってしまう
onerrorしかないと可読性が大きく下がる

ところでEXCELで次元数を取得する機会って一度も無いんだけど、
よく使う計算なのか
2019/04/21(日) 19:15:35.07ID:sGJaU8ZR
>>853
可読性が下がる???
書き方が悪いんじゃ無いの?

そんなこと感じたことも無い。
2019/04/21(日) 19:17:57.47ID:sGJaU8ZR
>>853
多分、配列を初期化したかしてないかの話じゃないかと思うね。
UBoundでエラーが出る話だろう。
で、Sgnが嫌なんだろう。
2019/04/21(日) 19:35:22.79ID:uW2zy1zl
>>848
それはちゃんとドキュメント化されてるだろ
On Errorで次元を取得するのとはレベルが違うよ
動けばいいと言うレベルのコーダーならいいのかも知れないけど
2019/04/21(日) 19:54:31.81ID:sGJaU8ZR
>>856
何言ってるの?
On Errorしかないのが正式なら同じだし、
On Error以外に正式なものがあれば問題ないし、
同じことじゃねーかw
しかも後出ジャンケンかよw

結局言い掛かりもいいところだ。
2019/04/21(日) 20:04:00.06ID:fXlSQHRa
On Error 以外に配列の次元取得方法がないと決まった訳じゃなくて、よく知られてる方法がOn Error利用だってだけだが、
割り切ってAPIを呼んでいる人もいる。
859デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:08:00.46ID:x8017e7/
>>749
え、お前の会社って稟議書や経費精算の業務って全部署共通じゃないの?
その会社固有の業務だけど、部署間で使い回しの効く部分のことを言ってるんでしょ?
2019/04/21(日) 20:13:12.66ID:xKbBXXRb
>>843
とりあえず構造化例外処理すらない時代の言語にいってもしょうがない話
常識は時代で変わるんだよ
結局はVBAは古い時代の言語ってだけ

あと、配列の次元が知りたいとか設計が悪いとしか思えん
2019/04/21(日) 20:17:21.38ID:uW2zy1zl
>>857
はあ?
正式な方法がないって話だぞ
日本語理解できてないの?w
2019/04/21(日) 20:28:15.67ID:uW2zy1zl
>>860
> あと、配列の次元が知りたいとか設計が悪いとしか思えん
君には不要というだけの話
他の言語では普通に多次元配列用のライブラリとかある
2019/04/21(日) 20:32:45.02ID:f/u4okxX
次元数をライブラリに渡せばいいじゃん
2019/04/21(日) 21:03:13.26ID:fXlSQHRa
>>863
それさ...
平気で言うやつがいるけどさ...
ありえなくない?
2019/04/21(日) 21:04:52.40ID:uW2zy1zl
>>863
そうだよ
面倒かつバグの元だけどね
2019/04/21(日) 21:27:51.81ID:4kO5c1T5
じゃあどうしてもOn Errorが嫌だとして、
他の方法が幾つか出てるんだから、それ試しなよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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