Excel VBA 質問スレ Part74

レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ

※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
869デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/02(水) 00:11:32.60ID:WPZgN1IY0
>>866
>>2を読め
2022/02/02(水) 00:23:00.41ID:DCaD8SVN0
>>862
Document.getElementsByClassName()
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName

JavaScript なら、上のリンク先を見れば良いけど、
VBA では、書き方が異なるのかも
2022/02/02(水) 07:28:52.11ID:4nB6ciIN0
>>870
ここからボタンを押すにはなんと書けばいいのでしょうか、、、?
2022/02/02(水) 07:31:23.63ID:f98ebtked
この手の質問は悪用される可能性があるから回答するの躊躇するよね
2022/02/02(水) 07:47:54.37ID:DCaD8SVN0
Ruby で、Selenium WebDriver なら、
driver.要素.click だけど、VBA は知らない

検索してみれば?
2022/02/02(水) 07:49:20.30ID:Sif5VXmLd
>>871
学習目的なら他のサイトにしたら
875デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 10:07:41.90ID:wojfg/N6r
こんなところにアホな質問するヤツらは

ググる能力さえ無いということなのか?
2022/02/02(水) 11:13:58.55ID:QFn3Myrbd
ググったりして、その上で質問してると信じたい
スクレイピングとかブラウザの自動処理の質問だけど後者は悪用されるリスクが高いから答えたくないよね
2022/02/02(水) 11:17:43.23ID:wojfg/N6r
違うよ
処理完了MsgBox を表示させるなんて
素人でもググって1分で作れるだろ
2022/02/02(水) 11:38:37.34ID:Ro/5oidY0
>>875
最初は聞きまくった方が上達する
vbaはコードはアホみたいに簡単だけど、変なとこで敷居高いからな
2022/02/02(水) 11:54:30.15ID:34qMGLm0a
>>878
なら答えてやれよw
2022/02/02(水) 12:16:51.15ID:QFn3Myrbd
どんな言語もそうだけど敷居なんて高いと思ったことないよ
そもそもできないこともわからずにあれこれやろうとしてる人がそう思うだけでは
2022/02/02(水) 12:26:36.37ID:h1+1MA/aM
Excelを操作するための言語で
なぜブラウザを操作しているのか?
もっと良い方法があったのではないか?
手を動かす前にほんの少しは考えたほうが良かったのではないか?
2022/02/02(水) 12:27:02.36ID:43zIf/SN0
答えたい人は答えて答えたくない人はスルーしておけば良いと思う
答えないのに偉そうにしてる人は解らないのに偉そうにしている人と同じだし
2022/02/02(水) 12:38:30.87ID:PFGno9cc0
>>877
>>863の質問から、
「処理完了MsgBox を表示させる」ことが質問の本質だと思うわけね
2022/02/02(水) 12:58:44.52ID:h1+1MA/aM
お題は100個のif文を書き換えずにどれが処理されたかを当てるクイズね
885デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 13:00:17.51ID:mSZ4QSD40
各、End If の前に、IF 番号を変数として代入する
一行を記述する。
2022/02/02(水) 13:31:44.29ID:QFn3Myrbd
100個のif文はどういう出し方したいかにもよるけど抜ける考慮はさておき
dim msgno as long
if 条件1 then
 msgno=1
end if
if 条件2 then
 msgno=2
end if
call MsgBox(msgno)
ってやるだけでしょ
そうではなくどのif文が動いたかであれば適当に動いた個所がわかる変数を用意して同じように表示すればいいだけかと

>>882
リスクあるから答えないってのも立派な回答だと思うけどね
それを偉そうと思うのならそう思ってもらって結構だけど
2022/02/02(水) 13:31:48.33ID:Ro/5oidY0
>>863
フラグを外に出したほうが良いか考えたけど、もういいかなって
ってか本当にやりたいことはステップインって機能では

Sub foo()

bar = ""
If A1 <> "" Then
bar = bar & "If A1 <> """" Then"
bar = bar & vbCrLf
End If

If b1 <> "" Then
bar = bar & "If b1 <> """" Then"
bar = bar & vbCrLf
End If

MsgBox bar
End Sub

>>879
たまってたのね
2022/02/02(水) 13:41:28.48ID:h1+1MA/aM
それじゃあ >>868 の言うように
私の子がバカみたいじゃないですか!
889デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 13:42:27.00ID:mSZ4QSD40
IF 式自体を、MsgBox に表示したいのなら
100個の式の一覧をつくって、

