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
233デフォルトの名無しさん (ワッチョイ de8c-ysz4)
垢版 |
2021/09/30(木) 23:00:52.63ID:sFWbYEj80
AAA(i) って中身はなんだ
234デフォルトの名無しさん (ワッチョイ 1e68-wYsx)
垢版 |
2021/09/30(木) 23:03:17.67ID:50MfSZL40
>232
i=i-1

i=3
みたいにiが永久に10を超えない動作が入るとそうなる
2021/09/30(木) 23:04:37.72ID:Vp0fi7DV0
普通に動いていると思っていただけで元々普通に動いてなかったとかはある
こんな感じのって言ってるから、そのソースそのまま受け取るわけには
いかんのだろうなって思った
2021/09/30(木) 23:16:32.92ID:VHGvetdVa
初心者の頃は手動でセル入力してた方が早く終わってしまうのが、もどかしくもあるけど
それでもvbaは覚えるべきだと思っていろいろ頑張ってます
237デフォルトの名無しさん (ワッチョイ de8c-ysz4)
垢版 |
2021/09/30(木) 23:22:00.84ID:sFWbYEj80
>>232 >>234
Function AAA(ByRef i As Variant) As Boolean
i = 3
AAA=True
End Function

こんな感じのじゃない?
2021/10/01(金) 00:46:48.32ID:85aYXoDy0
AAAはリストボックスです。
わかりにくかったので、listAとします。
中身はTRUEかFALSEです。

listA.list(0)がTRUEなら、A1セルにOKを入力
listA.list(1)がFALSEなら何もしない。
listA.list(2)がTRUEなら、A3セルにOKを入力

という処理でした。
debug.printを入れる前に動かした時は、画面が固まることもなく正常に終了しました。
debug.printを入れた後に動かしたらループが止まらなくなりました。

debug.printで出力されたiは、0→1→…→9→10→0→1→…というループではなくて、
0→1→…→9→10→6→7→8→9→10→6→…→10→6→…というループでした。

「debug.print i」がiの値に影響を与える、ということはないですもんね。
他の部分を明日あらためて確認してみます。
ありがとうございました。
2021/10/01(金) 17:55:16.70ID:fQjrPzOfa
クラスを使うメリットってなに?
2021/10/01(金) 19:26:10.62ID:aPfKzK/z0
見た目が美しい
2021/10/01(金) 19:29:13.73ID:AYkrwA2S0
自己満足
242デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
垢版 |
2021/10/01(金) 19:45:19.68ID:3/37uweO0
>>239
メソッドとプロパティが一箇所に集まって可視化しやすくなる
でもvbaのクラスは貧弱過ぎるので、モジュールで分けるのと大差ないという
2021/10/01(金) 19:47:27.08ID:4jCtmjal0
>>239
色々あるが、VBAのクラス機能はゴミなのでマジで自己満が多いと思う
解説サイトで玄人の技・隠し機能みたいなノリで紹介されてるので、使えるとプロっぽく見える。

@イベントやデフォルトメンバーみたいなオブジェクトモジュール専用の機能が使える
イベントをまとめたいとかで、仕方なしに、これ目的で使ってる人が多いと思う

A変数に値を入れて、その変数を色んな関数の引数にするっていう事が多々あるけど、
そういう「変数と関数」が常にペアになっているなら纏めた方が分かりやすい

