25/10/05 08:28:28.60 Gl792nZh.net
LET、XLOOKUP、FILTER、GROUPBYあたりを駆使すればワークシート関数でも結構いける
わざわざ別アプリ起動してマイナー言語でとはならないかな・・・
23:デフォルトの名無しさん
25/10/05 08:39:23.86 beeJ4mT2.net
それこそ事前の準備で済む話 いきなり大容量のデータに接続してあれこれしようとするから混乱する
結果から想定されるデータ群に仕様を整えておくのが先ず最初にすべきこと
ADO が非推奨と成り果てたからVBA内でSQL使おうにも先細りなんだろうけど、まだやれない訳じゃ無いし(最新版じゃ無理なのか)
何であれ、いきなり野良データに接続してあんなことやこんなことしようとする方が無謀 データの事前整形はイロハのイ
24:デフォルトの名無しさん
25/10/05 09:10:22.53 knUkubLb.net
>>23
その事前のデータ整形がパワークエリーなんですよ
そもそもPower BIはパワークエリーとパワーピボットの二つが合わさった製品だし
ADOが非推奨だとは知らなかったです
やっぱりVBAはダメダメなんですね
25:デフォルトの名無しさん
25/10/05 09:12:20.05 knUkubLb.net
>>22
GROUPBY関数は最近になってやっとM365だけで使える様になった引数の翻訳も終わっていない関数じゃ無いですか
しかもGROUPBYに渡す元データのUnPivotはどうするんですか?
UnPivot関数はありませんよ?
26:デフォルトの名無しさん
25/10/05 09:18:37.32 knUkubLb.net
パワークエリーは
let
変数名 = 関数
in
ただこれだけです
各ステップ名にそれぞれの関数の戻り値(型)が代入されるだけです
一体どれだけ簡単なのかと
名前付きfunction関数なら
(変数名 型) =>
let
変数名 = 関数
in
ただこれだけ
27:デフォルトの名無しさん
25/10/05 09:28:11.50 knUkubLb.net
会社で本格的なデータベースを構築しているとか、サーバーが使える、あるいは業務にしているのならそりゃSQLを推奨しますよ
しかし日本企業がそんなにITの導入をしているとは私はまったく思えません
だから当然必然的にExcelの標準機能一択になるわけです
世の中の企業にはVBAを禁止している会社もあると聞きます
だったら尚更パワークエリー
あとSQLはETLではないからSQLにできないことも多い
28:デフォルトの名無しさん
25/10/05 09:41:07.01 beeJ4mT2.net
UnPivot て、Excelの原始的な機能で、貼り付け時に行/列入れ替え 貼り付けだけで済むんじゃないのか?
そんな単純じゃない!もっともっと厳しいデータなんだ!ってことなのか?
取り込んだデータが行列逆だったら、真っ先にそれするもんじゃないのか? 基本のキ?
29:デフォルトの名無しさん
25/10/05 09:51:23.22 knUkubLb.net
>>28
UnPivotと行列入れ替えは全くの別物ですよ
行列入れ替えは本当にただ
列
行
を
行
列
にするだけなんだけど、UnPivotは横持ちデータを縦持ちデータに変換する事を言います
例えば
1月2月3月4月5月〜
各エリア
〜
という表があればその各月のデータを
エリア列|月列
とリスト表形式に整えてくれます
これ無くして高度な集計はできません
30:デフォルトの名無しさん
25/10/05 09:51:47.38 beeJ4mT2.net
社内にサーバー(NAS含む)も仕立てていない企業が蓄えてる大容量のデータって
いや、Power Query を否定するつもりは無いけど、今のExcelの標準の機能で殆ど賄えやしないか?
ものっそ古いデータもあって、当時はデータの統一性もまばらで、セル内改行してるだの
文字の位置合わせにスペース使ってるだの、予想外のデータだったりすることもあるんだから
イロハのイ、基本のキは守っておいて損は無いんだけど
31:デフォルトの名無しさん
25/10/05 09:58:16.44 QIz/HuGJ.net
自分はSQL派なので事前に定義されたテーブルにデータを入れておくという考え方の方になじみがあるけど、表っぽいデータなら大抵はうまい塩梅に整形できますぜということならパワークエリにもそれなりに活用場面は出てくると思う。ただ、クエリ部分をSQLからパワークエリに置き換えるのはちょっと躊躇を覚えるかな。標準規格があって、ペンダーが複数いるという安心感はかなり大きいので。
SQLを除いてExcelおよびその関連機能であるVBA、パワークエリだけで考えたときに、それぞれどういう長所・短所があるかというのはそれはそれで1つの議論ではあるね。
32:デフォルトの名無しさん
25/10/05 10:08:01.77 knUkubLb.net
なんでVBAで流石にUnPivot旬は難しいと言えるかと言うと、UnPivotする為にはそれぞれの項目とその数に応じて大量に行の挿入を行う必要があるからです
これをVBAでやろうとすると行ズレ問題に頭を悩ませるし、セル操作、Rangeは非常に遅いし、2次配列の操作はVBAは非常に貧弱だからです
一応、パワークエリーが登場する前(本当はMicrosoft Queryという前身機能があったらしいですが)のVBAのまず最初にやる事はUnPivotだったらしいので、絶対にできないとは言いません
しかし、パワークエリーならボタンぽちぽちで済む事を全部コードに書かなきゃならないので非常に面倒くさい上に不具合もあります
サーバーがある、本物のSQLが使用できる環境があると言うのなら当然止めません
既に正規化されているデータだけを扱うと言うのであれば尚更でしょう
しかし世の中その様なデータばかりを扱うとは到底思えません
33:デフォルトの名無しさん
25/10/05 10:09:32.03 knUkubLb.net
>>31
表っぽいデータなら「大抵」ではなく、「全て」うまい塩梅に整形できますぜ です
なぜならそれがETLだからです
34:デフォルトの名無しさん
25/10/05 10:30:14.94 beeJ4mT2.net
その「ボタンぽちぽち」で出来てしまう点を懸念してンだけどねw
野良データがガサツでも、ぽちぽちしたらちゃんとした表に仕上がりました! で、そのデータの
信ぴょう性とかファクトが担保されるのか?という面で、イとかキは疎かにしちゃいけない、と
で、そのイとかキをしてる最中に「これとこれをこうすりゃこう仕上がる」という、データ加工の
手順や経緯や法則がきちんと把握できてく(それが判ればほぼほぼ基本機能で済むケースが多いのも現実)
そういう基盤がキチンと制作者も受け取る側も共有出来てるなら、どんなアプリ使おうとも構わんけど
作る側がその辺ないがしろにして「この機能サイコー!」だけで盲信して得意満面に仕上げてきた表ほど
役に立たないものも無いってのも現実 まあ、老婆心だけだけどw
35:デフォルトの名無しさん
25/10/05 10:50:37.84 YF7wvbQm.net
たぶん想定されている使われ方が結構違うんだろうね。
DBの場合、事前に設計されたテーブルを前提としているから、テーブル設計で失敗していない限りそもそもpivotとかunpivotとかが必要になる機会自体そんなにないと思うのよ。古いシステムからデータを取り込んだりするときくらいじゃない? だからpivot / unpivot の利便性をメリットとして挙げられてもあんまりピンと来ない感がある。
パワークエリの方は、どちらかというと表っぽいデータ(いわゆる野良データも含む)をアドホックに処理できることに重点を置いているんでしょう。そういう場面ならpivot / unpivot が簡単にできると便利というのは分かる。
>>34
イとかキって何だと思ったが、イロハのイとキホンのキか。34を読んだだけでこれに気付いたのって凄くない?w
36:デフォルトの名無しさん
25/10/05 10:51:30.92 R8xFs1sO.net
そんなのVBAだろうとPQだろうと同じ
当たり前
当たり前のこと毎週書いてろw
37:デフォルトの名無しさん
25/10/05 11:44:07.60 knUkubLb.net
元データがちゃんと正規化されているリスト表だけだったらSQLでも十分
それはその通りです
でも世の中残念ながらそうじゃないんです
これはなぜETLというツールがいくつもあるのかという話です
大量の列があるデータをソフトウエアがCSVで出力されるケースを私は実際に知っているのです
そしてその時に私はUnPivotを知りました
38:デフォルトの名無しさん
25/10/05 11:49:26.34 knUkubLb.net
これだけは言えると思うのは
確かにSQLは1列に一つの種類の値、型のデータを扱うのなら最適化されているので高速ですが、そうでない場合、データのクリーニング、前処理が必要は場合は必ずしもそうではないと思います
あとデータソースは各種サーバーに出来るので、まずはお試しでやってみる、という叩き台やテストを「お手軽に」する事もできます
39:デフォルトの名無しさん
25/10/05 12:15:13.64 YF7wvbQm.net
そりゃデータの整形や前処理はSQLじゃなくて、ホスト言語の方の守備範囲だからね。
だから整形・前処理の部分で比較するなら、「コードを書く必要があるけど汎用性の高いホスト言語(JavaScriptとかPythonとか)」と、「ノーコードで済んで利便性が高いけどMSにロックインされるパワークエリ」という比較になるんじゃない?
表っぽいデータをアドホックに次々と分析していくような用途ならパワークエリの方が便利だろうし、永続的なデータを扱うならSQLの方が安心感がある。
フォーマットが完全に固まっているならVBAも選択肢に入ってくるだろうし。
40:デフォルトの名無しさん
25/10/05 12:58:00.67 Gl792nZh.net
>>29
UNPIVOTはCHOOSECOLSとVSTACKで余裕
41:デフォルトの名無しさん
25/10/05 13:40:37.24 Gl792nZh.net
>>29
=LET(
UNPIVOT,LAMBDA(table,values,
DROP(REDUCE(0,SEQUENCE(COLUMNS(values)),LAMBDA(a,v,
LET(
value,INDEX(values,v),
VSTACK(a,HSTACK(EXPAND(value,ROWS(table),,value),CHOOSECOLS(table,v)))
)
)),1)
),
UNPIVOT(C1:G10,{"月","火","水","木","金"})
)
42:デフォルトの名無しさん
25/10/05 14:06:08.15 beeJ4mT2.net
サーバーも持ち合わせずVBAも禁止されてる企業って書いてみたり
とあるアプリが大量の列があるCSVを吐き出したケースがあって、それでUnpivotを知ったとか書いてるし
やっぱ新しいおもちゃに大興奮してるとしか読めない
野良と言えどもサイバー空間上にあるデータは、まがりなりにもDBのお作法に沿った整形されてるんじゃないのか?
WEBページやクラウドデータとかに接続するなら尚更
手強い野良っつーのは社内に保管されてる過去20年のデータみたいな意味で、>>30 に書いた例なんかかわいい方
とも思えるファイルがゴロゴロしてることもある それを上から十行ぐらいナナメ読みして憶測で判断してたら
しっぺ返し喰らう
その大量に吐き出されたCSVだって、実はD列のデータだけじゃ無くてAA列だのBB列だののデータと組でようやく意味を為す
なんてぇケースだってごまんと見て来た キとかイとかw データを扱うお作法は蔑ろにしてはいけない
データクレンジングとか昨今は呼ぶのか? それは機能に任せる前に、人間の目で手でまずは洗浄しておくべき
キカイは命令された事しかやらない・できない その命令する側が手抜きしてたら手抜きされたデータの塊になるだけ
43:デフォルトの名無しさん
25/10/05 14:30:19.32 YF7wvbQm.net
>>40-41
そういうのは余裕とは言わないw 凄いとは思うけど、人が読んだり書いたりするコードじゃないでしょ。AIに生成させるとかならありかもしれないが。
2020年代になってから関数が大量に追加されているのって、AI使用が視野に入っているからなのかなとちょっと思った。
44:デフォルトの名無しさん
25/10/05 19:35:04.95 knUkubLb.net
>>42
複合キーを利用する、複数列の値を使用する、結合するという事はできますよ
45:デフォルトの名無しさん
25/10/05 20:29:32.36 knUkubLb.net
そもそもExcelになぜPythonが導入されたかと言うと、パワークエリーで前処理、集計したデータを非公式に導入したPythonでさらに高度な集計を行う、と言う事が行われていたからです。
そう言う事が行われているくらい非常に協力な機能なのです。
JavaScriptのコードも動かせます。
46:デフォルトの名無しさん
25/10/05 21:56:29.73 bIl70Ycb.net
言いたいことがちょっとわからない
Python in Excelの話をしてるの?
Officeアドインの話をしてるの?
Officeスクリプトの話をしてるの?
47:デフォルトの名無しさん
25/10/05 22:15:43.84 knUkubLb.net
>>46
全てパワークエリーの話です
48:デフォルトの名無しさん
25/10/05 22:33:36.02 YF7wvbQm.net
パワークエリって、(SQLの代替というよりも)データフレーム系のライブラリ(PythonでいうところのPandasとか)に近い機能なんじゃないかな。自分はデータフレーム系のライブラリってほとんど触ったことがないから分からないけれど。
49:デフォルトの名無しさん
25/10/05 23:04:56.42 eANUHAz5.net
>>45
へー、MSがPythonを組み込んだ理由の客観的証拠を示してごらん
50:デフォルトの名無しさん
25/10/06 02:26:33.81 jIkfS85a.net
>>49
キチガイの妄想なんだから答えるわけないだろw
51:デフォルトの名無しさん
25/10/06 08:37:55.38 /QQ+j/LM.net
VBAをPythonに置き換えようと開発進めてたけど、
サードパーティーのアドオンが優秀なので公式でやる必要が無くなった(ここまでMS開発者ブログより)
でも成果物を使わないのも勿体ないから使ってる(俺の妄想)
ってことだろ
52:デフォルトの名無しさん
25/10/06 09:38:05.20 CrcLFeiU.net
>>48
普段SoR系のシステムばかり見てる人には馴染みのない話かもしれないけど、
ビジネスアナリティクスの世界では、SQLは汎用的なデータ分析ツールとして結構カジュアルに広く使われているのです
53:デフォルトの名無しさん
25/10/06 10:52:24.34 0TYeR8/V.net
まーた新しいオモチャ拡げ出したぞw SoR系だからSQLが重宝されてきたんだろうに
アナリティクスなんて概念、後発も後発 まあ、SoRに於いてSQLでAnalyticsしてた
という見方もできるわけで、もはや何言っても相手に響かないからお口チャックしときなよ
54:デフォルトの名無しさん
25/10/06 11:44:57.78 sh+WI5Ke.net
話の繋がりがよく分からないが、そういう分析方面でならパワークエリも強みを活かせるということであれば、適材適所ってことでいいんじゃない? カジュアルかつアドホックに色々できるということが強みなんだろうから。
55:デフォルトの名無しさん
25/10/06 11:56:16.85 6luOortV.net
相変わらずVBAの話題以外では盛り上がるVBAスレ
56:デフォルトの名無しさん
25/10/06 13:59:52.57 +9LX7loy.net
>>54
そう、パワークエリの主用途である分析においては、その役割はSQLとPythonの両方と大きく重なる
そのうちどれが優れているという話ではないが、VBAが大きく劣ることは確かだな
57:デフォルトの名無しさん
25/10/06 16:51:14.76 0TYeR8/V.net
本気でそう思ってるなら、なんでここに居るし
ソッチのスレに常駐してるなり新スレ立てるなりして、ソッチで続けてればいいのに
単にケンカ売りに来てるん?
58:デフォルトの名無しさん
25/10/06 20:20:36.05 eyP2NojD.net
本物のサーバーに対してSQLを叩いた方が高速なのも
Pythonで複雑な計算を行う方が高速(素のPythonのループ処理はVBAより遅い)なのも一切否定していません
私はただExcelしか使用できない環境でも便利な機能がありますよ
と言っただけです
59:デフォルトの名無しさん
25/10/07 10:01:47.48 vEgtxFhe.net
社会人として言い訳はみっともない やっぱりおもちゃを片付けられないしんのすけレベル
(あなた達は知らないだろうけど)Power Query っていう便利な機能がありますよ、とでも主張したかったのか?
VBAスレで? ビジネスSoft板のExcel相談所辺りで言い募るならまだしも、ここの住人なんかはとっくに試用してる
だろうに 試したうえでケースバイで使う事もあるかも知らんけど、実務でそんなに活用するシーンも無いな
という肌感覚じゃあ無いのか 取り敢えずVBAでSQL書いて目的は達成できているんだし
ネット上とかの得体の知れない大量のデータに対してザッピングしてみて有用なデータかどうか、予め毒見してみて
実際に利用するかどうか判断の元にするような時には使ってみるのも楽だろうけど
Power Query 至る所でバンバン使い倒してますよ、という実務者カモン 事例提示プリーズ
60:デフォルトの名無しさん
25/10/07 10:38:57.70 msD1NTB5.net
何でスレチのPQにいつまでも係ってんだよ
>>15がExcel自動化云々言ったところでスレチはスレチ
そも自動化ではない
スルー力なさ過ぎ
61:デフォルトの名無しさん
25/10/07 15:16:40.55 bK/qJy7b.net
いつもの境界知能の人だろ
62:デフォルトの名無しさん
25/10/07 20:10:16.59 S93aMo2F.net
そうね
いつもの境界知能の人が必死にAIの回答をコピペしてる感じだね
63:デフォルトの名無しさん
25/10/09 12:42:40.22 M3Iz7qJA.net
仕事できなくて年収低いんだから
パワークエリ使おうがVBA使おうがたいしたもんできないよ
64:デフォルトの名無しさん
25/10/09 17:06:30.50 +B8QV1e9.net
はい終了~
65:デフォルトの名無しさん
25/10/10 06:43:28.00 oR3uH8u+.net
質の高い回答はなく、誹謗中傷しかないのはなぜなのでしょうか?
66:デフォルトの名無しさん
25/10/10 08:26:12.39 hdfpIN1/.net
・質が低く適切な回答をできない質問だから
・質問は妥当だが答えられない、でも何か言いたい質の低い回答者がいるから
大抵はこのどちらから
67:デフォルトの名無しさん
25/10/10 09:13:23.19 XIv0t+FX.net
自分はOFFICEスクリプトって使ったことないんだけど、VBAとは適宜棲み分けがされそうな感じ? それともVBAを置き換える方に行きそう? 一応、VBAにできること全てができるわけではないってことは聞いているけど。
68:デフォルトの名無しさん
25/10/10 09:56:09.14 cInZxt5e.net
>>65
貴方が質の高い回答をしないのはなぜ?
69:デフォルトの名無しさん
25/10/10 10:44:13.39 MfSuKUVs.net
OFFICEスクリプトは、あくまでも定型業務の自動化、しかもOneDrive上で を目指してるので
まだまだ発展途上だし
何より、OneDrive自体が今のところ各端末のパフォーマンスを下げる最大要因に成り果ててるので
様子見勢が多いのだと思われ(何でそこまでMSに加勢しなきゃならんのか、と)
70:デフォルトの名無しさん
25/10/10 11:49:19.24 +bT2e97Y.net
なるほど、OFFICEスクリプトはまだ全然って感じなのね。
VBAは構文が古くさいと言われることが多いけど、少なくともその点を理由としてOFFICEスクリプトに移行しようという動きはあまりないということか。やっぱりクラウドベースでっていうところが想像以上にネックになっているということなのね(たしかにちょっと試してみようと思ったときに、クラウドで云々と言われたら面倒くさそうとなるのは分かる気がする)。
71:デフォルトの名無しさん
25/10/10 15:30:53.82 YT8cXARa.net
いやいや、それは逆
そもそもデータが散らばってるからそれを纏めるためにVBAを使うことはよくあって、
VBAのユースケースとしてはかなり大きなウェイトを占めるんだよ
クラウドだと共有ブックを直接編集すればいいので、少なくともそういう用途のVBAのニーズは大幅に減る
72:デフォルトの名無しさん
25/10/10 17:15:15.57 rdtXmqP1.net
Officeスクリプトはアカウントに紐づくからVBAのようなファイル1つで済む手軽さがない
73:デフォルトの名無しさん
25/10/10 17:46:44.61 +bT2e97Y.net
ブックの共有とかって全然しないから、そこら辺の認識はなかったな。クラウドというよりOneDriveとか管理のされ方に問題があるって感じなのかな。
74:デフォルトの名無しさん
25/10/10 18:31:05.45 DrrVl6np.net
そも動かすプラットフォームが違うんだからどちらを使うか選ぶシーンが存在しない
75:デフォルトの名無しさん
25/10/10 18:46:30.53 YT8cXARa.net
>>73
裁量の問題だよ
未だにVBAに人気がある本質的な理由は、既存のワークフローを全く変えることなく勝手に自分の手元だけで作業を効率化できるから
一方で、クラウド共有を前提にしてなお残る面倒な単純作業はOfficeスクリプトで自動化しましょうとなれば、みんなのワークフローを見直さなきゃいけないでしょ
それは>>74のように目的ではなく与えられた作業に対してのみ責任を持っているような人達にはハードルが高すぎるわけ
76:デフォルトの名無しさん
25/10/10 22:45:13.21 6xVCTbsk.net
またいつもの境界知能者が荒らしてる
77:デフォルトの名無しさん
25/10/10 23:20:57.31 XIv0t+FX.net
理由はともかく、OFFICEスクリプトは少なくとも現状では習得上の優先順位が高い感じではなさそうね。
VBAの構文が苦手というタイプの人はPytnonのxlwingsとかに流れる感じなのかな。あれはPytnon越しにVBAのオブジェクトをいじっているようなものなので、実質VBAみたいな感じだけど。
78:デフォルトの名無しさん
25/10/11 08:45:48.88 X9HmeuU+.net
>>76
傍から見てると、あんたもソッチにズブズブ沈み込んでる風に見えるがな
もそっと、知恵のある発言するなり、若しくはボケだのギャグだの
ユーモアやペーソス混ぜたような発言とかを心掛けてもらえると、コッチも読んでて心地いいんだが
79:デフォルトの名無しさん
25/10/11 09:06:22.22 iR3N7kKL.net
xlwingsいいよな
調子に乗って沢山呼ぶと糞遅いけど
80:デフォルトの名無しさん
25/10/11 12:07:30.45 Yl843iVz.net
>>77
その理屈だとCOMはVBAってことになるな
なんだよVBA滅茶苦茶使われてるんじゃん
81:デフォルトの名無しさん
25/10/16 14:30:54.76 oDClVh0R.net
プルールのひとつめっけ
URLリンク(dl.ndl.go.jp)
日本全国諸会社役員録という本、アドレスはあくまでも31/914ページという意味
最初から見てっても中々面白い 東京府だし、並び順はいろは順だし ヰもヱもあるし
ビルデングもビルヂングも混在 日本フヰラメンドあり日本フアイアツト自動車あり
ブルドックソースが何だって?
82:デフォルトの名無しさん
25/10/16 15:17:07.38 oDClVh0R.net
URLリンク(dl.ndl.go.jp)
83:デフォルトの名無しさん
25/10/17 06:28:14.20 Qpm+e9K0.net
6分で終わる簡単な作業をいつもやってるからと思ってExcel VBAにしたら4時間もかかった
40回でペイする計算
1ヶ月に1回の頻度として3年4ヶ月でペイする計算
1ヶ月以上ブランクがあって作るのに時間がかかった
これを作るときに以前作った別のものをまた作ってしまったことに大体完成してから気づいた
使わないと作ったことを忘れる
役に立つものでこれからも使うか使わないか前もって予測できないから作るしかない
そのなかに使うものが出てくるし使わないものも出てくる
ちょこちょこ作るのは効果があると分かってるが本当に効果があるか愚痴を言いたくなった
84:デフォルトの名無しさん
25/10/17 08:01:24.16 lzj//9Gm.net
なんたるプログラミング能力が低さよ
85:デフォルトの名無しさん
25/10/17 09:21:41.22 2jUaiXhz.net
まあスキルも積み重ねが大事
あと人為的ミス防止やデータが多い時も速いことなども目的にしないとね
若いなら転職の小ネタにもできる
86:デフォルトの名無しさん
25/10/17 16:13:06.36 IG/te/XB.net
イレギュラーなデータとかエラー処理とか完璧にやろうとするとメインの処理は簡単でもめちゃくちゃ長いコードになったりする
87:デフォルトの名無しさん
25/10/17 18:48:27.53 ZOdCVHpQ.net
でも他人に使わせる前提だとそこがすごく大事なんだよな
自分用を手早く作れるのはそこ端折れるからってのがある
88:デフォルトの名無しさん
25/10/18 14:30:46.29 ViyQQZbE.net
質問です
・テキストボックスを多用したユーザーフォーム群を作っていて、IMEMode変更を多用している
・一部vbIMEModeKatakanahalf(以下半カナ)に設定してある
・フォームを使い終わったとき、IMEModeOnが半カナに固定されてしまう(要するにA↔半カナ状態に)
そうなってしまうのは仕方ないけど、フォームを抜ける時にA↔全かなの状態に戻したい
ということでTerminate処理で全かなのBoxにSetfocusしてから抜けるようにしてみたところ、ステップインなら成功するけど通しで処理させると失敗してしまう…
なんかいい方法ありませんか?
全かなBoxのみを設置した仮フォームを呼び出してすぐ閉じるくらいしかないのかなぁ…
89:デフォルトの名無しさん
25/10/18 14:31:46.82 ViyQQZbE.net
それこそ>>87の言うように自分で使う分には「ちと面倒だけどまあ戻せばいいだけ」で済むけど、PCに疎い人達にも使わせるから「なんかひらがなが打てなくなったんだけど~」って言われるのは目に見えてるので…
90:デフォルトの名無しさん
25/10/18 14:46:43.70 ViyQQZbE.net
連レスすみません
「基本的には英数字だけど、半カナも打つことがある」Boxもあるので、「A↔半カナ状態のIMEModeOff」にするとかもできれば理想です
91:デフォルトの名無しさん
25/10/18 17:07:29.84 +vuE6Mxs.net
>>88
TerminateだとSetFocusしようにもすでにテキストボックスが存在しないんじゃないの?
× Terminate
○ QueryClose
92:デフォルトの名無しさん
25/10/18 19:05:19.85 0zFTkOmI.net
>>90
自由に入力させて、入力後に判定処理入れるのがいい
93:デフォルトの名無しさん
25/10/18 19:06:44.69 ViyQQZbE.net
>>91
レスありがとうございます
QueryCloseでもダメでした…
なるはやで実用化したかったので、とりあえずは全かなBoxを置いたダミーフォームを一瞬出現する形でお茶を濁しました…
でも自分でもかなり使うモノだから気持ち悪さが拭えないので、可能ならどうにかもっとスマートに処理したい…
94:デフォルトの名無しさん
25/10/18 19:17:28.64 ViyQQZbE.net
>>92
ありがとうございます
そのまま打ってF8やF10ってのを覚えてくれれば楽なんですけどね…
PC疎い民もさすがに半角全角キーを押すことくらいは分かるので、基本的にはIMEModeOffだけど半角全角キーを押すと半カナになるってのがやりたいんです
我ながら駄文すぎて分かりにくかったけど、要約するとIMEModeOn時の行き先を自在に操りたいってことですね
95:デフォルトの名無しさん
25/10/19 10:59:45.64 /YxBx4q/.net
テキストボックスのイベントでExitにIMEを元に戻す記述を書く
URLリンク(www.javadrive.jp)
sheet上でも出来るとは まぁ、知らん奴が使ったらヒステリー起こしそうだが
URLリンク(infith.com)
96:デフォルトの名無しさん
25/10/28 09:16:29.14 Kk67eWAx.net
Worksheet_BeforeRightClickを素早いクリックに反応させる方法ってありますか?
例えば右クリックでカウントアップするような場合、ゆっくりクリックしないと取りこぼすので、それをできるだけ軽減したいという話です
97:デフォルトの名無しさん
25/10/28 11:49:26.91 BUlcRJ6d.net
>>96
ワークシートのイベントはどれも動作が遅い
透明なオートシェイプをセルの上に重ねて、オートシェイプのClickイベントを使えば16連射も可能になる
ただし右クリックでは動作しない
98:デフォルトの名無しさん
25/10/28 13:00:23.09 NppxA0uZ.net
>>96
素早いクリックがダブルクリックと判定されてるかもね
99:デフォルトの名無しさん
25/10/28 16:30:11.08 xLHeS3+n.net
そんなに連打が必要な業務なのかわからんけど
マウスも一枚岩じゃ無いから(個体によって性能違ったり、有線無線で変わるかも知らんし)
ユーザーフォームとかにオプションボタン並べて、○1 ○5 ○10 ○25 ○50 ・・とかを事前に選択してから
右クリさせるのはどうか 二度手間三度手間が嫌だとクレーム来るのとトレードオフに成るが
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True ' Prevents the default right-click menu
Application.ScreenUpdating = False ' Turn off screen updating
' Your optimized code here, e.g., displaying a custom menu or performing actions
' ...
Dim i As Integer
For i = 0 To 100
' ステータスバーの表示が更新されない場合は、コメントをはずす
'DoEvents
' ステータスバーに出力
Application.StatusBar = "処理回数:" & i
Next
' ステータスバーのクリア
'Application.StatusBar = False
Application.ScreenUpdating = True ' Turn screen updating back on
End Sub
その辺で拾った野良のコードの合体モンだけど、回数:100にするのも一瞬なんだし
100:デフォルトの名無しさん
25/10/28 18:40:17.09 k7xgJ8GR.net
そもそも右クリック連打が必要な設計を見直したほうが早いんじゃね
101:デフォルトの名無しさん
25/10/28 19:08:25.22 HpHj+cai.net
よく読め、連打が必要な訳じゃないと思うぞ
俺も似たような問題にぶち当たったことがあるから言いたいことは分かる
俺の場合はユーザーフォームだったからなんとでもやりようがあったけど、シートイベントでどうすべきかは思い付かんなぁ
ユーザーフォームなり透明オブジェクトなりで代用できそうか考えてみるのは大事かもな
102:デフォルトの名無しさん
25/10/28 19:36:17.85 xLHeS3+n.net
そうか、迂闊か
そういやチャタリング・チェックできるサイトとかあるから、そこでチェックもありか
103:デフォルトの名無しさん
25/10/28 20:59:15.35 WbU161W5.net
>>101
ダブルクリック判定にひっかかってるのかもしれんが、ユーザーフォームも単純な連打はうまく処理できない
104:デフォルトの名無しさん
25/10/28 21:36:11.37 uh3txXo7.net
要はこれっしょ
VBA フォームのボタンの反応が遅い理由と対策 - t-hom’s diary
URLリンク(thom.hateblo.jp)
これと同じようなことをワークシート右クリでやりたいってことやろ?
ワークシートだと安易に左クリックにはできない事情もあったりするし、こういう感じでフォームとかで代用できないか検討してみたら?
105:デフォルトの名無しさん
25/10/28 21:48:56.73 xheP7Ub+.net
レス遅れてすみません!
まさに>>104さんの言う通りです!
より具体的に言うと5種類の値から選ばせたくて右クリックで順繰り変更するマクロを作ってたんですが、例えば4番目の値を選びたいときなんかに慣れてくるとどうしても「カチカチカチカチ」って押してしまって反応が悪いと言われたのでどうにかしたくて
反応が悪いで済めばまだいいけど、それで間違った値のまま提出されたりすると困るのだ
106:デフォルトの名無しさん
25/10/28 21:49:30.45 xheP7Ub+.net
困るのだ じゃなくて 困るので です!!
107:デフォルトの名無しさん
25/10/28 21:57:34.33 DelTjWwd.net
バカボンのパパ(´^ω^)
108:デフォルトの名無しさん
25/10/28 22:41:09.17 wDWtv1wu.net
>>105
マウスじゃなくキーボードでトグルしていくUIはいかが?
こんなの(INSキーでA1セルの値が増える)
Sub Init()
Application.OnKey "{INSERT}", "ThisWorkbook.OnKey_Ins"
End Sub
Sub OnKey_Ins()
Range("A1").Value = Range("A1").Value + 1
End Sub
109:デフォルトの名無しさん
25/10/29 02:29:29.22 SoMHk0As.net
馬鹿は馬鹿な頭で考えた馬鹿な方法に固執する例
110:デフォルトの名無しさん
25/10/29 06:43:39.82 0NTgZ+aL.net
これでいいのだ
111:デフォルトの名無しさん
25/10/29 06:46:48.28 0NTgZ+aL.net
>>109
この人カバの逆立ちなのだ
112:96
25/10/29 07:39:58.02 K2GlQHDP.net
代案ありがとうございます!
やはり何かしらの大体策を考えるしかないですかね
右ダブルがキャッチできれば解決するんだけどなぁ
113:デフォルトの名無しさん
25/10/29 18:26:50.09 GMHlOV3c.net
カバは逆立ちしてもカバなのだ
114:デフォルトの名無しさん
25/10/30 03:56:51.64 k5qTIKM4.net
【高市自民】自維連立に衝撃 維新トップに赤旗砲「重大疑惑」2千万円絡む疑惑と 共産党Xが「だから裏金自民党とも組めるのか」と攻撃 説明求める声
URLリンク(news.yahoo.co.jp)
115:デフォルトの名無しさん
25/11/01 03:09:02.74 2yW7ZPbn.net
環境構築も配布の容易さも世の中の情報量も加味するとpythonなんて比較対象にならんな
特定のシステムでVBAに勝てるものはないわ
運用される規模は部署内程度になゆけどさ
116:デフォルトの名無しさん
25/11/01 10:44:13.81 kVMvyffB.net
マクロを起動するための各種コントロールは今後はフォームを使うべきなのか
これまで作ってきたActiveXコントロールは置き換えていくべきなのか
117:デフォルトの名無しさん
25/11/01 10:47:01.86 abESDRO+.net
PythonはてっきりVBE上で使えると思ってたからなぁ
ワークシート上の関数とかじゃ使いづらすぎて拍子抜けだわ
118:
25/11/01 16:45:53.46 IivztI/y.net
>>116
デフォルトでActiveX無効になったから、置き換えないと支障が出ることが多い
119:デフォルトの名無しさん
25/11/01 17:42:27.38 Hux2CBJ+.net
365に変えてから動かなくなった原因がそれだった
120:デフォルトの名無しさん
25/11/01 18:59:05.05 h6jsjnZZ.net
マクロが増えてきてどれがなんのマクロか分かんなくなってきた。間違ったマクロが実行されたEXCELが元に戻らないのも嫌だし、どうしたら良いですか?
121:デフォルトの名無しさん
25/11/01 19:04:29.39 xL3BSUWP.net
うまい具合に人のせいにしてください
122:デフォルトの名無しさん
25/11/01 19:35:09.78 b8gravi3.net
間違ったマクロを実行した時にEXCELを元に戻すマクロを作ればいい
123:デフォルトの名無しさん
25/11/01 19:53:55.68 +zpxt/zr.net
適切なマクロを実行するマクロを作る
124:デフォルトの名無しさん
25/11/01 20:11:15.61 6pe+t0kU.net
AIに丸投げして聞いたらいい
完璧に教えてくれるよ
125:デフォルトの名無しさん
25/11/01 22:42:21.33 h6jsjnZZ.net
>>121
採用!
126:デフォルトの名無しさん
25/11/05 14:44:44.11 rUtaLWLS.net
>>125
人のせいであっても現状の問題への対応はしなければならないのではないか
127:デフォルトの名無しさん
25/11/16 08:35:29.66 BUsW0orn.net
ピボットテーブルのスライサーが変更されたとき、
ピボットテーブルを置いているsheetについて
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
を使っていくつかのマクロを実行させるようにしているんだけど、
これが3つあって、関連するクエリーやらをちょっとメンテ作業すると、これも動いてしまうものだから、
いちいちコメントアウト?(頭に ' 付けるヤツ)にして、このマクロを止めている。
これもっと上手いやり方ないかしら?
128:デフォルトの名無しさん
25/11/16 08:47:46.14 Mx/pwiFm.net
デバッグ用定数を定義しておいて、
そのデバッグ用定数の値が特定の値なら動かさない、とかにすれば、
メンテ中の変更が一カ所で済む、とかそういう話?
129:デフォルトの名無しさん
25/11/16 08:48:05.74 diBaXt68.net
よく分からんが、フラグ変数とかじゃダメなん?
130:デフォルトの名無しさん
25/11/16 09:13:04.26 bRFFjOtJ.net
どこかのセルをデバッグON/Offのフラグにする
131:デフォルトの名無しさん
25/11/16 09:16:36.49 EzK8Q/Ny.net
デバッグ定数を使うかApplication.EnableEventsを一時的にFalseにするか
ちなみにデバッグ定数はシート上に隠しておく形式にして例えばRange("A1").Value = Not Range("A1").ValueみたいなSubをイミディエイトから呼び出すのが個人的には楽
132:デフォルトの名無しさん
25/11/16 09:32:54.60 BUsW0orn.net
>>128
うーん、クエリー弄っちゃうと修正途中なので
不用意に動いたVBAでデバッグ入って・・・
てのはあるんだけど。
そもそもの
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
を一時的に止める方法はないのかと。
やっぱ、ワークシート上のどっかのセルに「メンテ中」なら "1" でも入力して、これをフラグにして
3つのPrivate Subの中で if then で、1ならそのまま終わるか、Call 以下のマクロを実行するかの分岐処理?
先達らはもっときれいなことやっているのかと・・・
133:デフォルトの名無しさん
25/11/16 09:33:47.22 EzK8Q/Ny.net
分かるとは思うけど一応
Public Const IsDebug As Boolean = False '平時
'Public Const IsDebug As Boolean = True 'デバッグ時
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
If IsDebug Then Exit Sub
'ここに処理を記述
End Sub
みたいにするってことね
コメントアウトを楽にするならConstじゃなくて
Public Function IsDebug As Boolean
' IsDebug = True '平時はコメントアウトする
End Function
にするのもアリ
134:デフォルトの名無しさん
25/11/16 09:37:59.73 EzK8Q/Ny.net
あ、ミスった
シートモジュールだけにまとめるならPublicなConstは使えないから、Const定義を標準モジュールに書くか、PrivateなConstにするかしてね
135:デフォルトの名無しさん
25/11/16 09:39:00.23 BUsW0orn.net
言ってみれば、プロシージャのインターロック機構みたいな仕組みかな?
136:デフォルトの名無しさん
25/11/16 09:41:42.45 BUsW0orn.net
>>133,134
ありがとう。
やってみる。
137:デフォルトの名無しさん
25/11/16 09:41:49.72 EzK8Q/Ny.net
そそ
ちなみにどのプロジェクトでもまず最初にこの機構を作る癖を付けておくといろいろ捗るよ
138:デフォルトの名無しさん
25/11/16 13:12:18.31 0LN83zrS.net
最近のyoutube動画観てると
MS Office が web アプリの Office と実質同じ
観たいな説明が多くてうんざりする
139:デフォルトの名無しさん
25/11/16 14:23:25.70 qgfY8rnj.net
web アプリの Officeは知らん。
どんなの?
140:デフォルトの名無しさん
25/11/16 14:37:50.55 WuYYEw3+.net
Excel for the webとかのことやろ
141:デフォルトの名無しさん
25/11/16 16:08:17.79 pZ2suisg.net
可視化のために色とデータを
一気に出力させたら描写遅延が初回に絶対発生するわ
画面一瞬シェイクさせるのを追加したことで解消
システムを高評価されたのはいいけど他社まで展開されるとは思ってなかったから超強力に作り込んでる
142:デフォルトの名無しさん
25/11/19 12:39:22.87 T8xhcS/6.net
趣味程度でしかやってないからコーディングのマイルールが中々定まらん
そのせいでメンテナンスしたり新しいプロジェクトを作り始める度にああでもないこうでもないと試行錯誤する無駄な時間が…
ってことで質問なんだけど、みんなが心掛けてるマイルールってなんかある?
ちなみに自分の中で明確なのはWith構文は余程面倒な括りじゃない限り使わない、型指定はAs~より&や$などを優先的に使うとかかな?
例えば型指定の省略形は一般的にはあまりよろしくないことは分かってるけど、うちの環境ではどうせ俺しか触らないしコードがスッキリして好きだからそうしてる
こんな感じで「一般的にはよろしくないとされるルール」でも全然いいので色んなアイデアが欲しいです
143:デフォルトの名無しさん
25/11/19 12:57:01.35 gC8HGDrL.net
最近はVBAを直接書くことはあまりなくてPytnonのxlwingsを使うことが多いんだけど、既定のプロパティを使わないとかかな。「VBA コーディング規則」とか「VBA コーディングガイドライン」で検索すると色々出てくるね。
144:デフォルトの名無しさん
25/11/19 13:01:31.21 pFGIqcYh.net
コメントは書かない(コメントがなくても理解しやすい命名やロジックにする)
145:デフォルトの名無しさん
25/11/19 19:03:32.46 pYKM/3rA.net
入力チェックやファイル読み書き読み込み等の他で使えそうな処理は汎用化する。
データの入力、加工、出力は処理を分ける。
146:デフォルトの名無しさん
25/11/19 22:38:56.82 cV15jrOu.net
>>142
改行とインデントはVBと同じにしてる
Visual Studioにコピペして自動整形されたやつをVBEに戻したりもしてる
変数名は気分次第だけど、英語の語彙力がないから全角文字も許容しないとすぐに詰む
コメントはできるだけ詳細に書く
147:デフォルトの名無しさん
25/11/20 08:10:04.82 cGqMER0e.net
会社のVBAならドキュメントの場所をコメントに書いておく
148:デフォルトの名無しさん
25/11/20 09:52:55.59 gRH2Ls2k.net
>>144
そのルールだとwhyはどう記すの?
149:デフォルトの名無しさん
25/11/20 19:09:59.75 qnTj7J5a.net
生成AIで出てきたコードをそのまま使う
150:デフォルトの名無しさん
25/11/25 10:36:05.24 0uCcBRN1.net
WordのVBAのスレはありますか?
151:デフォルトの名無しさん
25/11/25 11:10:13.87 F0vSFTML.net
昔はあった気がする
そう言えば ActiveX のスレも消えてるな
152:デフォルトの名無しさん
25/11/25 21:40:54.81 AgmnBjOL.net
VBAなんでも質問スレ Part3
スレリンク(tech板)
ここかなぁ
153:デフォルトの名無しさん
25/11/26 10:05:38.98 QKRdq7W1.net
>>152
ほぼ動いてないみたいですね。
ありがとうございます。
154:デフォルトの名無しさん
25/11/26 14:41:57.77 UA8LnUux.net
>>144
>コメントは書かない(コメントがなくても理解しやすい命名やロジックにする)
>>133-134
>あ、ミスった
ミスったじゃねーよボケカス
155:デフォルトの名無しさん
25/11/26 16:54:08.05 i+EWuoJl.net
>>153
EXCELとACCESS以外はほとんど需要ないから
156:デフォルトの名無しさん
25/11/26 18:44:46.44 AiiNbb6A.net
李夫人「ギスギスしてますね」
気軽に会話できるフインキじゃない
157:デフォルトの名無しさん
25/11/26 21:02:04.46 NgA/vaPc.net
出来上がってたマクロをAIで改良したら動かなくなって色々試したけど結局最初のに戻そうと消して貼り替えたら違うの貼っちゃって元に戻らなくて死にそう。ExcelVBAってバージョン管理どうやったらいいの?
(´・ω・`)どうしよう、あと2日しかない、、
158:デフォルトの名無しさん
25/11/26 21:27:39.98 XHc1Lvk5.net
Rubberduckちゃん使ってActive ProjectをExport、
出力されたファイルをバージョン管理
159:デフォルトの名無しさん
25/11/26 21:52:38.66 6HGM8CMx.net
前任者の作っていったVBAのプロシージャ名がテポドンとかパトリオットとかだわ
タケヤリもある
処理のボリュームと連動してるのがちょっと笑えた
160:デフォルトの名無しさん
25/11/26 21:57:50.45 JxrtDXSM.net
この前テポドンという半グレ集団捕まってたよな