Const にして100個記述すればよいかと。
そっちのほうが早い。
890デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:24:28.77ID:mSZ4QSD40
Const IF001 = "If A1 <> """" Then"
Const IF002 = "If B1 <> """" Then"
・・・
・・・(100個記述)

Sub Test()

 If A1 <> "" Then  〜
   RSLT = IF001
 End If

 If B1 <> "" Then  〜
   RSLT = IF002
 End If

・・・・・

 MsgBox RSLT
End Sub

こんな感じかな。
スマホだと書きづらいわ…
2022/02/02(水) 14:25:53.07ID:Ro/5oidY0
VBAってevalなかったっけ
あれをフラグに入れれば完結になるんだけどな
892デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:31:06.05ID:mSZ4QSD40
IF文を全部、シートにコピペ→ソートしてやれば
Const を100個書くのは、3分でできるかな。
2022/02/02(水) 14:32:20.83ID:h1+1MA/aM
もっとメンタリストみたいにスマートに当てる方法はないのですか?
あなた達のスキルにはがっかりデス
894デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:36:33.27ID:mSZ4QSD40
プロシージャの中身も全部、シートにコピペして
変数の一行を100個挿入してやれば
10分かからないね。
895デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 14:38:34.78ID:wojfg/N6r
くれくれ乞食がうぜえな

お前が書けよ
896デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 14:59:23.76ID:wojfg/N6r
そもそも、IF文100コってなんだよw
無能が書いたのか?
2022/02/02(水) 19:16:31.19ID:4nB6ciIN0
vbaでieの操作に成功しました
そして目的の通知バーを出してキー操作をさせるためにsendkeyを入力しているのですがExcelの方がキー操作されてしまいます
これは待ち時間がないからですか?
2022/02/02(水) 19:27:47.16ID:SglXGK6G0
そう思うならタイマとか入れてどうなったか書けよ
2022/02/02(水) 19:32:10.25ID:4mbUlsYd0
みんなは過去に作った関数ライブラリって、標準モジュールで
管理(インポートorエクスポート)しているかんじ?
クラスモジュールで管理したらだめ?
2022/02/02(水) 19:42:36.70ID:7tA3nICW0
>>897
もしライブラリの追加が可能な環境ならSeleniumbasic使った方が簡単で確実に動作するぞ
2022/02/02(水) 20:08:51.32ID:gm4r/aDEa
>>897
そりゃ、IEに送らないとだめだわなw
2022/02/02(水) 20:31:24.68ID:lYAq0wM7r
>>887
ありがとうございます。
まさに理想通りのやつです。助かりました
2022/02/02(水) 21:08:49.40ID:4bGMKLpw0
>>899
やり方は色々あると思うけどその方法なら
用途によって標準モジュールでもクラスモジュールでも使い分けで管理すればいいと思う。

別の方法としてはツールとしてスケルトンのブックを作っておいて
その中に色んなモジュールを入れておいてコピーして必要なもの以外は削除して使う方法、
アドインブックを作っておいて参照を切って使う方法とかもある。
2022/02/02(水) 21:12:04.30ID:sT0aKZOxd
めんどくさいから win+vでピン留めしてるわ
2022/02/02(水) 21:53:01.49ID:Ro/5oidY0
>>899
googleスプレッドシートに書いておいて、そこからコピペ
vbaの場合、関数というよりも、
高速化や最終行の取得など、関数よりも細かい部分で欲しいものが多い
2022/02/03(木) 00:25:24.67ID:qiNMcHyb0
>>903-905
なるほど。結構、人によってやり方が違うもんなんだな。
勉強になります!
2022/02/03(木) 00:38:31.96ID:tbES4bxer
そんなん、メモ帳でよくね?
2022/02/03(木) 00:41:32.16ID:tkF05tCjd
いつもの奴だぞ
2022/02/03(木) 03:56:49.74ID:32hviewX0
>>897
VBAならスクレイピングを組むのに視覚的に動作確認できるけど、

慣れてきたらぜひpythonでchrome環境で同じような処理を再現してほしい

