Excel VBA 質問スレ Part73

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 4668-xJJl)
垢版 |
2021/09/13(月) 07:29:59.47ID:GNx0xRRz0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/09/20(月) 00:16:46.79ID:GQS+gMma0
なぜ自分で試さないのか
2021/09/20(月) 02:45:51.50ID:KDTpyD+cH
>>82
データがセルに入ってるならワークシート関数使った方が速い
85デフォルトの名無しさん (ワッチョイ 9f6b-W1il)
垢版 |
2021/09/20(月) 10:43:06.46ID:wP8fgZ+m0
えっ?そうなの??
86デフォルトの名無しさん (ワッチョイ 9f6b-W1il)
垢版 |
2021/09/20(月) 10:44:41.60ID:wP8fgZ+m0
試しましたが、
コードはdictionaryのほうがすっきりした。
体感速度はあまり変わりませんでした。
2021/09/20(月) 10:54:05.02ID:9E+2eMtE0
かまってちゃんかよ
天気いいから散歩でもしてこいよ
88デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/20(月) 11:55:16.12ID:djFT0hLf0
コード醸せよ
2021/09/20(月) 12:03:32.94ID:DYg0tonqd
A・オリゼー
90デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/20(月) 12:27:59.43ID:lHEjG93V0
xxとyyどっちが早い、というのは本当に試した方が早い
バージョンアップで最適化されて、すげー早くなってる事がある
2021/09/20(月) 12:51:40.86ID:3QXihmxB0
>>87
別にかまってちゃんじゃなくて、回答に信頼性がないから自分で試したんだろう。誰かが信頼できそうな回答をくれたんだったら試さないと思うぞ。
2021/09/20(月) 13:12:45.31ID:26+LHXKYM
ちゃんと結果まで書き込んでるんだから
質問だけしていなくなるやつもいる中で、優秀だと思うよ
2021/09/20(月) 15:29:06.41ID:Ijs9yUmJM
>>86
まずはありがとうございました、だろ
うぜー帰れ
2021/09/20(月) 15:32:05.91ID:3QXihmxB0
>>93
お前何代表者みたいな顔して怒ってんだよ、とチャチャを入れてみる(笑)
95デフォルトの名無しさん (アウアウウー Sa5b-ONKb)
垢版 |
2021/09/20(月) 16:38:36.67ID:my+lQwjla
イヤ
マジで>>86はウザいわ
2度と来るな
96デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/20(月) 16:58:36.07ID:djFT0hLf0
スルー力がない奴もセットて消えろ
2021/09/20(月) 17:03:04.82ID:3QXihmxB0
>>96
お前もスルーしないと
2021/09/20(月) 17:07:29.03ID:FEM4xU2r0
子供か
2021/09/20(月) 17:16:52.36ID:3QXihmxB0
>>98
スルー力、言うのは易し、行うのは難し、を指摘しているだけ。

もう一ついいか?
人の振りして我が振り直せ(笑)
2021/09/20(月) 17:48:58.56ID:9E+2eMtE0
一番スルーしてない人が言うと説得力ある!
2021/09/20(月) 18:05:45.62ID:Mz1RekPdr
モジュールとボタンを別のブックにコピーしたくてできたと思ったんだけど
ボタンに登録されるマクロがコピー元のマクロになっちゃってとうすりゃええのか分からん
.OnAction=Thisbook&”マクロ名”とかじゃ動かないのね
2021/09/20(月) 18:30:41.29ID:aa1o0gq5a
それコピーじゃなくてインポートしろよ
2021/09/20(月) 18:40:40.67ID:FEM4xU2r0
>>99
寂しいのか?
104デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/20(月) 21:44:55.52ID:djFT0hLf0
ボタンをインポート?
これも楽な方法があったらいいのにね
105デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/20(月) 21:51:19.19ID:lHEjG93V0
シート上のフォームコントロールを消す時って
・右クリックで選択
・コンテキストメニューをESCで消す
・切り取り、もしくは「deleteキー」
で合ってますか?

選択する時はF5キーのオブジェクトでもいいんですけど、
どちらにしろ右クリックで選択というのが何か気持ち悪い
106デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/20(月) 21:58:02.93ID:lHEjG93V0
>>101
sheetモジュールのマクロ?
それとも標準モジュールのマクロ?

どちらによるかでやり方が変わる
107デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/20(月) 21:58:44.81ID:djFT0hLf0
Ctrl+クリック
Delete
でいいんじゃない
108デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/20(月) 22:10:20.73ID:lHEjG93V0
>>107
短縮できました、ありがとうございました
2021/09/21(火) 16:59:19.72ID:6V+SG26ea
private subのどのプロシージャーからでも、グローバル変数に入った値を取り出す方法として、

