Excel VBA 質問スレ Part69

レス数が900を超えています。1000を超えると表示できなくなるよ。
2020/12/13(日) 00:22:23.67ID:Fd224klc0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
803デフォルトの名無しさん (スプッッ Sd02-rjlL)
垢版 |
2021/03/03(水) 23:58:49.06ID:zTCiutcbd
>>800
Clearcontentsじゃなくて単に「削除」に時間が掛かってるだけ説。
どうしようもないExcelのバグ、俺もこの前株シミュレーター作ってて直面した。
たかだが3万行×1列消すのに10分掛かる糞仕様。
どういうわけかD列とE列に入っているがD列を消してからだとE列が、E列を消してからだとD列がそうなる。
2007と2013入れてたがどちらでも同じ結果。スプレッドシートでならサクっと消せた。
2021/03/04(木) 00:37:39.40ID:0V1y42950
質問させてください
業務用PCのためDsoFramerのインストールを容易には出来ない環境で、ユーザーフォームにワークシートを表示するシステムを作成するのは厳しいでしょうか
2021/03/04(木) 02:10:45.74ID:EcELbNCH0
レスありがとうございます
画面更新は勿論切ってます
ただ初期化したいだけなのにアホみたいに時間が掛かるので、同じ使用のシートを作る処理にする事も検討します
2021/03/04(木) 06:47:21.46ID:yRtnuXOv0
変数に入れてから消すとか、同じ選択範囲の配列(空白)ぶっこんでみてもだめかな
2021/03/04(木) 10:44:48.81ID:B7/1q6yvH
一気に何万行も消さずに100行ずつとか小分けしたら軽くなったりしないのかな
2021/03/04(木) 10:49:05.92ID:1zCrSMV60
ClearContentsで重かったことなんてないなあ。
めんどくさくてVBAじゃなくマクロで作って選択範囲小分けのまま放置してるからかな?
2021/03/04(木) 11:15:36.75ID:fKYNPqjU0
>>800
ふーん
範囲指定して消したらどう?
後、最近のEXCELはひょっとして
セルの内容が変わったら
再計算しているかも知れないから
一応自動計算も切ってみたら?

セル値が変わった時のイベント拾って
何かやってるとかいうオチだったら
問題外だけど
2021/03/04(木) 11:36:50.11ID:EtHhkpeQ0
スレが見つからなかったのでこちらで失礼します
C8の値が$100にならない理由を教えて下さい
https://i.imgur.com/XLERVNc.png
2021/03/04(木) 11:53:16.96ID:w9aQykj0M
関数変わっちゃうけど代案を出すなら
VLOOKUP(B8,B1:C5,2,FALSE)
とかどう?
2021/03/04(木) 12:01:03.02ID:1zCrSMV60
なんだこりゃ
LookUpって欠陥あるんかね
2021/03/04(木) 12:21:33.50ID:w9aQykj0M
LOOKUPって近似値を検索する関数だから文字列探そうとすると上手くいかない事が多かった気がする
だから面倒臭くなってVLOOKUP,HLOOKUPを使うように癖をつけた記憶がある
2021/03/04(木) 13:49:43.11ID:1PJYOy7Jr
これ思い出したわ

https://i.imgur.com/x2uWdkO.jpg
https://i.imgur.com/fnrEWzZ.jpg
2021/03/04(木) 13:50:26.95ID:FInty+sk0
新規作成してから試してみたけど$100になったな
2021/03/04(木) 14:14:53.10ID:Kq0/JwOuM
>>810
C8 が "もり " みたいに空白入ってるとかじゃね?
2021/03/04(木) 14:47:21.95ID:skJUg0gJ0
検査範囲の値は昇順にしてください
そうでなければ正しい値はえられません
並んでないときはVLOOKUPやHLOOKUPを使ってください