事務職の現場でもieだと対応してないサイトとかあったりしてクローリングはchromeの方が重宝されるんだ
2022/02/03(木) 09:21:08.30ID:hHsifBpa0
メモ帳で思い出したが、秀丸エディタってどうなの??
知人が秀丸使え使えってうるさいから
2022/02/03(木) 09:30:09.86ID:Nd7AcXHS0
>>910
VSCodeが一般化した昨今ではオワコン化が進んでる気がする。
未だにテキストエディタとしては使ってるけど、コードエディタとしてはちょっと厳しいのではないかと思ってる。
2022/02/03(木) 10:19:29.46ID:Z7zOJE1W0
>>910
閉じてもそのまま再開できる+タブ表示+シンタックスハイライト(文字色)が出来るものなら何でも良いと思う
メモ帳に比べたら秀丸は普通に便利
俺はsublimetext、atom、eclipce使ってるけど、全部オワコン臭が凄い

VScodeはプラグイン多くて使いやすいと思う
2022/02/03(木) 12:04:33.95ID:hHsifBpa0
うーん。とりあえずメモ帳でいっかな。
なるべく無料のアプリ使いたいし。
ケチが一番!
2022/02/03(木) 12:06:23.06ID:pSX7/s4D0
サクラエディタ使いやすいね
2022/02/03(木) 12:11:30.24ID:c9OHCnJld
Notepad++だな
タブでもやれるけど左枠に文書一覧表示が自分には合ってた
縦タブやお気に入り機能のようにファイルを扱える
2022/02/03(木) 12:31:17.48ID:hHsifBpa0
若い連中にはOneNoteが流行りなのかなと
2022/02/03(木) 13:12:28.58ID:akJYuSUB0
>>913
VCcodeはタダだよ
メモ帳は多分一番難易度高いんじゃないかと思う 焦
2022/02/03(木) 13:49:08.79ID:Z7zOJE1W0
>>917
VScodeな

>>915
実は俺も使ってる。そんな便利な機能あったんだ!
https://i.imgur.com/AGCZICl.png

メモ代わりに使ってるワイ、無事死亡
2022/02/03(木) 13:54:30.19ID:advF3NKUM
VSCode入れていいような環境でわざわざVBAなんか使う必要なくね?自由が利くなら他にいくらでも選択肢あるじゃん
拡張機能で得体の知れないOSSがモリモリ入る超危険ソフトウェアだぞ
2022/02/03(木) 13:59:55.10ID:Z7zOJE1W0
>>919
中小企業はやっぱりエクセルになってしまうので・・・・
使わずに基幹ソフトだけで済めば、どれだけ良いことか

>超危険ソフトウェア
これ言い出すとあらゆるソフトが、ね
2022/02/03(木) 14:44:10.97ID:CBKIfEX60
VBA使う理由の半分はエクセルスプレッドシートとの連携だし
2022/02/03(木) 15:12:55.32ID:1AlNHnvf0
まあそうだね
Excel上でアウトプットしないならVBA以外がいいと思うは
2022/02/03(木) 15:39:55.47ID:OCu5/hNR0
EXCEL VBAのスレでスレ違いで悪いんだけど
話ついでに、VS.codeってトレースも出来るんだっけ?
2022/02/03(木) 16:14:10.02ID:c9OHCnJld
>>918

そうこれ
他に同じ事が出来るエディタも有るかもだけど軽いし今んとここれ一択だわ
925デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/03(木) 16:15:44.17ID:/TAKaoAN0
>>923
馬鹿は消えろ
2022/02/03(木) 16:28:13.06ID:OCu5/hNR0
自己解決。出来るね。

