Excel VBA 質問スレ Part82

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/01/24(金) 03:31:15.25ID:l239yW+P
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
Excel VBA 質問スレ Part80(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1700826110/

※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
Excel VBA 質問スレ Part80
https://mevius.5ch.net/test/read.cgi/tech/1685489018/
Excel VBA 質問スレ Part81
https://mevius.5ch.net/test/read.cgi/tech/1713416618/
2025/04/25(金) 19:56:48.42ID:DbDcSEbW
ノーコード/ローコードでいいだろ
MS365の契約あるならPowerAppsから試してみたら
2025/04/25(金) 21:21:31.07ID:235iTcZf
fletはたいしたことしないならさくっと作れて良い
469デフォルトの名無しさん
垢版 |
2025/04/26(土) 09:23:31.77ID:hSaHsy30
VBAは簡単、プログラミング言語ですらない

VBAは属人化する、しやすい

見事な矛盾だね
2025/04/26(土) 09:50:16.77ID:kN9FmZ13
>>413にあるとおりだよ。コードを書く人間にきちんとしたスキルがあり、会社側にまともな管理体制があれば、基本的に属人化の問題というのは生じない。VBAは構造的にどちらの条件も欠きがちだから、属人化の問題が指摘されやすい。それだけの話。
2025/04/26(土) 09:58:22.07ID:iRBbkycD
そう、つまるところバカが使うからバカなものができるってだけの話で、何も矛盾しない
ただ、仕事でバカとかクソとかいう表現は憚られるから「属人化」(=他人が触りたくないクソ)と表現する
2025/04/26(土) 11:19:16.93ID:SDFKeMf3
まだやるのか? やるなら先ずは「属人」てのを定義しろ
それの延長で属人的・属人化って奴を述べろ
若しくは「VBAは属人的だから悪だ」ってサイトのリンク貼るでもいいし
それを踏まえたうえで語らなきゃ、個人の勝手な思い込みを主張してるだけに成り果てて
それこそ「モノホンのバカ」だろ ぼくはバカですって書いてるに等しい
2025/04/26(土) 12:23:43.88ID:B+cR9sp6
自分の意見は>>413、425、430辺りに既に書いたし、自分の意見と必ずしも一致する見解ばかりではないが、「VBA 属人化」で検索すればいくらでもこの話題は出てくるでしょ。
VBA好きな人が属人化の話題を避けたがるのは分かるんだけど、他の言語と比べて属人化の問題を指摘されることが顕著に多いということまで否定しようとするのはさすがにムリがあるよ。属人化が指摘されることが多いというのは、ハードルの低さ・アプローチのしやすさという強みの裏返しなんだけどね。
474デフォルトの名無しさん
垢版 |
2025/04/26(土) 12:44:03.71ID:aliF/5Yp
異動や退職するときvba消していってほしい。
475デフォルトの名無しさん
垢版 |
2025/04/26(土) 13:08:06.04ID:TbcyjxDY
OSから初期化やろ
2025/04/26(土) 15:51:46.44ID:IX/fzv3g
>>473
その理屈だとCでもRustでもPythonでもRubyでも属人化する訳だが
VBAは参入障壁が低い(んだろうと思う)ことが属人化に拍車を掛けてる罠
(要するに馬鹿でも使えるってこと)
477デフォルトの名無しさん
垢版 |
2025/04/26(土) 16:45:09.66ID:lLp4rKiB
これに限らず仕事全般に言えるけどセンスが全てだわ
本で知識だけびっしり学んだだけの自称VBA出来ますの作るシステムは使い物にならん
というかシステム組む頭すらないし
2025/04/26(土) 17:07:15.54ID:B+cR9sp6
Rustみたいに書くこと自体が難しいとされているような言語はともかくとして、PytnonやRubyが今のVBAと同じような感じでExcelに組み込まれて、Excelで実行できたとしたら、たぶん今のVBAと同じような感じで属人化の問題を指摘されることになったと思うよ(そこからのリカバリーはVBAより多少はマシかもしれないが)。
2025/04/27(日) 09:59:46.14ID:HBc7xJ0o
僕はもう書いただの検索しろだのは話をややこしくする元だから定義しろと書いたんだが
今書かれてる「属人化」てのは、有頂天になった社員がVBA駆使して作業を自動化したはいいが
そいつが退職したら他の誰もがそのメンテ出来なく成って業務大混乱右往左往 てコトでいいのか?

じゃあさ、他の例えで、自動車免許持ってる奴が仕事で車使って仕入だ配達だに奔走してくれてた
しかし、そいつが辞めて他の社員は免許持ってる奴が誰一人居なくて業務に支障が出まくり も属人化か?
そン時は会社としてはどう対応したらいいんだ?
自転車に積んで何十回も往復するなり、外注下請けに作業を委託するなり、免許持ってる奴を募集したり
どうとでも好きな方法選べるだろ?
それを殊更「属人化」とか特殊な事例として言い募る界隈には、どんな思惑があるんだ?
VBA憎し君が広めてるとしか思えんのだが

それとも「VBAの属人化」には何か他の意味があるのか?
2025/04/27(日) 10:51:58.45ID:PEcsUA/t
話をややこしくするじゃなくて、VBAは属人化の問題を指摘されることが多いということを認めたくなくて必死なだけでしょ。
君が挙げた例は、世間でVBAによる属人化の弊害として一般的にいわれている状況と、結果こそ類似するが原因がまったく異なる。
したがって、VBAについて指摘されることの多い属人化と同様の原因に基づくものを「属人化(の弊害)」と呼ぶことにするのであれば、君が挙げた例は「属人化(の弊害)」ではない。

自動車の運転は、運転免許制度によってそれをする人のスキルが保証されているでしょ(VBAと違って)。
また、自動車の運転は、腕の足りない人間がその方法を勝手にカスタマイズしたりすることもできないでしょ(VBAと違って)。
自動車の運転が業務上必要不可欠で業務がそれに依存しているなら、そのことは外形上会社側に明らかだから、会社側はハンドリングの機会も保証されているわけ(VBAと違って)。
大体さ、VBAと違って自動車の運転一般について「属人化(の弊害)」が語られることなんてほとんどないでしょ。その時点で自分の強弁にムリがあると気付かんか?

VBAが属人化の問題を指摘されることが多いということを認めたくなくて色々と言い募るのはいいんだけどさ、説得力のないことを書けば書くほど「VBAに強い拘りを持つ人って、やっぱりそういうレベルなんだな」という見方を補強することになりかねないよ。
「VBAはExcelユーザーに最も近い親しみやすい言語、属人化をいわれることが多いのはその代償」ってことで良いじゃない。
2025/04/27(日) 10:57:39.63ID:bnOAlujA
>>479
運転とプログラマーじゃ、代わりを探す労力に差がありすぎる

免許持ちもVBAが書けるやつもいくらでもいるが、他人の書いたプログラムを解読して修正できるやつってのはちょっとレア
しかも、多くの経営者はこれが特殊スキルと思ってないからそんなとこにコストをかけたくないってのが本音
だから問題になる
2025/04/27(日) 11:08:15.27ID:aTGSLIj0
NGワードに属人化を入れることでスッキリさせることに成功
2025/04/27(日) 11:08:56.65ID:RSOujG5D
いやいや、スキル的にできる奴は山ほどいる
問題は、やりたい奴が極めて少ないという点だ
まともなプログラミングスキルがあるならもっと面白くてスキルアップできる仕事が山ほどあるのに、安い賃金で誰にも評価されずスキルアップにも繋がらない便所掃除をやりたがる奴はいない
2025/04/27(日) 11:27:31.76ID:aTGSLIj0
ちなみに個人事業主やってて、
どこぞのVBAで抜き差しならなくなったものを書き直して仕様書と併せて納品
あるいはPythonに移植して仕様書と併せて納品してるけど、
おまいらの想像以上に良い金になる
濡れ手に粟
2025/04/27(日) 11:43:54.54ID:PEcsUA/t
会社側もよほど切羽詰まっていたんだろうねえ。
大局的に見れば抑えられたはずのコストだろうけど、484みたいにそれで儲かっている人が居るならそれはそれで良い話だ。
486デフォルトの名無しさん
垢版 |
2025/04/27(日) 14:49:25.30ID:rRExk4WB
運転でもうまいやつとへたなやつがいるだろう
VBA使いにはプログラミングやシステム設計がへたなやつが多いということ
2025/04/27(日) 15:15:18.84ID:0hsNeEWH
適当にかじって自分用に作ってるからな
488デフォルトの名無しさん
垢版 |
2025/04/27(日) 16:07:51.42ID:SWrT9XSV
逆引き大全買っちゃった
2025/04/27(日) 16:31:38.91ID:HBc7xJ0o
君が挙げた例は「属人化(の弊害)」ではない。 だから、定義しろっつってんの
じゃあ、どういうのがVBAの弊害と世間一般では言われてんだよ?って聞いてんの
コッチが例え話すりゃあ「それはちがう」 単なる例え話だぞ? 免許が特殊な技術的国家資格とかでもいい

ウエが阿呆だから現場でそんなてんやわんやが発生すると書いた人が居るけど、その通りの事を言ってるんだ
上長がしっかりして、そういった個人技術を全体に普及・波及する努力をしてりゃあ、誰が抜けたところで
即座に困る事なんかほぼほぼ無いんだ 鼻くそ丸めながら「なんか知らんが勝手な事してる奴が居るなあ」
でのほほんとしてるから、いざ退職されてから困り果てる
そんな会社は潰れたって構いやしないだろうに
それが例えば従業員数百人規模の会社だろうとだ ま、数千人規模でもおんなじだけど

ご利益にも繋がらないような「VBAは属人的」なんてぇお題目唱えてるだけで、何らの解決策も講じないような
スカポンタンな集団が蔓延るのが鬱陶しいんだ 六根清浄と唱えてる方がまだご利益ありそうだろ 違うか?
なんか知らんがその辺に転がってる耳触りだけはいいビジネスワードを、これ見よがしに口真似して
その本質を見ようともしないで得意満面な奴は、ぶっ飛ばしたくなるってだけ
ひと頃流行った「悩ましいですねえ」とかと一緒 (一生悩んでろ、ボケ)と罵ってるようなもの
「一旦社内で揉んでみます」とかなら、まぁまだ分かるが
2025/04/27(日) 16:39:50.30ID:HBc7xJ0o
VBAは属人的 とはつまり、事務業務に根本的な問題がある企業のくせに
責任を末端に押し付けるブラック体質だと、自ら公言してるに等しい阿呆責任者の言い逃れに過ぎない
2025/04/27(日) 17:10:22.95ID:9974j3MB
属人化って要するに担当者が意地悪してるだけやん?
使い方をちゃんと教えてくれて、ソースもパスワードかけずに公開してたら読めるヤツは読むぞ
コピペしか能のない奴には他人のソースが読解できないってだけの話やら?
2025/04/27(日) 17:19:04.92ID:oHyIRNV3
多くの場合、VBAは大したことやってないのに担当者のスプログラミングスキルの低さ故に無駄に複雑かつ保守性の低いものになっており、
後から他人が読み解いてメンテを継続するのは非常にコスパが悪いケースが多い
コスパ的には多くの場合において棄てて仕切り直した方がマシなのだが、とはいえ中途半端に自動化されているため、いざ棄てると一時的にそれなりの業務効率の低下が生じる
その業務効率の低下量をVBAにおける「属人性」と定義するのがよろしい
2025/04/27(日) 17:39:11.20ID:PEcsUA/t
>>489-490
VBAは属人性の問題を指摘されることが多いというのをどうしても否定したいんだね。「VBAに強い拘りを持つ人って、やっぱりそういうレベルなんだな」という印象は強まるばかりだけど。
会社側がきちんと管理できる体制なら属人化の問題は生じないというのは最初から書いているでしょ。だからこそ、VBAの属人化リスクが広く認識されるようになった今では、多くの会社が、VBAを全面的に禁止するなり、個人の裁量の範囲内でのみ許可したりという形で対応しているんだよ。
会社の多くはVBAの属人化リスクを認識して既にその対応をとっているわけで、属人化リスクが高いということ自体を否定したがる君のような議論ははっきり言って周回遅れなんだよ。
君は、「個人技術を全体に普及・波及する努力」というのを唯一のあるべき管理体制として捉えているみたいだけど、残念ながら多くの会社は、素人の書いたVBAコードに対して管理コストを投下するほどの価値を認めていない。だから、「使うな」とか「使ってもいいけど個人で責任のとれる範囲内で」という方針にしているわけ。
ついでにいえば、属人化という言葉には、会社が社員に責任を押し付けるというニュアンスも特にない。VBA はExcel内で書いて実行できるので、質の低いコードがいつの間にか業務に使われているという好ましくない事態が生じる可能性が他の言語と比べて顕著に高い。それで痛い目を見た会社が少なからずあったのでリスクとして認識されるようになったに過ぎない。
494デフォルトの名無しさん
垢版 |
2025/04/27(日) 19:30:20.87ID:22nZEpjv
Power Automateで思ったんだけど
一つ一つごとのループブロックごとにそれぞれ別の変数(カウンタやカレントなど)を設定する事によって、変数のスコープを極小にする、
むしろカプセル化の様にループブロックやコードブロックの外からアクセスを受け付けない、という事がこれからの当たり前になるのだろうか。
もはや一つ一つのコードブロックが別々のプロシージャなんだと
人智を超えていても、ソフトウェアがそれを補えるし
495デフォルトの名無しさん
垢版 |
2025/04/27(日) 19:33:19.45ID:22nZEpjv
VBAはVBAでも、APIの様な高度な知識が必要なやつはさすがに属人化だと思う(APIはまだやってないだけ、かも知らないけど)
基本的なメソッド、オブジェクトだけだよね
2025/04/27(日) 19:46:24.57ID:bnOAlujA
一定のスキルがあれば、APIの意味や使い方なんてぐぐればわかる
ドキュメントはみんなネットに公開されてるんだから
2025/04/27(日) 20:34:34.42ID:RSOujG5D
>>494
そんなもんVBA以外のプログラミング言語は20年以上前から当然にみんなそうなってる
498デフォルトの名無しさん
垢版 |
2025/04/27(日) 21:56:06.79ID:22nZEpjv
>>497
じゃあC言語とかでもそうなのですか?
499デフォルトの名無しさん
垢版 |
2025/04/27(日) 22:00:02.07ID:22nZEpjv
>>497
いやいや、パッと調べただけでも他言語でも変数の使い回しできてるじゃん
私が言いたいのは一つのループブロックごとに、他の箇所では再利用できない変数一つという事
2025/04/27(日) 22:56:41.73ID:RSOujG5D
例えばC#のforやforeach文のループ変数はそのループの中だけで有効だが、そういう話か?
C++も大昔のバージョンを除けば同様
501デフォルトの名無しさん
垢版 |
2025/04/28(月) 01:52:20.30ID:hDmEwqG0
>>481
>他人の書いたプログラムを解読して修正できるやつ

自分で描いたものでさえろくに保守出来ない香具師の方が大半な現実
2025/04/28(月) 10:21:58.00ID:AuNLagCl
ダイクストラが言う構造化プログラミングはモジュールとか抽象データ型とかも含む広範で抽象的な概念として説明されている。
連接・分岐・反復で構成しようという話はそれより前に発表されたものだが、この時代は構造化もクソもないプログラムがまかり通っていたという前提がある。
まずはその三要素を基礎に据えて構成したらわかりやすくね? という提案 (というか感想?) に過ぎず、それで全て事足りるみたいな主張ではない。
(理論上は連接・分岐・反復で全て表現可能であるという証明はされている。)

構造化プログラミングの考え方のキモは構造は人間の認知の中にあるということ。
人間が思考しているときの構造を書き表すためにどんな言語機能 (またはデザインパターン) があればよいの? ってのが構造化プログラミングの議論なんだよ。
書いた人が思ってる構造が表現されているなら構造化プログラミングだし、構造化プログラミングのために用意された機能を使っていても構造が表れていなければ構造化プログラミングではない。
まあついでに言えば書き表されたものについて (コンパイラも人間も) 検証しやすいことも大事だ。

機械的に goto を除去したらむしろ構造が失われるという例をクヌースが出したりもしていて、結局のところはどんな機能も正しく使えば正しいし、悪い使い方をすれば駄目になるというシンプルな話。
そんなわけで break が構造化を崩すか崩さないかは使い方による。
ただ、常識的に考えて break は goto より構造を破綻させにくいだろうってだけ。
2025/04/28(月) 11:10:41.08ID:6D3yvt7l
どこのスレの誤爆かな?
504デフォルトの名無しさん
垢版 |
2025/04/28(月) 16:28:52.13ID:5fRt9Dct
SQLiteのデータベースをODBC経由ADODBで引っ張ってきてるけど、
CopyFromRecordSet で一発で貼るのと 1行1カラムずつ地道に貼るのとで
267件中1件1カラムだけ違う これは何なんだろう
2025/04/28(月) 17:32:10.75ID:L3M/APjY
知らんがな
違うと思ったならチェックしたんだろ?どう違うかを知っているのはお前だけ
2025/04/28(月) 19:04:28.97ID:opVSzI03
>>504
自分で作ったコードを調べて原因を見つける能力がない無能っぷりを白状しているようにしか見えない
2025/04/28(月) 19:12:48.88ID:77Ku1S4P
質問スレなんだし、そんなにきつく当たらなくてもいいんじゃない? もう少しゆるい感じでやっていこうよ。
508デフォルトの名無しさん
垢版 |
2025/04/28(月) 19:29:47.71ID:5fRt9Dct
辛辣だなぁw CopyFromRecordSetで貼ったやつの方だけ1箇所違うんだよ
1行、1カラムずつ貼った方は正しい 元データももちろん正しい

lobjが対象テーブルのListObject dbrsがADODBで引いたRecordSet

データが違うパターン
lobj.InsertRowRange.CopyFromRecordset dbrs

正しいパターン
rc = 1
Do Until dbrs.EOF
  For co = 1 To lobj.ListColumns.Count
    lobj.ListRows(rc).Range(co).Value = dbrs.Fields(co - 1).Value
  Next
  rc = rc + 1
  dbrs.MoveNext
Loop

これでどう検証したらいいのよ
509デフォルトの名無しさん
垢版 |
2025/04/28(月) 19:34:46.10ID:aApiL0z1
どう違うのかも書かない無能だから
510デフォルトの名無しさん
垢版 |
2025/04/28(月) 20:16:18.13ID:Fc2g4rbd
PowerQueryの方がVBA よりも処理が高速なはずだ
と思っていたけど、配列を使えばVBAの方が処理が高速だったよ
2025/04/28(月) 22:36:06.18ID:opVSzI03
>>508
一カ所違うというのは実データがおかしな変換をされているのか?
それとも一方のデータが 多い/少ない と言っているのかな?
512デフォルトの名無しさん
垢版 |
2025/04/29(火) 00:38:17.02ID:Cio0Z7DT
>>511
ざっくり例えると、1件ずつ処理すると元データどおり
みかん 150円
バナナ 200円
りんご 250円

となるところがCopyFromRecordSetだと
みかん 150円
みかん 200円
りんご 250円

になる感じかな もちろん今回が初めてのケース
2025/04/29(火) 03:39:13.13ID:uCA5xnZY
>>512
再現性があるか
何番目がおかしいか
一度にコピーする件数を少しずつ減らしたらどうなるか

そういう地道な作業を繰り返して、条件を絞り込み、原因を突き止めていくんだ
2025/04/29(火) 05:46:13.95ID:DUP3Wr3v
重複したデータでなければプログラムに問題がありそうだけどなぁ
ザックリすぎてわっかんねぇなぁ
515デフォルトの名無しさん
垢版 |
2025/04/29(火) 05:58:53.59ID:NELjOoG5
質問の間抜けな感じからして凡ミスやな
2025/04/29(火) 06:09:56.99ID:DUP3Wr3v
スゲー適当なんだけど違いが1件ってことはEOFが入ってるとかそんな感じかな?
517デフォルトの名無しさん
垢版 |
2025/04/29(火) 09:40:01.77ID:Cio0Z7DT
>>513
同じデータをAccessにインポートして実行→再現せず
SQLiteで検索するデータ量を減らす→再現せず
で、よく見たら256レコード目で検索条件(SQL文)変えても必ず発生することがわかった
SQLite3 ODBC DriverからADODBでデータ取得してCopyFromRecordSetでデータ貼付けすると起こる
データ取得方法は同じでも1レコード1カラムずつデータ貼っていくと起こらない
ダミーデータ作って色々試してみるかな
518デフォルトの名無しさん
垢版 |
2025/04/29(火) 09:48:33.61ID:cxg+2T2y
>>517
元データの中に制御文字のようなゴミがあるとか、取得したものを表示する過程でミスっている可能性もある
ダミーで試すか、文字コードをバイナリ値でチェックするとかだな
あと256番目って数値がbyte扱いで0になってないかとか
2025/04/29(火) 09:57:59.04ID:LEbvev28
昔Oracleのバグで1件くらい少ないレコードセット返ってくるバグ思い出した
520デフォルトの名無しさん
垢版 |
2025/04/29(火) 11:15:10.56ID:Cio0Z7DT
ダミーでも再現した
SQLite側のフィールドがTEXT型の場合のみ、256レコード目の内容が255レコード目と同じになる
INTEGER方だと起らない
521デフォルトの名無しさん
垢版 |
2025/04/29(火) 11:17:05.94ID:Cio0Z7DT
こんな感じ SQLiteに日付型は無いのでTEXT扱い
254 test254 2025/06/11 1253
255 test255 2025/06/12 1254
256 test255 2025/06/12 1255
257 test257 2025/06/14 1256
522デフォルトの名無しさん
垢版 |
2025/04/29(火) 12:21:37.37ID:TmvDscRd
属人的と言うなら車間距離だな
ExcelやVBA利用者には車間距離詰める馬鹿が多過ぎる
総じて「だろう運転」ばかりしていて「かもしれない運転」なんて眼中に無い
そもそもMicrosoft開発陣が「だろう運転」を推奨してる節がある
523デフォルトの名無しさん
垢版 |
2025/04/29(火) 12:25:39.07ID:Cio0Z7DT
連投失礼、256だけじゃなく512,768,1024も同じ現象だった
524デフォルトの名無しさん
垢版 |
2025/04/29(火) 13:23:59.14ID:lJszgH0z
ODBCのバージョンと定義がわかる画面貼っとけ
525デフォルトの名無しさん
垢版 |
2025/04/29(火) 14:30:57.99ID:AuvQCcIn
久しぶりに面白そうな話題じゃん
自己解決しちゃっても是非原因教えてね
526デフォルトの名無しさん
垢版 |
2025/04/29(火) 16:26:16.90ID:Cio0Z7DT
スクショは貼らないw 64bit
SQLite3 ODBC Driver 1.34455.00.00 Christian Werner Software & Consulting SQLITE3ODBC.DLL 2023/10/23

データ取得と貼り付けは至ってシンプル
Set dbcn = New ADODB.Connection
dbcn.ConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=E:\Temp\testdb.db"
dbcn.Open
Set dbrs = New ADODB.Recordset
dbrs.Open "select * from testtbl", dbcn, adOpenStatic, adLockReadOnly
ThisWorkbook.Sheets("Sheet1").Range("A1").CopyFromRecordset dbrs
527デフォルトの名無しさん
垢版 |
2025/04/29(火) 16:31:39.01ID:Mpe85ZPY
>>526
やっと全部情報を出してきた
だから馬鹿とか罵られていたんだよ
ドライバのバージョンを替えてみ
528デフォルトの名無しさん
垢版 |
2025/04/29(火) 16:37:30.76ID:Cio0Z7DT
>>525
早速自決w
Set dbrs = New ADODB.Recordset
dbrs.CursorLocation = adUseClient
dbrs.Open "select * from testtbl", dbcn, adOpenStatic, adLockReadOnly
で正常になった お騒がせしました
2025/04/29(火) 16:47:03.16ID:EclpVRbh
ちょうど総合相談スレでも
3時間くらい前に発生した本日の事案への弔辞

> 介錯人は頼んだのかな
> 成仏しろよ
2025/04/29(火) 16:58:21.16ID:EclpVRbh
「自決」の辞書上のもう一つの意味、民族自決主義の「自決」は
「自分の意志で自分のことを決めること」だけど、
くだんの「自決する」の文脈は、意志うんぬんや決めるとかの流れはない。
なので、「問題を自分で解決した」という意味はならなさそう・・・
とマジレスしてみる
2025/04/29(火) 20:39:35.35ID:la4ZcTxc
自分のケツのことかと思った
532デフォルトの名無しさん
垢版 |
2025/04/29(火) 21:12:16.89ID:hhMpSOWT
痔になったケツかと思った
533デフォルトの名無しさん
垢版 |
2025/04/29(火) 22:00:44.14ID:V3jk1q3e
WinAPIでvisual styleを適用させたい
office2021だとCreateWindowEXで作ればvisual styleになるのにoffice2019だとならない
534デフォルトの名無しさん
垢版 |
2025/04/29(火) 23:44:21.62ID:jEUD8QFb
今頃になって列の行ごとの文字列のReplaceは、まず文字列をカンマでもなんでもいいから全部くっつけてひとまとめにして変数に代入して、Replace(文字列,検索文字,"")すれば一括で置き換えられるって理解したよ
そしてSplitで配列に戻して元通り
535デフォルトの名無しさん
垢版 |
2025/04/30(水) 01:17:17.74ID:0P1GE/1d
>>533
ComCtl32.DLLにリンクしてないからだと思う
2025/04/30(水) 03:14:35.45ID:IvfkHP7P
>>534
たまたまデリミタと同じ文字(列)がデータにも含まれててExcelのバグだと騒ぐまでがセット
537デフォルトの名無しさん
垢版 |
2025/04/30(水) 06:29:26.31ID:7AsrwtYN
>>536
わかるわかる
538デフォルトの名無しさん
垢版 |
2025/04/30(水) 06:54:36.59ID:TQaKmIw3
>>534
初級を脱したい奴が考えそうな無駄な技
経験積めば自然に書くのが一番て解るよ
2025/04/30(水) 18:11:25.83ID:/xZzLlpB
Range("A1:C10").Replace What:="置換前の文字", Replacement:="置換後の文字", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

ってchatgptさんが言ってます
2025/04/30(水) 18:39:00.27ID:3/ALrefg
Replaceメソッドはシートの検索/置換オプションも変更されるから嫌い
541デフォルトの名無しさん
垢版 |
2025/04/30(水) 19:34:30.68ID:Ypkgz0ac
>>528
さんきゅ
2025/05/01(木) 10:16:05.61ID:NoOjVvyj
開発では作るだけでなく動作確認、評価、検証をきちんとやるのも大事なのじゃ
わざと異常を出して正しく異常が出るか、桁数やデータが大量だとどうなるかとか、日本語以外の環境でも動くとか
実際に動かして確認すると気づかなかった問題が見えてくるものだ
2025/05/01(木) 10:51:14.04ID:/KCrsMZn
テストが重要なのはもちろんだが、VBAerレベルではそもそもバグが出にくくテストケースを闇雲に増やさなくていい書き方というものも多少は勉強した方がよい
似た処理をいちいちコピペすればその分ミスは増えるし、プログラムに直行性がないとテストケースは無限に増える
2025/05/01(木) 11:52:17.40ID:nTiKCI2R
>プログラムに直行性がないとテストケースは無限に増える

ほんそれ
直交性が無いのは言語の欠陥だと思う
545デフォルトの名無しさん
垢版 |
2025/05/01(木) 13:39:51.25ID:yf6hHvtn
x ほんそれ
o 本当にそれ
2025/05/01(木) 14:02:16.67ID:NoOjVvyj
問題ないですとか言ってたのに後になって実は確認してませんでした とか言う新人たまにいる
547デフォルトの名無しさん
垢版 |
2025/05/01(木) 15:05:48.78ID:my1nUwSm
VBAで単体テスト、カバレージ100とか聞いたことないわ
あれ?ACCESSの納品物の評価ってどうやってたっけ……(もう忘れた)
548デフォルトの名無しさん
垢版 |
2025/05/01(木) 23:23:13.02ID:15supz3z
スレチだけど
やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。
.Buffer早すぎ
2025/05/02(金) 00:25:17.81ID:+dCfSpYU
Dim wb As Workbook
Dim pq As WorkbookQuery
Dim ws As Worksheet
Dim i As Long
とか宣言して、wb、wsの変数代入して、
For Each pq In wb.Queries
ws.Cells(i, 1).Value = pq.Name
ws.Cells(i, 2).Value = pq.Formula
i = i + 1
Next pq
とかやると、VBAで各クエリーの名前とM式の中身をワークシートに書き出せるのね
550デフォルトの名無しさん
垢版 |
2025/05/02(金) 01:50:51.67ID:TLbUOI0p
>>549
いやん見ないで照
551デフォルトの名無しさん
垢版 |
2025/05/02(金) 06:41:36.56ID:TLbUOI0p
前に言っていた、Power Automateみたいにコードブロックを入れたら、作成したコードブロックだけで有効な変数が自動的に作成されて、コードブロックを抜けたら変数が削除される、コードブロックごとに変数が一意、コードブロックがカプセル化、秘匿化されている、もはやコードブロックがサブプロシージャ、ファンクション関数っていうの、関数型プログラミングの事だったんだな
552549
垢版 |
2025/05/02(金) 06:43:09.29ID:+dCfSpYU
そんな、他人を痴漢扱いすなw

いやこれ、一昨日ChatGPTに
「クエリーの依存関係がもっと見やすいツール、何かない?」
って聞いた中で、教わったばかりの一部なんだけど。

需要があるなら、フルでプロシージャを晒すよ?
おのおのChatGPTに聞けばいいんだろうけれど。

ここから親子関係の一覧表を作る、次のプロシージャは
正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。
553デフォルトの名無しさん
垢版 |
2025/05/02(金) 07:20:32.31ID:TLbUOI0p
ワイはCopilotにsheet.copyで作成した新規ブックのクエリを削除するにはどうしたらいいですか?
のコードでマクロ実行ブック(コピー元)のクエリも削除された泣

プログラマが型がわからないってマジ?
VBAでtypeっていうともっぱらそのモジュールのみで有効なプロパティ?の事を指すと思うけど

TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。
何でもかんでもできる、受け付けるというのはバグの元だよ。
554デフォルトの名無しさん
垢版 |
2025/05/02(金) 07:59:38.75ID:TLbUOI0p
VBAは変数を宣言しなくても変数が使用できるし、Variantは中のデータの型を判断するし、動的型付けだった😫
宣言を強制しているし、型指定もしているからすっかり忘れていた
2025/05/02(金) 08:41:13.69ID:IByDjNOR
>>549
WorkbookQuery初めて知った
面白そうだな
2025/05/02(金) 09:45:33.14ID:G++s7sQD
>>551
Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?
557デフォルトの名無しさん
垢版 |
2025/05/02(金) 12:34:26.30ID:FVfG1Al+
>>556
同じなんだけど、
Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される

vbaで同じ事をしようとするといちいち宣言しなくちゃいけないし、命名のレパートリーも尽きるからやらないし、流用になる

個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う
2025/05/02(金) 13:08:27.70ID:i8P7c2SF
だからそんなもん20年前から他の言語では一般的だし、
PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ
変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない
2025/05/02(金) 13:46:02.65ID:G++s7sQD
スコープが別なことが分かっていれば、ループ変数は同じ名前の流用でも特に問題は起きないような気もするけれど。まぁでも便利なんだろうね。
ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。
2025/05/02(金) 16:53:20.86ID:nKjy1k/M
ブロックがあればええ
2025/05/02(金) 19:06:46.82ID:ngu+xaVd
全てグローバル
変数名も文字数制限あり

BASICとはそういうものだ
562デフォルトの名無しさん
垢版 |
2025/05/02(金) 20:16:54.76ID:KF55o+fS
変数名といえばおまえら Option Explicitしてるの?
俺はうっかりさんでスペルミスしがちだから外せないけど
2025/05/02(金) 20:38:35.86ID:sdnBjLxl
しない理由がない
2025/05/02(金) 20:55:10.60ID:1BRp4bnH
あれ消えないようにして欲しい
565デフォルトの名無しさん
垢版 |
2025/05/03(土) 05:59:05.73ID:2+JR0EAo
今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
2025/05/03(土) 07:20:36.45ID:0JGyOYLe
自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。
2025/05/03(土) 09:23:52.05ID:Hazt22aJ
>>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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