という旨のことをヘルプに書いてある。
2021/03/04(木) 16:50:41.38ID:b7V1SruDM
LookupにもVLookupやHLookupみたいに検索方法のオプションあればいいのにね
まあMSとしてはExcel最新版にしてXLookup使ってねって言うことなんだろうな
2021/03/04(木) 18:46:57.78ID:EcELbNCH0
初期化で若干重たいのは取り敢えず諦めることにして、外部のCSVをクエリテーブルで読み込んでから
Refleshでシートに書き込んでるのですが、この書き込む前の段階で、クエリテーブル上で不要な列のデータを削除する事って可能でしょうか?
不要なデータが大量に混ざっているので、全部まとめてシートに書き込むとやはり重たいので軽量化したいのですが……
820デフォルトの名無しさん (ワッチョイ 0b8e-v+iG)
垢版 |
2021/03/04(木) 19:49:49.80ID:V/SEJayw0
いつものあいつだな
2021/03/04(木) 20:49:35.42ID:yRtnuXOv0
lookup系よりindexmatch使うことが多いな
2021/03/04(木) 20:55:32.61ID:INwEijJcM
lindexmatch使いアピールしてはじめて自称excel上級者として一人前
2021/03/04(木) 21:28:29.09ID:Cjl2zDCE0
昔はユーザー定義関数作ったけど、今はXLOOKUPがある。
2021/03/04(木) 22:18:19.39ID:1zCrSMV60
IindexMatchなんぞ使わず、
列をボーンとコピー挿入してVLOOKしてこそ一人前
2021/03/05(金) 05:33:04.89ID:eGeMRqFI0
いつものあいつて何?
2021/03/05(金) 09:21:20.59ID:n//DPju00
とうしつの自己紹介
2021/03/05(金) 21:02:22.60ID:s30llsqJ0
臭う質問者の総称
2021/03/06(土) 12:22:29.01ID:yJvSdslEH
実際に使ってないような質問をして答えさせて悦に入る人
2021/03/07(日) 10:26:06.26ID:FD1rrusm0
webページからデータをとってきてセルに格納するマクロを書いています
msxml2.xmlhttpというのを使うとページの内容をgetすることができるのですが、これはどうやらieを利用しているようです
ieはいつなくなるかわからないので他の方法があれば今のうちから変えておきたいのですが、vbaで使える方法で他にどういうのがあるか教えてください
2021/03/07(日) 10:30:32.44ID:ZX3XyXetM
IEはなくなるのにVBAは大丈夫だと思う理由は?
言語もPythonとかにしてBeautifulSoupやSeleniumでも使った方がよい
2021/03/07(日) 10:37:32.50ID:4ExLqYxe0
パワークエリはどうかな
2021/03/07(日) 10:42:14.29ID:TW4NSoKtM
無くなったときのビジネスインパクトはIEよりもVBAの方が遥かに小さいから、MSがどっちか先に切るとしたらVBAだろう
最悪VBAは切られてもExcelのバージョンを塩漬けにして運用できなくはないしな
2021/03/07(日) 11:28:15.07ID:zpOLYdVD0
>>830
まあそのうちpythonに移行するんでしょうけど、今は慣れない言語を一から勉強してる暇はないので
それで、あなたはvbaでやる他の方法を示せないということでよろしいですか?

>>831
どうかな、じゃなくてどうやるのか教えてください
2021/03/07(日) 13:02:06.24ID:JbGOdXToM
704 名無し~3.EXE sage 2021/03/01(月) 20:11:45.17 ID:hZCKpI4x
デスクトップ版のVBAマクロに替えてWeb版はOfficeスクリプトがプレビュー中(現在は法人向け365のオンラインのみ)
https://docs.microsoft.com/ja-jp/office/dev/scripts/resources/vba-differences

705 名無し~3.EXE sage 2021/03/01(月) 20:16:10.79 ID:hZCKpI4x
Excelの新自動化ソリューション「Office Scripts」プレビュー版が登場
https://ascii.jp/elem/000/004/000/4000725/

Excel操作をJavaScriptで記録 〜Microsoft、“Office Scripts”をパブリックプレビュー
https://forest.watch.impress.co.jp/docs/news/1227931.html
2021/03/07(日) 13:04:56.15ID:JbGOdXToM
788 名無し~3.EXE sage 2021/03/03(水) 18:26:40.20 ID:5NVXQTtc
Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定
https://www.itmedia.co.jp/news/articles/2103/03/news080.html