>>925
いきなりどうしたの?高齢期障害?
2022/02/03(木) 16:52:05.79ID:RpJDoNdN0
VSCode
https://i.imgur.com/qTVwaIg.png
2022/02/03(木) 17:47:56.55ID:hHsifBpa0
超危険と言えば昔のExcelってそうだった記憶ある
確かExcelを狙ったウィルスがあったような??
929デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/03(木) 18:15:38.24ID:/TAKaoAN0
>>926
自分の書き込みを読み返せ、馬鹿
2022/02/03(木) 18:24:46.05ID:akJYuSUB0
>>928
マクロウイルスのことかな
2022/02/03(木) 18:37:27.74ID:OCu5/hNR0
>>929
なんだやっぱりちょっとした話の流れに便乗した質問も許容出来ない高齢期障害の爺か
そんなにイライラしてると高血圧で脳溢血になるぞ
2022/02/03(木) 19:16:08.09ID:qZuoLMNW0
マクロだけだっけ、覚えてないわ
2022/02/03(木) 21:24:18.10ID:Mvkv/5Wv0
マクロウィルスはラルーだっけな?
それもあったけど、なんかのウィルスだった覚えがあります。
入力した値や文字列が文字化けするウィルス
2022/02/04(金) 17:29:19.29ID:/9L9fpIb0
10弱ほどの複数のシートの同じ行を、まとめて選択してDeleteしているのですが
シート1枚につき18秒ほど掛かるようになって、シート全体で3分以上Excelが固まった状態になります
行では無く範囲をUnionで選択しても速度は変わりませんでした
Clearcontentsすれば速いんですが、その後CSVにして読み込ませる必要があり
ただ消しただけだと、Deleteされた行までデータが存在する事になってしまっていて、支障があります
Clearcontentsした後、VBA側で空欄の行をDelete以外で詰める方法は無いでしょうか
2022/02/04(金) 17:34:09.06ID:/YpTyf1v0
↑コピペ
2022/02/04(金) 17:49:25.28ID:/9L9fpIb0
コピペって何が?
937デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/04(金) 18:12:14.30ID:pHRCGz/X0
>>931
読み返しても問題に気付かない馬鹿か?
938デフォルトの名無しさん (ワッチョイ 2a7c-21ac)
垢版 |
2022/02/04(金) 20:33:02.02ID:mH27gNw80
諸先輩方に質問です。
VBAの勉強を始めたばかりで的外れなところはご容赦ください。
BeforeRightClickで記述するということはわかりました。

シート3のE4:H14とN4:Q14の範囲において、
セルを右クリックで黄色く塗る、もういちど右クリックすると塗りつぶしを無色にする
ということをやりたいのです。
同時に右クリックのメニューも表示しなくなるようプログラムしたいです。
塗りつぶすセルは毎回異なるセルです。

日々の作業で特定の範囲内でセルを黄色く塗る作業が多くあります。
これをペンキボタンを使わずにできると作業効率があがるかと思います。
皆様には簡単すぎるかと思いますがどうぞよろしくお願いします。
2022/02/04(金) 20:40:52.99ID:AMkz1drU0
直の回答で無くてすまんがショートカットキー使った方が便利な気がする
2022/02/04(金) 21:30:10.84ID:wpZeT9bxM
>934
実際のコードはどんな感じ?
シート選択して該当行を削除してるなら、当然遅い。
2022/02/04(金) 21:33:46.72ID:wpZeT9bxM
>>938
右クリックにマクロ割り当てるより、既に回答ついてるようにキーボードショートカットに割り当てるか、イベントのダブルクリックなんかに割り当てる方が良いと思います。
他にも色々したいならユーザーフォームを使うのもありかと。
2022/02/04(金) 21:36:40.60ID:Zgf6kB1T0
>>938
多分こんな感じ

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
色 = 65535
If Not (Intersect(Target, Union(Range("E4:H14"), Range("N4:Q14"))) Is Nothing) Then
Cancel = True 'コンテキストメニューなし
If Target.Interior.Pattern = xlNone Then
Target.Interior.Color = 色
Else
Target.Interior.Pattern = xlNone
End If
Else
Cancel = False '範囲外ならコンテキストメニュー復帰
End If
End Sub
2022/02/04(金) 21:38:14.51ID:Zgf6kB1T0
一応書けたけど、バグったらごめんね~って感じはある
コンテキストメニューの非表示は、何か良くない事が起こる気がする
ショートカットに割り当てといたほうが良いと思うなぁ
944デフォルトの名無しさん (ワッチョイ 2a7c-21ac)
垢版 |
2022/02/04(金) 21:52:01.87ID:mH27gNw80
>>942
ありがとうございます、
試してみたところ、問題なく動きました。
素早いレス感謝します。

>>939
>>941
ありがとうございました。
ショートカットキーも併せて検討してみます
2022/02/04(金) 21:59:19.78ID:Zgf6kB1T0
>>942で一個だけ迷ったのが、
Cancel = True 'コンテキストメニューなし
の行
これ、今の場所に書くべきか、以下の間が良かったのか、どっちだろう
End If
Else