B標準モジュールではモジュールレベルで宣言した変数は実行中保存される。
なので、ある関数でモジュールレベルの変数に値を保存して、別の関数で再利用みたいな使い方が出来る。
でも標準モジュールだと当然その変数に保存できる値は一つなので使い勝手が悪い。
クラスモジュールならインスタンスごとに別の値を保存できる
2021/10/01(金) 19:51:30.36ID:4jCtmjal0
この手の話題には「お前らは使いこなしてないからメリットを把握できてないが、俺は使いこなせてる」おじさんが来る
2021/10/01(金) 19:59:58.89ID:jrcl2rEY0
処理高速化するクラスくらいは単純だし使いまわせるし使ってもいいんじゃない
2021/10/01(金) 20:12:23.33ID:HK8CLsAI0
ただ単にすっきりして可読性がよい
クラスにしてると他人のコード化したときに何をしてるかもう一度把握するのが容易
自分でメソッドやプロパティを作るとファイルシステムオブジェクトやコレクションを扱い易くなる
2021/10/01(金) 20:33:12.85ID:4jCtmjal0
JSとかと違ってモジュール内に構文で記述できない(単体のモジュールファイルとしてしか書けない)から、
クラスモジュールを書くこと自体が億劫に感じて余り印象よくないわ
プロジェクト内だとどこからでも呼び出せるから、どこでどう使われてるのかサッパリだし

イベント機能とか状態保存を有効に使いたい、コレクションを自作したい、
みたいな特別な理由がない限り使わない方がいいんじゃないかなぁと思ってる
2021/10/01(金) 20:46:27.80ID:g1N/sLwpM
継承までは望まないとしてもせめてInitializeに引数を持てるようにして欲しかった
2021/10/01(金) 20:53:23.76ID:4jCtmjal0
>>248
Initializeはコンストラクタじゃなくてイベントだから、
仮に引数があってもオブジェクトモジュール内じゃないと使えない上に、
インスタンスごとにイベントハンドラ用のモジュールレベル変数が必要になって面倒だと思う
2021/10/01(金) 21:49:30.27ID:j+Pc2S4XM
イベントに引数渡せる言語はいくらでもあるのに何を言ってるんだ?w
2021/10/01(金) 22:01:08.86ID:4jCtmjal0
>>250
どう読んだらそういうレスになるの?
読解力のないバカはこれだから困る
2021/10/01(金) 22:07:37.29ID:CXdVtwXkM
>>251
はいはい、説明できないバカ乙
そもそもコンストラクタにすればいいだけの話だし
2021/10/01(金) 22:11:26.60ID:CmFZe7Ct0
質問者の環境や能力を無視すんなよ
2021/10/01(金) 22:24:35.99ID:4jCtmjal0
>>252
何をどう解釈したのか言ってくれれば対応できるけど、最早返答が意味不明過ぎるんだわ
何に対して「イベントに引数渡せる言語はいくらでもあるのに何を言ってるんだ?w」と疑問が沸いたのか説明して?
2021/10/01(金) 22:34:31.13ID:4jCtmjal0
>>252
あと、VBAのクラスに「引数が付いたコンストラクタが欲しいな」っていう希望から
「Initializeに引数を持てるようにして欲しかった」っていう要望が出たのは明白だろう

で、イベントに引数を渡すのは面倒だよねって話をしたら「コンストラクタにすればいい」ってのもよくわからん。
だったらイベント関係なしに、初めから使いやすいコンストラクタ相当の言語機能が定義されてた方がいいだろう
2021/10/01(金) 22:55:44.73ID:f1R1MoFX0
一般のObject指向言語で言うところの継承が使えないとか色々あるから普通にデザインパターンを考慮して作ろうとするとそこそこ制限受けるよね。

例えば継承が使えないからテンプレートメソッドパターンが使えないとか、

VB.Netで言うSharedが使えないからキチンとシングルトンパターン使おうとすると結構厄介だったりとか。

インターフェースが使えるから継承の代わりにストラテジーパターンでも使って組もうとか考えても限界あるし。

あ?コンストラクタに引数?
そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。

まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
他のObject指向言語やってる人って結構インターフェースの概念を疎かにしたりするしね。
2021/10/02(土) 02:59:35.03ID:xagjL2JO0
イベントに引数渡す(というか受け取る)のは別に面倒でもなんでないから
コンストラクタの引数をInitializeイベントに渡せたらまあそれもいいんだが
VBAだとInitializeイベントがオーバーロードできないからなぁ

まあもともとのVBがオブジェクト指向でもなんでもなかったとこからスタートしてるからな