Microsoft、自社製RPAツールを全Windows 10ユーザーに無償提供 マウスクリックやキーボード入力をGUIで自動化
https://www.itmedia.co.jp/news/articles/2103/03/news096.html
836デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 13:46:03.75ID:5FBwssoR0
>>833
なんだただの馬鹿か
煽って聞きだそうとしてもこのスレはいつものあいつで耐性ができた人ばかりだから無理
2021/03/07(日) 14:06:40.31ID:4ExLqYxe0
触れないようにしてたけど辛辣で草
2021/03/07(日) 17:25:15.30ID:CYFzWFvV0
>>836
答えられないならレスしなくていいよ
無能に用はないから
839デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 17:51:15.16ID:5FBwssoR0
>>838
悔し買ったか?馬鹿
2021/03/07(日) 18:27:16.06ID:REgzkSN70
な、age厨だろ?
2021/03/07(日) 20:22:49.89ID:l5mf+U2f0
反論できなくてアゲサゲ言い出す奴は見苦しい
2021/03/07(日) 21:30:58.30ID:iHuYVCVV0
言われて下げてやんのwww
843デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 22:58:33.05ID:5FBwssoR0
馬鹿は自分が相手にしてるのはただ一人だけと思い込む
2021/03/08(月) 05:43:53.99ID:bSh0ioyn0
な、age厨だろ?
2021/03/08(月) 07:03:19.05ID:+AeHqC2j0
自己紹介www
2021/03/08(月) 09:05:36.54ID:+ItxpBbz0
類友
2021/03/08(月) 09:36:00.68ID:gk28PyLU0
もはや論点なにそれ状態
2021/03/08(月) 10:52:47.61ID:TrYviUKj0
保存して閉じる処理をしても、ファイルは閉じてもExcelはとじません

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'処理
Application.DisplayAlerts = False
Application.Quit
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
End Sub
これでもダメでした
Application.Quit
ThisWorkbook.Close savechanges:=True
2021/03/08(月) 11:07:15.73ID:9xs5g46P0
ActiveWindow.Close
2021/03/08(月) 11:38:58.50ID:TrYviUKj0
>>849

Application.Quit
ThisWorkbook.Close savechanges:=True
ActiveWindow.Close
これもダメでした
2021/03/08(月) 11:53:11.92ID:9xs5g46P0
Application.Quit
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
2021/03/08(月) 11:57:13.64ID:vFSNvomr0
Application.DisplayAlerts = False
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close
Application.DisplayAlerts = True
End If

とかどう?
2021/03/08(月) 11:59:04.12ID:ub+dBY/l0
>>848
何でセーブする前にEXCELのアプリケーション閉じようとしてるの?
2021/03/08(月) 12:04:00.24ID:TrYviUKj0
>>851
>>852

ダメでした。
ほかのファイルでは問題なくExcelが終了するのですが
Private Sub Workbook_BeforeClose(Cancel As Boolean)
を使うマクロのときだけ、閉じなくなるような気がします。関係ありますかね?
2021/03/08(月) 12:23:48.80ID:Qtlmv4rK0
>>853
2021/03/08(月) 12:30:21.22ID:ub+dBY/l0
わざわざセーブメッセージ叩き潰して
ブック捕まえたまんまにして
アプリケーション閉じようとしてるんだから
わざと閉じられないようにしているようにしか見えない
2021/03/08(月) 12:44:18.76ID:Qtlmv4rK0
savechangesでも無限ループしてそう
2021/03/08(月) 12:56:18.62ID:vFSNvomr0
>>854
BeforeCloseにApplication.Quit記述してイミディエイトからThisWorkbook.Closeを実行してみたけど問題なく閉じたから何か別の物が干渉してる可能性があるかなぁ
2021/03/08(月) 13:04:41.43ID:9xs5g46P0
めっちゃ古いバージョンとかじゃないだろうな
2021/03/08(月) 13:32:58.59ID:TrYviUKj0
>>855
当初はこれでしたが、ググったら、Application.Quitを上に書くらしいです

ThisWorkbook.Close savechanges:=True
Application.Quit

>>856
Application.Quit
ThisWorkbook.Close savechanges:=True
だけでも同じでした

>>857
他に保存する方法を教えてください

>>858
自分でも試してみましたが、確かにちゃんと閉じますね。他の干渉を疑ってみます。