たとえばenvという標準モジュールを作り、そのなかで

public dim grobal_a as string

sub hoge
global_a = "aaaa"
end sub


とやっておき、

エクセルのブック起動と同時にこの初期値を入れておきたいので
thisWorkbookにcall hoge

ってやるの、普通?
2021/09/21(火) 18:19:02.19ID:Qqw1uu/Y0
>>106
標準モジュールのマクロですー…
2021/09/21(火) 19:19:53.65ID:Bwxe0pHra
>>110
シートに標準モジュールのやつを呼び出すSubを書いて、それをボタンから呼び出せばいい
2021/09/21(火) 20:47:40.27ID:bgKjXBpU0
>>109
まず変数のスコープ覚えようね
2021/09/21(火) 21:06:44.82ID:0m2xZsmF0
>>109
普通は grobal_a と global_a の二つを一つにまとめると思う
114デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/21(火) 21:13:59.43ID:pV6hI0Vx0
>>110
全シートを選択してカットペーストでいけるだろ、と思ったら無理だった

VBEをVBAで動かすしか無いと思う。
https://jizilog.com/vba-modadd
http://officetanaka.net/excel/vba/vbe/07.htm
115デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/21(火) 21:29:23.86ID:pV6hI0Vx0
>>109
vbaってグローバル変数の初期化できないのか・・・
見たことはない。変な気はする
とりあえずはシートに書くほうが楽だと思う
constでいいなら初期化が出来る。社名みたいにほぼ絶対変わらない物ならこれでもいいかも

Public Const 定数 = 1
sub foo
debug.print 定数
end sub

>>113
わらった
2021/09/22(水) 07:59:00.83ID:ucS/NBRX0
>>109
普通か普通ではないか、と言われれば普通ではないかなぁ。
ではどこが、と言われるとまずモジュール変数をグローバル指定しているところはPrivateにして外部から呼び出す用のプロパティに組み込む。これでどこかで値が変更されてもブレイクポイント仕掛けてどこで呼び出されて値が変更されたかを確認出来るようになる。

あと、初期化用の関数はPublic指定にしておかないと別のモジュールから呼び出せないよ。ThisWorkbookから呼び出すんでしょ?
2021/09/22(水) 08:55:25.77ID:h9k7055fM
ありがとうございます
2021/09/22(水) 08:56:23.60ID:h9k7055fM
constやってみます
2021/09/22(水) 11:22:09.41ID:QukUYkwCa
普通じゃなかったのか…俺もそうしてた
>>116
勉強になります
120デフォルトの名無しさん (ワッチョイ f72f-fBlf)
垢版 |
2021/09/22(水) 15:13:16.34ID:XBxd6ZoY0
書籍「イヤンもう!最初からそう教えてくれればいいのに!ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本」の評判はどうですか?買うか検討中なのですが。
2021/09/22(水) 19:17:45.16ID:igHuaWyKa
>>120
ゼッタイにわかる本系の口語調文章に抵抗がないラノベ好きには良いんじゃない?
2021/09/22(水) 19:18:09.88ID:igHuaWyKa
>>120
ゼッタイにわかる本系の口語調文章に抵抗がない人には良いんじゃない?
2021/09/22(水) 19:19:18.20ID:igHuaWyKa
なにこのエラー去勢された
2021/09/22(水) 19:35:51.24ID:wAf2i/6rH
>>120
人それぞれ印象が違うから、参考書は最初の2、3ページ立ち読みして自分で決めるのがいいよ
125デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/22(水) 20:05:10.79ID:anCt84pS0
イヤンもう
って言うから検索したら特にそんな単語ついてないじゃないですか
2021/09/22(水) 21:46:48.06ID:Th7N/2yOd
https://i.imgur.com/Izd2bnq.jpg
127デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/22(水) 22:05:18.59ID:anCt84pS0
若い子が水着姿で教えるVBAの本なら簡単に死ぬほど売れるのでは?と思った
2021/09/22(水) 22:14:11.23ID:ER/2UqvV0
そもそもVBA自体がオッサン臭い言語
2021/09/22(水) 22:16:41.63ID:cVN8rRFZM
そもそも5ch自体がオッサン臭い場所
2021/09/22(水) 22:21:20.29ID:RvuuvfBjM
そもそもオッサンしかいない
2021/09/22(水) 23:01:12.21ID:LAnicbtO0
VBAとか作業記録してそれループするなり可変したりするなりちょっと直せば誰でも作れるからな
2021/09/22(水) 23:14:36.78ID:jBUNeyMwa
「はたらくプログラミング 」
「高校生からはじめる プログラミング」
「メイクロックマン 史上最大のプログラミング」
「独学プログラマー Python言語の基本から仕事のやり方まで」
のようなアニメやゲームキャラやイケメンを
採用して若い子にアピールするとか
「乙女チック4Gamer」第267回:
「推しと学べるプログラミング」
初心者も学べるプログラミング学習ゲーム
とか