俺はVBAのクラスは自作イベント使いたいときに使うものと思ってる
2021/10/02(土) 06:05:15.61ID:g1EUYVpxM
>>254-255
イベントだから何?って話
VBAでも引数を持つイベントはあるし、できない理由を必死に探してるだけにしか見えない
そもそもイベントとコンストラクタなんてある意味呼び方の問題だし
2021/10/02(土) 06:08:02.24ID:g1EUYVpxM
>>256
> あ?コンストラクタに引数?
> そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。
> まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
そういうのは頭使うとは言わない
単に面倒(かつバグの元)なだけ
無い物ねだりすんなと言うならわかるけど
260デフォルトの名無しさん (ワッチョイ b3e6-SE+q)
垢版 |
2021/10/02(土) 07:21:09.62ID:f83gGEH/0
VB7を待て!
2021/10/02(土) 07:44:35.99ID:PmOXqFk20
>>259
言ってる意味が分からない。
生成した後初期化用のメソッド呼ぶだけだろ?
なんでそんなのが面倒でバグの元になるんだ?
お前はそんな程度でバグを生むソースを書くのか?
262デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
垢版 |
2021/10/02(土) 07:49:32.43ID:i6pQYLUQ0
それ言い出すとどんな言語でも「だけ」になるぞ
2021/10/02(土) 07:52:52.17ID:PmOXqFk20
それにポリモーフィズムを理解している奴ならむしろバグやUTケースを減らせるコードが書ける。
でなければObject指向なんてここまで浸透しなかっただろうよ。
2021/10/02(土) 07:53:44.67ID:PmOXqFk20
>>262
例えば?
2021/10/02(土) 08:50:27.63ID:7sXji/t3M
むしろ>>263の方に例えば?って言いたいわw
2021/10/02(土) 09:59:20.90ID:PmOXqFk20
>>265
学生なのか?
社会人であるなら上司から
質問を質問で返すようなマネはするなと
教わらなかったのか?

まぁいい
答えてくれれば答えよう
それが順序というものだ
2021/10/02(土) 10:26:50.08ID:SSNRs28sM
>>266
バカなの?
別人だし>>263は質問じゃねーし
まあまともな答えは期待してないから答えなくてもいいぞw
2021/10/02(土) 10:45:25.61ID:l9bGJwl90
>>267
お前はまた勉強する機会を損失した
ただそれだけのこと
2021/10/02(土) 11:55:15.97ID:SSNRs28sM
勉強?
からかわれてることぐらいは理解した方がいいぞw
2021/10/02(土) 11:56:22.57ID:h3OHY9Ln0
まあまあ、通りがかりの者だけど、お前ら仲良くやれや
2021/10/02(土) 12:17:57.73ID:4Bm9Y75Jp
まったく最近のじじいは
マウントどうのとかほざくくせに
負けず嫌いで困る
2021/10/02(土) 12:26:19.80ID:s0PycLWJM
5chはじじいの巣窟ですよ。
子供は他所で遊んだ方が良いですよ。
273デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
垢版 |
2021/10/02(土) 17:44:59.50ID:i6pQYLUQ0
>>264
クラスにコンストラクタがない
→newの後にメソッドなりで中身かえればいい「だけ」

それを言い出すとクラスそのものもなくてもどうにでもできるだろって話になる
そうじゃなくて、そんなめんどくさいことを「今更」したくないって話なんだ

それが苦にならないor自分で既にそれらを自動化するライブラリがある!ってなら問題ないと思うよ
君の言ってる事は間違いではない。単に感覚の違いだ


ただ、俺はやだなぁ
ついでに言うとarrayにpushはマジで欲しい
2021/10/02(土) 17:50:29.29ID:ffSwt3TR0
>>273
したくないのは自由だが、いまさらVBAが更新されることはないから、諦めて他の言語に行ってくれ
2021/10/02(土) 18:23:04.84ID:xagjL2JO0
>>263
ちゃんとしたオブジェクト指向言語使えば減らせるってならともかく
VBAでオブジェクト指向でやってUTケース減らせると思えんが