>>859
2019です
2021/03/08(月) 13:49:36.30ID:9xs5g46P0
Application.EnableEvents = true
を頭に付けてみるとか
2021/03/08(月) 18:00:51.59ID:+0kCYoNG0
そこでやるべきことは ThisWorkbook.Save だけだと思うんだが
2021/03/08(月) 18:30:55.70ID:bSh0ioyn0
コマンドプロンプトでtaskkill /f /im excel.exe
2021/03/08(月) 19:53:15.72ID:Awv++sSE0
Quitは最後では
変なExcelプロセスが残ってないか確認した方がいいのでは
2021/03/08(月) 21:03:57.98ID:53ng3r6C0
VBEでVBAを使って出来たものがマクロであってる?
本屋にVBAの本とマクロの本があるけど同じことと思っておk?
2021/03/08(月) 21:12:54.65ID:ub+dBY/l0
>>865
半分正解
2021/03/08(月) 21:17:42.97ID:ub+dBY/l0
「VBEで作ったものはマクロ」
これは合ってる
「VBAとマクロは同じことを言っている」
マクロにはVBAtで作られたもの以外に
4.0マクロと言うものが有ってだな・・・
まぁ、あまり気にしなくても良いかもしんないけど
2021/03/08(月) 21:34:20.02ID:B96zl28N0
マクロ
スクリプト
関数
これらはプログラムのひとかたまり
厳密に区別しずらいけどそれぞれ
ニュアンスの違いはある
869デフォルトの名無しさん (アウアウクー MM4f-YFKC)
垢版 |
2021/03/08(月) 21:58:36.85ID:U/cFdqiVM
>>865
VBEはエディタ。Excelの場合はVBAとマクロは同じ意味で使われる。ExcelマクロがExcel VBAのコードで表現されるため。
2021/03/08(月) 22:10:13.99ID:Awv++sSE0
>>867
なんかいろいろ違うぞ
2021/03/08(月) 22:16:46.29ID:Dj6nESKZ0
関数は全然違うだろwww
2021/03/08(月) 22:42:26.89ID:53ng3r6C0
>>866
まだ表紙なのに理解半分かw

>>867
4.0マクロネットで見て使ったこと1回だけあるけど関数みたいなやつだった記憶。

>>868
スクリプトも便利そうですよね。
デスクトップかっこ良くするフリーソフトに自由にスクリプト使えますって書いてあって挫折した。。

>>869
出来たもんがマクロでVBAが設計図でVBEが紙と鉛筆か。

みんなありがと、ネットにも解説サイトあるけど違うとこ見ちゃうから本買ってくるわ。ノシ
2021/03/08(月) 23:14:12.98ID:u4CRr3CF0
そういえばvbaをjsで書ける世界まだなんだっけ?
gasみたいな感じで書けないかな
2021/03/08(月) 23:18:26.32ID:hUWITx/G0
WScriptのJScriptでExcel使えるだろ
2021/03/09(火) 00:19:47.43ID:fLnH8jKyM
>>873
>>834
2021/03/09(火) 02:53:50.15ID:uNAjD4zcH
微妙に違う気がするなあ
VBAはプログラミング言語の名前(の略称)。単語と文法が書いてあるだけの辞書みたいなもん
その言語で書かれた物がマクロで、むしろ設計図はこっちが近い
VBEはマクロの作成を手助けするツール、紙と鉛筆って考え方はだいたい合ってる
で、マクロの中でも結果を一組だけ呼び出し元に返すように作られてるのが関数
2021/03/09(火) 05:15:21.29ID:suvlK62N0
機能とワークシート関数とか全くわからん
操作なんてVBAで良いじゃん
周りでもそういった人いるしさ
2021/03/09(火) 08:22:35.06ID:zXQo4RJq0
本来、Excelの操作の自動化を目的にしたVBAマクロなのに元の機能そのものが全く分からんとか本末転倒にも程がある
879デフォルトの名無しさん (アウアウウー Sa0f-fXuR)
垢版 |
2021/03/09(火) 10:45:46.13ID:pnwu5thka
作成依頼です

一定範囲内において、選択されたセルすべてに、書式設定で取り消し線を付けたいです

たとえば、D5からD20の範囲内で、そこ以外の範囲が選択されていた場合はエラーを返す
範囲内なら、選択されたセル(単一、複数、飛び石あり)すべてに、一括で取り消し線を追加
というような感じです

飛び石状態で複数が選択された場合に、上手く処理できなくて相談させていただきました
よろしくお願い致します
880デフォルトの名無しさん (ワッチョイ fb5f-R8lj)
垢版 |
2021/03/09(火) 11:04:35.36ID:oV9GYLDS0
>>879
そんな仕様のものを作ってはいけない
2021/03/09(火) 11:21:48.31ID:Nc9tdWjH0
>>879
選択範囲をまとめて見るんじゃなくて、選択されたセル一つ一つについて既定の範囲内にあるか条件判断をし、エラーかそうでないか
エラーでなく全てのセルが範囲内なら一つ一つのセルに取り消し線を追加
とすれば普通にできるでしょ
横着しようとしてるからいけないんじゃないの
2021/03/09(火) 11:25:30.81ID:uNAjD4zcH
VBEは赤ペン先生?全部じゃないけど間違いをすぐ教えてくれる
2021/03/09(火) 11:58:31.47ID:zYh1VL3E0
>>879
お金ください
2021/03/09(火) 12:03:56.11ID:uNAjD4zcH
>>879
For Eachでセルを1個ずつ処理するんだよ