美少女×プログラミング学習×ソーシャルゲーム『コードガールこれくしょん』
とかゲームで呼び込み

恋のプログラミング~ダメ男の見分け方~ DVD-BOX2
のようなDVDを付録に付けてみたりとか
とかとにかくVBAもなんとか頑張って欲しい
2021/09/22(水) 23:55:17.87ID:ToEmXEKY0
オレも1冊3000円くらいのVBAの本買ったわ
その本をキーボードの下奥に置くと角度が良い感じになるんだわ
手首が疲れないし、職場でもなんか「やってる」感がかもし出せるし、本当に買って良かったと思える1冊だったな
134デフォルトの名無しさん (アウアウウー Sa5b-hED7)
垢版 |
2021/09/23(木) 00:25:56.19ID:1QHTb9H7a
全国フェミニスト議員連盟が半泣き←いまここ
https://www.tokyo-np.co.jp/article/132305
2021/09/23(木) 00:27:06.21ID:4aFmMHLK0
>>132
ん。
昔、EXCELVBAゲーム大作戦とかいう本が出てたよ。まぁVBAも昔からあるからゲーム作るのも先駆者がいたんだね。

けど、結局難しいというか、お仕事で覚えることとベクトルが違うんだよ。1/60秒単位で押されているキーの値読み取って、キャラクターや地形描いてその当たり判定行なったりね。

まぁ暇でそういうの作ってみたいというのにはいいかもだけど、お仕事でVBA使うのの興味を持つために、というのにはちょっと重いかもね。
136デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/23(木) 00:56:08.87ID:O9y54sVl0
>>133
分かりすぎる
分厚い本って意外と重宝するよなw
137デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/23(木) 00:59:12.19ID:O9y54sVl0
vbaでゲームは基本的にかなりめんどくさい
メインのループ処理がキツイ
定期的に処理をエクセルに返してあげないと色々と不具合が起きる
曲芸でなければvbaで作るのは絶対に避けたほうが良い
2021/09/23(木) 09:34:39.93ID:MTBJM7920
2つあるフレームの位置を調整していたら、
フレームAをフレームBの中にドラッグしてしまったらしく、
2つのフレームが一緒になってしまいました。

プロパティウィンドウを見ると、フレームAはまだ存在するのですが、
画面上にはフレームBしか表示されていないため、Aを選択することができず、
AをBから分離することができません。

AのLeftやTopを変更してみましたが、画面上に変化はありませんでした。

何かいい解決法があれば教えてください。
2021/09/23(木) 09:39:09.54ID:MTBJM7920
自己解決しました。