ちょっとVBA関係ない話になるが
お前の思うポリモーフィズムと引数付きコンストラクタの使いどころ教えてくれ
2021/10/02(土) 18:24:23.99ID:yfSowQXWM
>>274
> いまさらVBAが更新されることはないから
みんなそんなことはわかってるけどいきなりどうしたw
2021/10/02(土) 18:35:12.83ID:ffSwt3TR0
>>276
無駄な議論する意味なしでしょ
VBAの質問スレだし
2021/10/02(土) 19:02:41.91ID:/B20gKTEM
ああ確かにそうだな
そりゃすまん
2021/10/02(土) 21:28:02.67ID:PmOXqFk20
>>275
そうだな、ちょっとその前に
例えば一つの例としてゲームを作ったとしよう。
それは簡単なシューティングゲームだったとして、
キャラクターの中に自機、弾、敵、ヒットマークがあったとする。
キャラクター数の上限は考えないものとし、敵は幾つか種類がいるものとして、ひとつは地形判定を行う、一つは弾を打つ、等の違いがあった場合、
君ならどう作るか聞いてもいいかな?

質問を質問で返すようなことするなと言っておいて悪いが最初に認識を合わせるために聞いておきたい。
2021/10/02(土) 21:48:51.07ID:PmOXqFk20
>>273
そもそも論として、クラスを使わなければ何か出来ないことがあるかと言われれば、それはあまり思い付かない。
ただ、VBAでクラスのコンストラクタに引数を持ってないという程度であればそれで代用が効くだろうという話。
それも面倒だというのであれば、クラスを生成して初期化するメソッドを作ってそれに引数を持たせるようにして呼び出せばいくつそういう場所があっても一回書いておけばいいということになる。
2021/10/03(日) 05:20:08.91ID:fyf/YlYy0
>>279
認識あわせの例がシューティングゲームとかその時点でお前とは合わんわ
シューティングゲームとか作らんし、その想定でどう作るとか言われてもな
まあ一から全部作ることはないし、何らかのフレームワークに従って作るんじゃね
そんな細かい実装的な話を聞きたいんじゃないんだよ
2021/10/03(日) 07:39:28.72ID:8uofczFap
>>281
話が合わないというのには同意だ
新しい何かを作る際にその構成が考えられない人に説明しろと言われてもな。
VBAスレでフレームワークとかも持ち出す意味ないしな。
283デフォルトの名無しさん (ワッチョイ 6f8c-GArm)
垢版 |
2021/10/03(日) 11:58:59.58ID:Lx3l1CXP0
ガンダムで例えてくれ
284デフォルトの名無しさん (ワッチョイ cfda-vizG)
垢版 |
2021/10/03(日) 12:18:23.19ID:PztuncMq0
坊やだからさ
285デフォルトの名無しさん (アウアウウー Sa27-jOtc)
垢版 |
2021/10/03(日) 12:51:23.55ID:oCTMWA/sa
excel+vbaでマインスイーパーは造れますか?
どこかにソースありますか?
2021/10/03(日) 12:54:45.72ID:cPfMe0TfM
>>285
考えただけでも簡単そう
ソースはしらんけど
2021/10/03(日) 13:18:38.78ID:PZL9KPgcM
vba minesweeper code でググれ
288デフォルトの名無しさん (ワッチョイ e301-QRk2)
垢版 |
2021/10/03(日) 22:35:03.42ID:x8fdTISD0
教えて下さい
ガンチャート形式の日程表で
日付の色塗りだけじゃなくて
タスク表示(その日の予定)もさせたいんだけど
どう関数組んだらいい?
2021/10/03(日) 23:22:18.21ID:VDfIFkhd0
>>288
ガントチャート形式の日程表とやらの構成はどうなっている?
日付の色塗りとは、何を指している?
タスク表示とは、タスク名?をどこに表示させることを言っている?