For Each、セルアドレスチェック、1つでもD5-D20じゃなかったらエラー
エラーがなかったらもう一度For Each、各セルに取り消し線

みたいな流れ
2021/03/09(火) 12:09:52.12ID:4S2gbixUa
ピボットグラフのスライサー内の選択を変えた時にマクロが動くようにしたいです
イメージ的にはワークシートイベントです
例︰スライサーの日付を変更時にグラフの色を塗る

選択変更の検知方法を教えてください
よろしくお願いします
886デフォルトの名無しさん (ラクッペペ MM7f-gfXM)
垢版 |
2021/03/09(火) 12:25:42.94ID:t7O7P6i9M
外枠なら面倒だけど取り消し線なら簡単だ
2021/03/09(火) 12:38:26.95ID:uNAjD4zcH
外枠でも大差ないと思う
Selectionの上下左右に罫線を引くだけ
888デフォルトの名無しさん (アウアウウー Sa0f-fXuR)
垢版 |
2021/03/09(火) 12:43:13.10ID:pnwu5thka
>>881
>>884
なるほど、これなら自分でできそうです
ありがとうございました
2021/03/09(火) 13:03:57.82ID:C5e26MY+0
いえいえ、自分でもっと勉強してくださいね
2021/03/09(火) 16:16:21.91ID:1va3W7Si0
>>879
If Intersect(Selection, Range("D5:D20")).Count <> Selection.Count Then
MsgBox "エラー"
Else
Selection.Font.Strikethrough = True
End If
2021/03/10(水) 00:11:15.88ID:seJ5KfaI0
だってさ、先輩がExcelなんか全部マクロで動かせば良いって言われたからさ。。。
ワークシートの関数とかそんなもん覚えなくて良いと言われたからさ。
だからVBAしか知らない。
今凄く関数とか機能を覚えるために苦労してる。
2021/03/10(水) 02:20:07.32ID:Mh5oeh7J0
>>891
無理してやる必要ないのに、何のために覚えるの?
2021/03/10(水) 07:58:05.94ID:seJ5KfaI0
>>892
マクロだけでは遠回りだと気づいて
2021/03/10(水) 08:18:24.93ID:afuwFvM40
vlookupはなんであんな変なインターフェースなんですか
895デフォルトの名無しさん (ブーイモ MM8f-IazI)
垢版 |
2021/03/10(水) 09:29:52.26ID:AjUIRLk9M
ポーカーフェイスですよ
896デフォルトの名無しさん (ワッチョイ fb5f-R8lj)
垢版 |
2021/03/10(水) 10:14:53.26ID:B52MA1yl0
>>894
古いから
897デフォルトの名無しさん (アウアウウー Sa0f-W2tv)
垢版 |
2021/03/10(水) 14:59:19.94ID:hxdj8Ixba
screenupdapingを非表示にした状態でcalculationを自動にしたら、ちゃんと計算やってくれますか?
2021/03/10(水) 15:30:04.25ID:PHH+vFRc0
>>897
自分でやってみりゃいいじゃん
899デフォルトの名無しさん (アウアウウー Sa0f-W2tv)
垢版 |
2021/03/10(水) 15:39:38.02ID:hxdj8Ixba
>>898
updatingが表示になったときに計算されるのか、非表示中に計算されてるのかがわからないのです。
2021/03/10(水) 15:43:34.11ID:TvaGnuXK0
ExcelからVBAが完全になくなるより先にMSが先になくなりそうじゃない?
2021/03/10(水) 15:57:24.48ID:kPBSipVT0
MSがなくなるより先にお前がなくなるんじゃない
2021/03/10(水) 17:04:34.10ID:ij0IDF+ed
その前にIT途上企業のウチの会社がなくなるな
2021/03/10(水) 17:25:36.32ID:PHH+vFRc0
>>899
対象セルのvalue値を処理中に
debug.printで書き出すなり
どこかのセルに突っ込むなり
トレースして確認するなりすればいいじゃん
まず聞く前にググる癖をつけないと
いつまで経っても誰かに聞かないと
何も出来なくなるよ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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