@プロパティウィンドウでプルダウンからフレームAを選択する。
ACtrl+[A]で全選択した後、Ctrl+[X]で切り取り状態にする。
BフレームBのエリア外にマウスカーソルを持っていき、Ctrl+[V]で貼り付ける。
140デフォルトの名無しさん (ワッチョイ bf68-I2En)
垢版 |
2021/09/23(木) 11:52:58.11ID:O9y54sVl0
おめ〜^^
2021/09/23(木) 13:11:17.06ID:cmFu96z6a
>>139
たった5分も考える事が出来んのか
2021/09/23(木) 13:48:48.21ID:tEWlRRfOM
せっかく解決策書いてくれてるのにイチャモンつけるバカって何を考えてるんだろ…
2021/09/23(木) 13:53:17.23ID:DsLS3pBM0
ただの寂しがり屋の暇つぶしとか
2021/09/23(木) 13:59:57.49ID:5gST2jZHM
黙って去るやつよりよっぽどいいんだが
2021/09/23(木) 14:03:41.04ID:F4JAOFkVr
配列からグラフを書いたときってデータ数の上限はありますか?
その場合どのように対処すれば良いですか?
2021/09/23(木) 14:08:33.29ID:KMctW7zL0
>>145
上限を気にするようなデータ数だったら
excelでは重くて動かないと思う
別の言語で書いた方がいい
2021/09/23(木) 14:45:47.29ID:gN04ENXIM
>>145
その場合はデータをコンパクトにまとめるしかなくね
2021/09/23(木) 14:47:47.80ID:dUOklB1+M
>>145
数千個程度は描けたような記憶がある
そもそもそのレベルだと個々の値は見えないから複数個まとめて平均取るとかしてデータ量を減らせばいいかと
149デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/23(木) 15:12:01.32ID:AtVLca4O0
系列数に上限がいかにもありそう 255とか
150デフォルトの名無しさん (ワッチョイ bf8c-xsW+)
垢版 |
2021/09/23(木) 15:22:04.38ID:AtVLca4O0
>>145
上限なしだって
https://support.microsoft.com/ja-jp/office/excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3
これスレのテンプレに入れといてほしい
2021/09/23(木) 18:38:01.80ID:rxtBh7Jj0
>>145
セルに適当なデータいれてグラフ作ったら 9万9千9百+α までしか表示されなかった
メモリの問題かもしれん
2021/09/23(木) 18:52:18.65ID:c0lh6Lzfr
ごめんなさい
セルからではなく配列から直接グラフを読み込むときの話です。
自分の場合配列から散布図書いてて
データ数が15000?あたりから表示されなくなったので
2021/09/23(木) 20:46:47.80ID:rxtBh7Jj0
だからメモリ少ないんじゃね
2021/09/24(金) 16:28:38.47ID:GLO6/yx90
VBAで、リボンを常に表示させるてことできるんですか?
ググると
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", True)"
ていうのが出てくるんですが、
”タブとコマンドの表示”ていう状態にしたい。
2021/09/24(金) 18:53:45.39ID:towOKsyE0
If Application.CommandBars.GetPressedMso("MinimizeRibbon") = True Then
Application.CommandBars.ExecuteMso "MinimizeRibbon"
End If
2021/09/25(土) 02:37:13.36ID:p3qnNTxE0
>>155
おおサンクスww
できた。

なんでリボンの表示・非表示の記事書いてるやつはここまで書かないのかね。
2021/09/25(土) 06:01:58.81ID:A2HuAdJq0
なんでだと思う?
158デフォルトの名無しさん (ワッチョイ 1e68-wYsx)
垢版 |
2021/09/25(土) 07:24:00.70ID:i7f0lbxJ0
しっかりと自分で考える事が大事!向上心をもって勉強しよう!
2021/09/25(土) 07:50:31.86ID:xUBmE3KO0
ひろゆきのクラスモジュールの説明は的確で分かりやすかった
2021/09/25(土) 07:51:02.02ID:xUBmE3KO0
クラスモジュールというよりはオブジェクト指向か
2021/09/25(土) 13:59:25.45ID:QZokVoY5p
このスレにはクラスとかオブジェクト指向とかいうと、ファビョって「マウント取りに来たー!!」とか騒ぐじじいがいるから気をつけた方がいいぞ
2021/09/25(土) 14:23:54.16ID:ADwaIx4kM
5chはじじいの巣窟ですよ。
子供は他所で遊んだ方が良いですよ。
163デフォルトの名無しさん (アウアウキー Saef-nXzz)
垢版 |
2021/09/25(土) 15:09:26.96ID:kjOWSdg4a
>>161
聞く方もじじいだし
2021/09/25(土) 22:54:03.42ID:/8ShLWKPp
エクセル詳しい方にご質問。

保護シートの「オートフィルター使用」にチェックつけてる状態で、
Range(Cells(1,1),Cells(1,5)).AutoFilterを実行すると保護解除しろと言われるのですが、原因わかりますか?

Rangeで指定しているセル範囲の保護を外しても言われる始末。
オートフィルターの使用を許可すりゃ通るもんだと思ってました。

見えない仕組みとか、基本的な仕様を見逃してるんかなぁ…
2021/09/25(土) 23:52:15.96ID:wPvtJ2EG0
>>164
オートフィルターのオンオフはできないのが仕様だな
https://support.microsoft.com/ja-jp/office/%e3%83%af%e3%83%bc%e3%82%af%e3%82%b7%e3%83%bc%e3%83%88%e3%82%92%e4%bf%9d%e8%ad%b7%e3%81%99%e3%82%8b-3179efdb-1285-4d49-a9c3-f4ca36276de6?ns=excel&;version=90&syslcid=1041&uilcid=1041&appver=zxl900&helpid=21290&ui=ja-jp&rs=ja-jp&ad=jp
注: ユーザーは、この設定に関係なく、保護されたワークシートでオートフィルターを適用または削除できません。
2021/09/26(日) 00:17:38.53ID:BPwZjS350
とあるフォルダへのショートカットを作成する方法を調べたところ、
コーディング前に、
>参照設定は、VBA画面→ツールメニュー→参照設定で「Windows Script Host Object Model」を選択します。
>これでWshShellクラスとWshShortcutクラスを利用できるようになります。
という記述がありました。