このへん予め提示しないと解決が長引くよ
2021/10/04(月) 00:04:37.41ID:j9cfwAH/0
>>288
セルサイズを大きくしてタスクを入力すればいい
291デフォルトの名無しさん (ワッチョイ 6f8c-GArm)
垢版 |
2021/10/04(月) 01:17:19.95ID:BaE5qGe00
excel ガントチャート フリーで検索
2021/10/04(月) 09:25:56.63ID:dlhTdODc0
質問失礼します
タイマーで二つのマクロを順番に実行したいのですが
ひとつめのマクロ実行が長引いてしまい
マクロ実行中にApplication.OnTimeのcallで次のマクロが動くとエラーになってしまいます
Application.OnTimeの時間になっても前のマクロが終わるまで待つやぶつからなくする方法はあるでしょうか?
2021/10/04(月) 09:37:56.41ID:X/RNGavO0
>>292
へ?
ひとつ目の実行開始時に処理中フラグ立てて
実行終了時に倒すようにして
それ見て二つ目のマクロの処理を飛ばすか
待たせてまた実行するかすればいいんじゃないの?
聞いてる意味違う?
2021/10/04(月) 10:15:29.97ID:dlhTdODc0
>>293
はいあっています
処理中のフラグでぐぐると色々出てきました
困っていたので助かりました
ありがとうございます
2021/10/04(月) 10:57:06.41ID:JQlH+vDNM
ontimeの第3引数も調べてね
2021/10/04(月) 12:27:18.56ID:kyO84GtQa
関数に引数が七つも八つもあるとわかりにくくなるから、それならクラスにしておけば、可読性が良くなるのかな
2021/10/04(月) 12:54:51.17ID:X/RNGavO0
>>296
そうね。
ただVBAのクラスは1クラス1モジュール使ってしまうのと、クラスが格納されているフォルダが一階層しか使えないからネーミングに気を付けて後でそれがそういう意味を持つクラスだって分かるようにしておかないとね。

後、あれやこれやと引数のクラス作らなくても、引数として格納する変数が一意でいい場合は標準モジュールでも同じように作れば使えるよ。

ただしこの場合は引数として渡すんじゃなくてその標準モジュール側に作ったプロパティを直接読みに行くことになるけどね。まぁ使い分けだね。
2021/10/04(月) 13:39:00.82ID:1MgeDxIh0
マクロを実行させると、Excelが落ちてしまい、
ステップ実行させるとマクロが正常終了orExcelが落ちない
ていう事になってるんだが、
どこで異常終了してるか調べる方法ある?
2021/10/04(月) 13:41:09.43ID:X/RNGavO0
>>298
ブレイクポイント貼りまくりで
徐々に外して落ちてる範囲を狭めて
最終的ににどこで落ちてるか確定させる
2021/10/04(月) 13:54:27.50ID:X/RNGavO0
上記のやり方が大変だというのであれば
Logをどこかのtxtファイルにはく、という手もある。
2021/10/04(月) 14:13:00.80ID:1MgeDxIh0
>>299,300
ブレイクポイントを貼ると落ちない。
なんとなくやばい場所は分かってるんだけど、on errorでもcatchできないんだよな。
やってることは、 uiautomationを使ってコンボボックス叩く(Expand)てことやってるんだが、
おそらくその行で落ちるんだが、
落ちずに成功する場合もあるんだよな。
2021/10/04(月) 14:34:03.70ID:AbV0YbaI0
>>301
WinAPIで似たような事があった
本来待ち時間が必要な処理を待たずに次へ行くからブレイクポイント無しだと落ちるってケースね
怪しい所にSleep関数使って500ミリ秒待たせたら落ちなくなった事があるよ
2021/10/04(月) 15:02:49.67ID:1MgeDxIh0
298です。
いろいろ試してみると、マクロを実行じゃなくてステップインボタン押してF5で実行させると落ちない事がわかった。
ならば、待ち時間の問題かと思って、sleepとかDoEventsを入れてみても、落ちる。
今の所唯一の回避策がステップイン+F5だな。
ググるとステップインだとうまくいくていう記事は散見されるが、合理的な説明はない。
2021/10/04(月) 15:29:55.92ID:NBSFfuMDM
コンボボックスって表示したときにはテータは入ってなくて
クリックされたときにデータを読みに行くとかじゃなかったかな
2021/10/04(月) 18:42:56.09ID:CJXp4LD30
タイマーの間隔が短すぎなんじゃね
2021/10/04(月) 19:42:11.08ID:2sXWsmVMa
ワークブック開きすぎ(それも容量やシートが多すぎ)や、複数アプリケーション開きながらマクロ動かすと遅くなるからそういうところからも気をつけるといいかもしれない事例
2021/10/04(月) 20:35:24.21ID:X/RNGavO0
>>303
当たりをつけるというフィジカルな部分ももちろん大事だけれど、本当に自分が当たりをつけたところが原因なのか切り分けを行った方がいいね。