なんとなく後者の方が良いかと思ったけど、具体的な理由は特に無い
2022/02/04(金) 22:00:37.50ID:hsiPC1r9M
>>942
勉強になるわ
2022/02/04(金) 22:07:39.34ID:hsiPC1r9M
>>945
色塗りが先か非表示が先かってことでしょ?
どっちでも良い気がするけど
2022/02/04(金) 22:20:18.23ID:Zgf6kB1T0
>>947
そうそう、どっちでもいい
だけど、エラーの発生や可読性などを考慮した時、どっちがいいかなと思って
こういう時に迷わずに書けるようになりたい
2022/02/04(金) 22:27:16.08ID:MwWgLKiA0
>>938
向上心あって良いね、自分は動きゃええわって感じだからなぁ 笑
それもあってここ抜いちゃうかもって思った
Else
Cancel = False '範囲外ならコンテキストメニュー復帰
2022/02/05(土) 02:19:12.27ID:6OPkdc9C0
>>940
レスありがとうございます
シートを一枚ずつ削除してからDeleteを試していったら、特定のシートの有無で大きな変化があったので
重くなる理由で調べていったら、条件付き書式がセルのコピペで勝手にどんどん増殖していく というのがまさにそれでした
Deleteとかは関係なかったみたいです、失礼いたしました
2022/02/05(土) 03:34:09.74ID:Bcit2bMf0
勝手に増殖したらウイルスみたいだな、そもそもコピペで(条件付き)書式もコピーされるのは正常動作だし
2022/02/05(土) 14:27:20.74ID:NvgV3V+H0
365インサイダー板、久しぶりに更新きた
953デフォルトの名無しさん (ワッチョイ f753-AiWJ)
垢版 |
2022/02/06(日) 04:25:59.05ID:4j2iEgx50
EXCEL2021のエラーダイアログに「デバッグ」ボタンがないんだけど、
どうすれば表示されるようになります?
2022/02/06(日) 17:12:52.54ID:5H6ThRiB0
>>953
スクリーンショット見せてほしい
2022/02/07(月) 11:59:42.81ID:dtTrWMUA0
新しいバージョンは、バグがあるからねぇ…
使わないに限る
2022/02/07(月) 12:13:58.84ID:PizflsNCM
全面的に使用禁止
2022/02/07(月) 14:36:18.09ID:L5SqTIhE0
そういい続けて今でもExcel2003使っている
2022/02/07(月) 17:16:58.35ID:clNFinzC0
VBA内で今まで使えてたKillが急に使えなくなった。
Excel13に戻すと使えるけど、俺が頃されたのか。
2022/02/07(月) 17:38:36.22ID:N54aEDvt0
概念が殺された
2022/02/07(月) 17:41:13.85ID:2n7cflzo0
>>958
ファイルやフォルダのアクセス権は大丈夫なんか?
2022/02/07(月) 18:07:58.36ID:Zblf2oZud
>>958
エラーコードとかもどってきてないの?
2022/02/07(月) 18:21:22.94ID:clNFinzC0
実行時エラー70
書き込みできません

プログラム内で作った作業用のファイルを終了直前に削除する部分が効かなくなった。
もう帰っちゃったしアクセス権とかは調べてないや。でもファイルは作れるしな。
先月までは普通に動いてたし別なPCでも同じ結果なんだな。
2022/02/07(月) 18:30:16.04ID:1qSznfbA0
>>958
「実行時エラー70書き込みできません kill」
で検索したら色々出てきた
多分開きっぱなしになっているので、.closeかなんかで閉じると良いと思う
2022/02/07(月) 18:44:59.26ID:UL1lTxQ90
ウイルスチェックやフォルダの同期(GoogleDrive)が邪魔してくれる事は良くある
2022/02/07(月) 20:17:13.59ID:rYqCZzs10
田中氏、いきなりようつべに復活したぽい
2022/02/07(月) 21:53:43.66ID:2n7cflzo0
>>962
そのファイルを誰かが開いてる

場合によってはエクスプローラーが開きっぱなしにすることがある
テンポラリフォルダの表示形式を一覧か詳細に変えてから閉じてみ
2022/02/08(火) 07:57:31.61ID:Kw22iHFld
>>962
ファイルを削除直前まで開いてたりすると削除で使用中の扱いになったりすることがあるから
ファイルを閉じる>Sleepで2秒程度またせる>削除
のようにするといいかもしれない。
自分はいつもこうしてる
2022/02/08(火) 22:22:07.82ID:VQAPYvrL0
ダウンロードファイルのVBAマクロをデフォルト無効化。Officeに仕様変更
https://pc.watch.impress.co.jp/docs/news/1386777.html
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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