それで作れそうですが、
作った.xlsmファイルを他人に渡した場合、
その相手が上記の参照設定をしていない環境だったとしても、ショートカットの作成は行えますか?
2021/09/26(日) 00:44:49.64ID:vU9Y5LAHp
>>165
ご回答頂きありがとうございます。

こういう基本的な説明くらい最初から見とけって話でしたね。

しかし、シートの保護とAutoFilterを両立できないとは、痒いところに手が届かない仕様ですな。
2021/09/26(日) 01:37:23.16ID:O844yIU50
>>167
オートフィルターON/OFFと同時にシートの保護/解除も書いてしまえばいいんでないの?
2021/09/26(日) 01:39:32.52ID:BPwZjS350
>>166
自己解決しました。

参照設定を変更しなくてもショートカットの作成は可能でした。
そちらの方法にします。
https://excel-ubara.com/excelvba4/EXCEL293.html
2021/09/26(日) 01:46:25.94ID:BPwZjS350
ちなみに、
@参照設定で「Windows Script Host Object Model」をONにする。
AWshShellクラスとWshShortcutクラスを利用してコーディングする。
Bプログラムを実行する。
Cショートカットの作成に成功する。
D参照設定で「Windows Script Host Object Model」をOFFにする。
Eプログラムを実行する。
Fショートカットの作成に失敗する。(Aの中の定義について「ユーザ定義型は定義されていません」のエラー)
となったので、
>>166については、相手にも参照設定をしてもらわないとショートカットの作成は行えない、ということだと思います。
2021/09/26(日) 01:51:41.55ID:vU9Y5LAHp
>>168
確かに、仰る通りですね。
保護は事前に設定しておくものと勝手に思い込んでいました。

一番良い形で解決できそうです。ありがとうございます。
2021/09/26(日) 15:56:59.18ID:ynzNBMLj0
>>170
参照設定した内容はそのエクセルファイルに保存されてる
エクセルファイルを渡した先でその参照設定がちゃんと動くなら動く
2021/09/26(日) 18:28:19.91ID:6z2Q/VJPM
二次元配列の第三カラムが重複していたらレコードまるごと排除して、かつ排除された分のレコードを別シートに転記することってできます?

連想配列に入れておけば重複してたらわかるようになるけど、そういう方法ってまとも?
2021/09/26(日) 18:29:58.19ID:Fsa0c3oL0
第三限定なの?
2021/09/26(日) 19:28:17.19ID:HYuUGx6O0
できるかどうかではなく、そういう処理を作りたいんじゃないの?
2021/09/26(日) 21:42:42.58ID:hcQxkCQHM
配列とレコードとシートの区別ない人だね
2021/09/26(日) 23:35:14.87ID:ISHRJ32V0
そういう方法で重複チェックをしたことはあるけど
それがまともかと聞かれるとわからんなぁ
2021/09/27(月) 17:52:26.41ID:wG/2iXK70
配列は要素数が増減するものには向いてない
が、まあいろいろ頑張ればできる

連想配列でわかるのは、入れようとしたときに重複するかどうかで、そもそも重複したものは入っていないだろ
179デフォルトの名無しさん (ワッチョイ 1e68-wYsx)
垢版 |
2021/09/27(月) 21:07:52.71ID:9JOCRyj50
>配列は要素数が増減するものには向いてない
「vbaの」配列な
他の言語にはpushとか色々便利なものがあるんやで
2021/09/27(月) 21:09:45.06ID:1fIlBTl00
Excelにはセルっていう使いやすい2次元配列があるからな
速度はご愛嬌
181デフォルトの名無しさん (ワッチョイ 1e68-wYsx)
垢版 |
2021/09/27(月) 23:17:35.36ID:9JOCRyj50
シート入れれば三次元やぞ
2021/09/28(火) 06:06:35.41ID:NhFpYAOsM
>>179
> 他の言語にはpushとか色々便利なものがあるんやで
スクリプト言語とかだろそれ
言語自体の機能として配列のサイズを変えられる言語はそんなに多くないよ
そもそもVBAはその多くない言語に含まれるし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。