その為にもどこで落ちているかを確定するのが一番先にやることだよね。やっぱりLogをtxtファイルか何かに出力するのが遠回りになるようで一番近道かもしれないよ。
箇所箇所で吐き出すロジック組み込んで、毎回書き込んでセーブしておけばどこで途切れたかで分かると思うからそれで絞り込んでどの命令で落ちたかを確定出来れば儲けもの。

もっとも、都度落ちる箇所が違う場合もあるかもだろうけど、そうなったらそうなったでそれから当たりをつけて調べればいいのであって、まず落ちている箇所が特定出来れば原因もある程度絞れるよね。
2021/10/04(月) 20:43:05.82ID:TWw1hYLnM
>>296
たいていはユーザー定義型で十分
2021/10/04(月) 22:16:21.62ID:YLhov1R00
For i = 1 to 10
Call Sleep(200)
DoEvents
Next i
310デフォルトの名無しさん (ワッチョイ e38e-6V0L)
垢版 |
2021/10/05(火) 00:51:53.00ID:AqVIusQn0
>>296
お前の知能が足りなくてアウアウしてるだけだろ
2021/10/05(火) 15:40:04.36ID:dJ3N05Swa
ちょっと教えてください
コントロール上にマルチページ「Multipage1」があるとき、下を実行するとエラーが出るんですが、何故か分からんのです

Private Sub UserForm_Initialize()
Dim buf As String
buf = "D3"
Set MP = MultiPage1
MP.Pages.Add
MP.Pages("Page3").Name = buf
MP.Pages(buf).Name = "X3" ←ここ。「13:型が一致しません」
End Sub
2021/10/05(火) 15:45:39.37ID:dJ3N05Swa
補足ながら>>311はMPもマルチページとして宣言するか該当箇所をMP.Pages("D3").Name = "X3"に書き換えれば期待通り動くんですよね
どういう仕組みなのか
2021/10/05(火) 15:56:25.07ID:hS5WuwV9r
worksheetfunctionの引数に配列入れるときって数に上限があるな
警告も出さないしほんまクソ
2021/10/05(火) 15:56:31.46ID:hS5WuwV9r
worksheetfunctionの引数に配列入れるときって数に上限があるな
警告も出さないしほんまクソ
2021/10/05(火) 16:15:51.73ID:2oqKIsmm0
>>312
いや
普通に通るけど。ちな2016。
2021/10/05(火) 16:19:44.73ID:2oqKIsmm0
あ、でもこっちはOption Explicit 付けてたから
MPはキチンと型宣言してたな。
でもそこはあまり関係ないよね?
317デフォルトの名無しさん (アウアウキー Sa87-Kp1k)
垢版 |
2021/10/05(火) 16:21:29.24ID:dJ3N05Swa
>>316
や、たぶん関係するっぽいですかね?
こちらオプション無し、宣言は無しまたはas objectだとダメでas multipageだと通った
2021/10/05(火) 16:29:34.84ID:2oqKIsmm0
>>317
ふーん
不思議だねぇ
ちなみに宣言しないで走らせたときの
MPの内部型ってどうなってる?
ごめん、もう走ったからこっちは
EXCELのブック消しちゃったんだ。
2021/10/05(火) 16:32:02.05ID:dJ3N05Swa
variant/object/multipageでした
2021/10/05(火) 16:36:45.31ID:2oqKIsmm0
>>319
やっぱり不思議だねぇ
その辺の内情は分からないな
一応片付いたことになるのかも知れないけど
誰かその辺知ってたらレスが付くんじゃないかな
2021/10/05(火) 16:39:04.47ID:dJ3N05Swa
そうですね、とりあえず急ぎとか困りではないので一旦これで…
ご回答ありがとうございました
2021/10/05(火) 18:26:27.16ID:jAVyPZWcM
型推論するのに失敗してるんじゃね
2021/10/05(火) 21:37:47.06ID:LdUtAYwX0
Pagesの引数に変数渡すと数字として解釈しようとしてるっぽいな
buf = "2" とかにするとIndex=2のページを参照してるようだ
文字列リテラルならちゃんと名称として解釈してるっぽい
ちな365の64ビット

これ以上はサポートにでも問い合わせるしかねぇんじゃね
324デフォルトの名無しさん (アウアウウー Sa27-4HLA)
垢版 |
2021/10/07(木) 18:28:58.89ID:p9itA/YXa
マクロの記録機能使ってマクロの作成したいんだがピボットテーブルのプルダウンから任意の値だけを抜き出すのってどうやってやればいいの?

毎回モジュール見直すとvisible farceになってて要するに抜き出したいもの以外を表示しないようにしてる構文て事だよね?
こうなると仮に次回このマクロを使う時にvisible farceになってない値が新しく出てくるとそれも表示されちゃうって事だよね?
じゃなくていくら値が増えても決められた値だけを抜き出すように作りたいんだ
どなたか教えて下さい
2021/10/07(木) 20:11:24.24ID:70iiidwq0
>>324
記録してみてどうなってるか見てみれば分かるじゃん
2021/10/07(木) 21:05:39.19ID:D5dO/oMJ0
>>324
Falseね
ピボット周りのフィルタはFor EachでTrueFalseを一つ一つやっていかないと無理な仕様
遅いしわかりにくいけど割り切って
2021/10/07(木) 21:29:48.70ID:AykPZAFh0
ActiveSheet.PivotTables("ぴぼっとてーぶる").PivotFields("ふぃーるど").ClearAllFilters
ActiveSheet.PivotTables("ぴぼっとてーぶる").PivotFields("ふぃーるど").PivotFilters.Add Type:=xlCaptionEquals, Value1:="表示したいもの"
2021/10/07(木) 23:55:42.12ID:P9pCLiyt0
VBAで最適化したら仕事増やされた話ってよく聞くけど
そいつが辞めたらそいつに回されてた膨大な仕事はどうなるん
329デフォルトの名無しさん (アウアウキー Sacb-h0Ad)
垢版 |
2021/10/08(金) 00:17:45.54ID:sJT5Ti/qa
うちの職場は適当にvbaでつくったやつをちゃんとしたアプリに置き換えてるよ
2021/10/08(金) 00:31:33.80ID:GXvDbP/z0
アプリだろうがvbaだろうが作った人間がやめたらメンテできなくて終わるんじゃないの
開発者が大勢いるようなレアな職場ならともかく
vba使ってるところなんてたいてい事務で
エクセル職人が少数いるだけだろ
2021/10/08(金) 00:37:30.31ID:d3eTt0zpM
実際にはそういうときには業務そのものが消滅するケースも多いよ
そもそもVBAで簡単に自動化できるような業務はもともと無意味であるものが多いからな
2021/10/08(金) 02:32:08.41ID:KEaimES90
人がやめた後に職場がどうなるかはその職場の責任者が決めるんじゃね
下っ端が気にすることじゃない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。