[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/17 16:56 / Filesize : 280 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part82



1 名前:デフォルトの名無しさん [2025/01/24(金) 03:31:15.25 ID:l239yW+P.net]
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/

577 名前:YLe.net mailto: 自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。 []
[ここ壊れてます]

578 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 09:23:52.05 ID:Hazt22aJ.net]
>>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね

579 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 10:20:15.15 ID:VRj6VpYS.net]
使用回数によるよね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね

580 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 11:20:28.73 ID:F8pywi6k.net]
そのプロジェクト内では1回しか使わなくても、よくある定形処理は関数にまとめた方がいい
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる

581 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 16:42:04.86 ID:h9Jrb8E+.net]
1ファイルに全部書く

582 名前:デフォルトの名無しさん [2025/05/03(土) 17:16:40.74 ID:2+JR0EAo.net]
ラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね

583 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 18:50:44.41 ID:ocHu15P2.net]
ぱっぱらぱー

584 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 21:38:51.92 ID:Hazt22aJ.net]
お鍋の中からインチキおじさんが登場しますた

585 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 22:43:16.33 ID:aLoX39eB.net]
ぴーひゃらぴーひゃら



586 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 07:28:49.39 ID:ajXSlqYh.net]
ラッパーというのは、元の関数とかにガワを被せた(つまり、その中で元の関数を呼び出している)関数とかのことね。包装するとかの意味のラップ。念のため。

587 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 08:17:46.31 ID:kPdoN8ak.net]
ラッパーとインターフェースはどう違うのっと

588 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 09:35:43.88 ID:VN1fyBP0.net]
インターフェースは、抽象的にいえばひとまとまりと観念されるコードの塊(クラスとかモジュールとか)同士の間の境界、その境界に接するコード部分かな。インターフェースを介して情報のやり取りを行うに際して互いの前提が異なる場合には、そのままでは情報のやり取りができないので前提を合わせる必要がある。ラッパーはそのために使われることもあるけれど、基本的には全然別の概念。

589 名前:デフォルトの名無しさん [2025/05/04(日) 16:30:55.85 ID:IQyuDcpS.net]
>>571
それはモジュール分割

ラッパーはすでにあるものを呼び出すファンクションやサブプロシージャ

ラッパーはラッピングだから、モジュールを包むモジュールというイメージ

590 名前:デフォルトの名無しさん [2025/05/04(日) 16:35:24.36 ID:IQyuDcpS.net]
>>577
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる

インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる

591 名前:デフォルトの名無しさん mailto:sage [2025/05/04(日) 21:24:05.55 ID:NkPvwNmC.net]
具象クラスの(>>577の意味での)インターフェイスを規定する抽象クラス(抽象基底クラス)それ自体のことをインターフェイスと呼ぶのは、オブジェクト指向というよりもJavaとかから広まった用語法なのでは。
個人的には、インターフェイスという語の本来の意味はあくまでも577のようなものであって、Javaとかでいうインターフェイスはそこからの派生とか転用として位置付けられるべき用語法だと思うかな。
ただたしかに、Javaみたいな意味でインターフェイスという語を用いることの方が(プログラミング関係の文脈では)もはや多いのかもしれないし、質問した576の意図もそちらにあったのかもしれないね。

592 名前:デフォルトの名無しさん [2025/05/04(日) 21:50:46.14 ID:6QG7+rqM.net]
PowerQueryでの動的な繰り返し処理を理解したら、VBAにもList.Select関数とかText.PositionOfのOccurrence.Allとか欲しい

593 名前:デフォルトの名無しさん [2025/05/05(月) 01:42:23.95 ID:6skGH2rL.net]
自分で実装すればいいじゃん

594 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 09:14:01.67 ID:8n1c0Fvg.net]
実装は難しくはないだろうけど、汎用的に使える便利な関数はできれば組み込みで持っていて欲しいという感覚は分かる。

595 名前:デフォルトの名無しさん [2025/05/05(月) 10:45:35.51 ID:NKQxWENO.net]
配列の中に、対象に含まれているものがあれば、配列から取り出す、
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな



596 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 10:46:27.32 ID:Q8K4+hk+.net]
自分が欲しいと思ったものは誰かがすでに作ってる
作るよりAIに聞いた方が早い

597 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 11:03:49.52 ID:20YqVkB+.net]
>>579
InterfaceはJava用語
TraitはRust用語
Excelでは何と言うのか?概念がそもそも無いのか?

598 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 11:43:00.38 ID:EffckoF6.net]
VBAにもInterfaceという機能があり見た目はJavaに似ている
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない

599 名前:デフォルトの名無しさん [2025/05/05(月) 13:17:06.42 ID:bvP/AgOh.net]
今時のプログラミングの考え方とか、関数型プログラミングというのは、ワークシート関数でいうindex関数とmatch関数の組み合わせの検索関数や、
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?

600 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 13:26:58.67 ID:qohU83nC.net]
入門書読んだこと無いの?

601 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 13:37:24.10 ID:EffckoF6.net]
違う
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね

602 名前:デフォルトの名無しさん mailto:sage [2025/05/05(月) 17:39:10.53 ID:ueUnqmHR.net]
関数型プログラミングは入門記事でちょっと齧ったくらいだけど自分にはムリそうだなーと思った。
VBAとかPythonとかの手続型言語で書く分には、@決定性や副作用を意識する、A言語に取り入れられた関数型言語由来の構文(Pythonでいえば、イテレーター、内包表記、構造的パターンマッチとか?)を使うというくらいで十分じゃんじゃないかなぁ。
本格的に関数型でやるぞっていう人なら関数型言語(HaskellとかOCamlとか?)を使うんだろうし、そこまでは頑張れないけど手続型言語を書く際に関数型言語の考え方を参考にしたいという程度なら、上記@Aくらいでお茶を濁しておく感じになるのではないかと。

603 名前:デフォルトの名無しさん [2025/05/05(月) 22:54:48.45 ID:bvP/AgOh.net]
オブジェクト指向でカプセル化とか言っていたけど、結局はその理想通りにはならなかった。
その反省で生まれたのが関数型プログラミングという理解です。
関数には引数を引き渡す事と戻り値を受け取る事しか絶対にできない。
横槍も茶々入れも鶴の一声もない。
関数は一つのだけの事しかできない。
だからバグらない、誰がやっても結果は同じ。

604 名前:デフォルトの名無しさん [2025/05/05(月) 23:40:24.40 ID:fQ8xBj6s.net]
関数型プログラミングはオブジェクト指向よりも圧倒的に古い

605 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 01:25:53.28 ID:AZSw2w0R.net]
関数型において関数は引数を受けることと戻り値を返すことしかできないというのは正しいのだけど、
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する



606 名前:デフォルトの名無しさん [2025/05/06(火) 06:45:59.65 ID:j1SFEq5D.net]
>>594
まさに今それをやろうとしていますね
引数に関数を渡そうとしているの
値を引数にしたいけど、関数をネストせざるを得ない

607 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 07:24:57.73 ID:Gnnon1y6.net]
引数として関数そのものを渡したり、戻り値として関数そのものを返したりできるかは言語仕様の問題だから、言語によってできるかできないかは決まっている。VBAではできない。

608 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 08:15:59.98 ID:Gnnon1y6.net]
念のためだけど、
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。

さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。

609 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 09:32:02.27 ID:ePr8aXMn.net]
あとこれは割とどうでもいいことだけど、関数の戻り値を他の関数の引数にすることを「関数のネスト」ということは、普通はあまりないのではないかなぁ(関数呼び出し式のネストという趣旨だとすれば意図は通じるけれども)。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。

610 名前:デフォルトの名無しさん mailto:sage [2025/05/06(火) 09:47:26.27 ID:K1Pjz07i.net]
pythonの凸レータは関数型らしいし関数のネストっぽく観える

611 名前:デフォルトの名無しさん [2025/05/07(水) 23:18:41.10 ID:5rQjCI4p.net]
関数型プログラミングは手続きという処理を見せないだけで、ロジックを隠すことでシンプルな見た目にするもの。

歴史上、常にこういう発想が何度も出てきているが、見た目をきれいにしたいだけで仕様の変更に耐えられない構文であることから、一度も主流になったことがない。

612 名前:デフォルトの名無しさん [2025/05/07(水) 23:48:45.09 ID:8NEt0qiL.net]
>>600
全然違うと思いますけど?
結局大勢の人で手続き型プログラミングを作ったところでバカだらけ

613 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 01:43:07.29 ID:eAkjlYW3.net]
VBA使ってる人間が他言語批判は草

614 名前:デフォルトの名無しさん [2025/05/08(木) 01:56:21.88 ID:hlDlUBWZ.net]
VBAは俗人化するのでは?なんて質問を会議でこのご時世に言われるとは思わなんだ
優しく答えて大恥かかせてしまったけど少し悪かったかも

615 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 03:20:26.19 ID:Mm7IQCJP.net]
設計と管理がちゃんとしてれば関数型だろうがプログラムは作れる
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ



616 名前:デフォルトの名無しさん [2025/05/08(木) 06:36:17.83 ID:rpgtocHg.net]
VBAの何が属人化するの?
他の本格言語、例えばC++と何が違うの?

617 名前:デフォルトの名無しさん [2025/05/08(木) 07:04:16.42 ID:KsTAlec+.net]
単純に用途が限定的なのでわざわざ覚える人が少ないのよ

618 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 07:25:23.15 ID:jLg0E+bB.net]
関数型言語が主流になったことがないというのは事実だろうけど、関数型言語による宣言的なプログラミングスタイルに何かしら限界とか制約があるからなのか、それとも単に難しいからなのかはわからないな。関数型言語をある程度使いこなした経験がある人には分かるのかもしれないが。

619 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 07:39:13.07 ID:jLg0E+bB.net]
状態を数多く管理しなければならないようなプログラム(GUIとか?)はちょっと苦手と聞いたことごあるような気もするが、今はどうなんだろう。

620 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 08:15:37.11 ID:Im8CJRBo.net]
VBAに限らず、属人化のリスクは「協業の仕事」共通やな
当たり前っちゃ、当たり前だが

なんつうか、丁寧さというか共同作業のセンスというか・・・

621 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 09:23:26.41 ID:v93ye6LH.net]
どだい、現場の最前線で使われる省力化目的の小アプリ(業務の簡素化含め)なんか
その寿命は3〜5年使えれば御の字
その間にもいろいろ業務形態も変化するし欲しい成果物もその都度変わったりする
その変化に逐次対応できるものなら属人化してようとも目的は果たしてる
その期間内に制作者が辞めたところでそれが何だってんだ 属人化させたのは上の責任
属人化がいけないなんてのは、上の方の言い訳に過ぎない 何故一人に任せた

10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産

622 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:03:03.06 ID:a9PTljx+.net]
話がループしてるな

623 名前:デフォルトの名無しさん [2025/05/08(木) 10:09:29.45 ID:D3KgMrbS.net]
Exit vba

624 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:11:28.02 ID:RKaJBu95.net]
属人化の話題はVBAスレの華だからね。VBAがアイデンティティになっているタイプの人には譲れない話題なんでしょ。

今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。

625 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:29:57.11 ID:a9PTljx+.net]
モジュール分ける意味と基準が判らない
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?



626 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:32:44.22 ID:G5GTs1je.net]
Exile VIVA!

627 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:41:00.38 ID:719LxqHN.net]
>>614
VBAレベルなら全部一つでいいよ
分割したくなるほど大きくなるようなら全体の業務フローを見直すべき

628 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 10:54:42.11 ID:RKaJBu95.net]
一般的な言語だと、機能分割や名前空間の分割のためにモジュールを分けるのでは。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。

629 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 12:10:22.44 ID:8ptxnmrn.net]
今は改善されてるのかも知れないが
名前ちょっと変えただけで行方不明になることは良くあった

630 名前:デフォルトの名無しさん [2025/05/08(木) 18:48:55.03 ID:rpgtocHg.net]
私はモジュールをコードの使用目的で分けているな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな

631 名前:デフォルトの名無しさん mailto:sage [2025/05/08(木) 20:28:48.50 ID:Qp1M/T2r.net]
皆さんVBAでどのくらいコードを書きます?
1000行くらい?

632 名前:デフォルトの名無しさん [2025/05/08(木) 21:11:25.68 ID:kNzCbrU5.net]
シートごとにモジュール分けてる...

633 名前:デフォルトの名無しさん [2025/05/08(木) 21:26:36.63 ID:ownVsw/K.net]
>>620
必要に合わせてかなり書くよ
1000は小規模

634 名前:デフォルトの名無しさん [2025/05/08(木) 21:34:26.78 ID:hlDlUBWZ.net]
そういうところがセンスないんだよな
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん

635 名前:デフォルトの名無しさん [2025/05/08(木) 21:49:23.37 ID:rpgtocHg.net]
可読性の高いコードは、処理を一つ一つ、行を書く事だと思います
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか



636 名前:デフォルトの名無しさん [2025/05/09(金) 07:31:44.14 ID:Y+GhIEwV.net]
うちの職場だけ特殊なので
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ

637 名前:デフォルトの名無しさん mailto:sage [2025/05/09(金) 08:00:17.09 ID:zNQNct04.net]
RPA!RPA!って少し前もてはやされてたけど、
速度的にも手順的にもVBAでよくねって案件多かったよね

638 名前:デフォルトの名無しさん [2025/05/09(金) 12:28:57.25 ID:piOnFv34.net]
そうなか、自分のとこだけで精一杯で世間知らずになってるかも

639 名前:デフォルトの名無しさん [2025/05/09(金) 18:28:31.58 ID:HJ6RQEwc.net]
VBAで済むならVBA
RPAの方が楽ならRPAってだけ
RPAの方が楽なのにVBAで書くのはバカ

640 名前:デフォルトの名無しさん [2025/05/09(金) 18:30:10.14 ID:HJ6RQEwc.net]
>>628
ちょっと一行目が合わんな(寝起き)

641 名前:デフォルトの名無しさん mailto:sage [2025/05/09(金) 18:41:10.42 ID:zNQNct04.net]
何が楽かって視点がないからRPAが廃れたってことをわかってなさそうなレス

642 名前:デフォルトの名無しさん [2025/05/09(金) 22:10:08.68 ID:p2pcYwx2.net]
そもそも論として、使い方を学ぼうとしない人が大勢なのに使いこなせるわけがない
kintoneだろうがなんだろうが
銀の弾などない

643 名前:デフォルトの名無しさん [2025/05/09(金) 22:37:09.74 ID:p2pcYwx2.net]
文系管理職なのに業務アプリをシュシュっと作れちゃう俺

あるわけないだろバーカ
絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ

644 名前:デフォルトの名無しさん [2025/05/10(土) 02:15:51.46 ID:2PI0HY+M.net]
豊川悦司「俺ー♪」

645 名前:デフォルトの名無しさん [2025/05/10(土) 13:05:37.78 ID:IWhliTad.net]
無から有は難しいよね、環境や周囲の協力がないと



646 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:13:10.16 ID:APagMvUq.net]
業務効率化程度の仕事なら、無から有は勝手にやりゃいいだけだから難しくない
周囲を巻き込んだとしてもどのみち最終的には言い出しっぺが責任持ってやれよという感じにしかならん
有から別の有の方が遥かに難しい

647 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:23:47.83 ID:TkZSyEZj.net]
誰かがVBAなんかで半端に作っちゃったものを、こんなもんSaaSでいいだろと移行させるみたいなのは難しい
必ず、決まった業務を回すしか能のない人達が重箱の隅をつついたり牛歩戦術をしてみたりと必死に抵抗してくる

648 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:31:42.36 ID:HZyfRGTg.net]
金がかかるとなるとそりゃそうでしょ。

649 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 13:49:08.55 ID:tG+fugNq.net]
いや、経験上、金を問題にするのはある程度上の立場の人間なので、本質的でないしょーもない業務影響はあまり問題にしない。
〇業務を〇時間削減できるから人件費換算で導入コストと利用料を上回る効果が見込めますと説明できればよい。
くだらないことで難癖を付けてくるのは現場の人間。

650 名前:デフォルトの名無しさん [2025/05/10(土) 14:05:58.61 ID:3Mk2sCKg.net]
>>630
何が楽かさえわかってないのかよw

651 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:09:45.85 ID:644AQTJb.net]
無から有ってのは、何であれ産みの苦しみって奴で、社会でも人生でもあらゆる場面で起こり得る
有から別の有ってのは例えが判らんが、αというシステム化された処理が有って、その結果を元に
別のβを作ろうとしているのか、或いはαの改善品αUを作ろうとしているのか
前者なら無から有と一緒だし、後者なら元と成ってる最初のαを精査すればいいだけ
こんなもんSaaSでいいだろと思い込んでしまった原因を自省してみて、うかうか宣伝文句に釣られてただけと
理解出来たら儲けもの じぶんで実際にSaaSに移行してみて一年位稼働させてそれでも一切問題が発生しない
事を確認してから提案するぐらいの努力は発言する前に済ませておくべき
やってみましたできませんでしたは、殊営利を目的とする企業では落第の烙印を押されるだけ
プロトタイプ・試作品も無いまま実務で運用することほど無謀な試みは無い 旧日本軍大本営方式でしか無い

652 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:31:05.56 ID:HZyfRGTg.net]
>>638
利用者が習得するまでの学習コスト考えてる?

習得するのに時間がかかるとか操作が複雑になり過ぎたら反発すると思うけど。


今よりこれだけ簡単になりますって話なら反発も少ないのでは?

653 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 14:39:47.45 ID:tG+fugNq.net]
>>641
だからそれを含めて難しいって話でしょ

654 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 16:34:23.69 ID:ngauQQ8E.net]
話の逸れ方が大きくなってきたな

655 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 16:38:29.08 ID:iGSB8dlv.net]
前から先人達がこのスレで、Arrayを使って云々・・・と議論しているの見かけて、
「どこで活かせるんだろう?」と思っていたけど、
今日初めて使ってみた。

もともとは、Power Queryで複数のクエリーとピボットを順番に更新させるのをVBAでやっていたのだけれど、
「クエリと接続」とタスクマネージャーをずっと監視しているのもしんどいので、
ChatGPTに、
「クエリーやピボットテーブルのそれぞれを1つのステップとして、
WMIの "SWbemLocatorオブジェクトのConnectServerメソッド" とやらを使って、
各ステップの開始/終了時刻とCPU最大使用率のテーブルをワークシートに出力できないか?」
と相談したら、その中に、出てきましたよ、

' ステップ一覧
Dim steps As Variant
' 更新ステップのリスト(ステップ名, 実行内容)
steps = Array( _
Array("Q_1", "クエリ - Q_1"), _
Array("Q_2", "Query", "クエリ - Q_2"), _
Array("Q_3", "Query", "クエリ - Q_3"), _
Array("Q_4", "Query", "クエリ - Q_4"), _
Array("Q_5", "Query", "クエリ - Q_5"), _
Array("Q_6", "Query", "クエリ - Q_6"), _
Array("Q_7", "Query", "クエリ - Q_7"), _
Array("Q_8", "Query", "クエリ - Q_8"), _
Array("PVT_1", "Pivot", "PVT_1") _
)

と。
で、何度かやり取りした結果、うまく出来まスた。



656 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 18:59:33.45 ID:Pq21kD+5.net]
しねごみかす

657 名前:デフォルトの名無しさん [2025/05/10(土) 19:48:45.71 ID:pekHwIHV.net]
>>644
どれくらい処理の重い作業か、帰りの組み方をしているのか私には分かりませんが、
テーブルデータの整形が終わった後、一区切りついた後、テーブル関数やリスト関数などで繰り返し作業保護(一般的なeach?)

658 名前:デフォルトの名無しさん [2025/05/10(土) 19:52:02.31 ID:pekHwIHV.net]
>>646
を行う前に
必ず
List.Buffer Table.buffer を行うと(VBAの配列並にとは言いませんが)処理が劇的に早くなると思います。
私は2000行に6000行のTaxt.Containsをして結果をList.SelectやAnyTrueなどをしていますが、劇的に早くなりました。

659 名前:デフォルトの名無しさん [2025/05/10(土) 20:41:13.86 ID:pekHwIHV.net]
VBAでセルの中の改行のある大量の文字列の中から目的の

660 名前:報を抽出するという試みをやっていたのですが、最近になってやっと改行で区切って、1行にバラすという事に気がつきました。
これで無関係な文字列の行はフィルターできるし、視認性が劇的に改善したしで本当に楽になった。
データは必ず一行づつという当たり前を改めて知らされた。
[]
[ここ壊れてます]

661 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 21:53:08.57 ID:iGSB8dlv.net]
今回Arrayを使って、各クエリー/ピボットテーブル更新中のCPU使用率を調べようとしたのは、
・複数の前処理ブックの共通テーブルを参照して、項目ごと時間軸串刺し合計や最大/最小値とその時間なんかを求めるブック
・仕上がり52,560行
・これでもまだ中間集計ブック
・将来的には104万行を超えるので、ベース集計クエリーにはデータ モデルを使用
・今の第8世代Core i7と32GBメモリーで、このブックの更新には20分超
・当初は、List.Buffer、Table.bufferをクエリーで使って高速化を試したが、これだけ行が多かったりクエリー依存が多いと、シーケンシャルにしてBufferしたつもりが前クエリーの再計算が入ってExcelが固まったので断念。
・逆に、104万行以内に収まる途中のクエリーは、ワークシートに書き出してこれを参照するようにしたら、最後まで計算できるようになった。

662 名前:デフォルトの名無しさん [2025/05/10(土) 23:00:42.57 ID:pekHwIHV.net]
>>649
クエリを分割したらいいって事でしょうか
中間テーブル?の様な

663 名前:デフォルトの名無しさん [2025/05/10(土) 23:08:41.01 ID:pekHwIHV.net]
>>649
明らかに不要なデータを元ファイルから削除するとか、グループバイがしたいのならワークシートで

664 名前:デフォルトの名無しさん [2025/05/10(土) 23:10:16.50 ID:pekHwIHV.net]
行の並び変えをするとか
不要な列は削除しておくとか
集計はパワーピボットを使用するとか、テーブルのjoinではなく、リレーションシップにするとか
できそうではないですか?

665 名前:デフォルトの名無しさん mailto:sage [2025/05/10(土) 23:17:35.27 ID:iGSB8dlv.net]
>>650
別スレで



666 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 02:32:23.22 ID:orNzllBw.net]
属人化言い出したらExcelシートそのものも属人化だろな

667 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 06:38:44.59 ID:dESx0WKG.net]
>>654
これは正にだな
人によって非表示行(列)や非表示シート、
定義された名前を非表示にするやつすらいる

668 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 09:33:21.32 ID:xj1UIMtq.net]
他人のVBAより数式のほうが見たくなくなる

669 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 12:52:43.82 ID:orNzllBw.net]
世の中、属人化シートだらけ

670 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 13:42:45.69 ID:oI5baM/t.net]
逆に、「他人に見てもらう」ことを意識してExcel作っていたら、
独りよがりでない、少しはわかりやすいもの作るのかと。

「お天道様が見ている」
「第二の視座」
とか言うヤツ

671 名前:デフォルトの名無しさん mailto:sage [2025/05/11(日) 13:57:41.75 ID:UTf8BgbA.net]
大さんという上司に観てもらってた良い思い出

672 名前:デフォルトの名無しさん [2025/05/12(月) 19:52:24.55 ID:/MqwmjFI.net]
Excel大好き人間としてはHaskellを推したい

673 名前:デフォルトの名無しさん [2025/05/13(火) 20:06:46.42 ID:IQbEImBo.net]
正規表現で漢字全てにマッチさせるにはユニコードの最後の漢字までを範囲にしたらいいのだすか?

674 名前:デフォルトの名無しさん mailto:sage [2025/05/13(火) 20:43:44.18 ID:UxpIpbA1.net]
[\u4E00-\u9FFF]

675 名前:デフォルトの名無しさん [2025/05/13(火) 22:37:17.01 ID:IQbEImBo.net]
urlに恐らく改行が含まれているのですが、改行もマッチさせるとなるともはやなんでもマッチしてしまいますか?



676 名前:デフォルトの名無しさん [2025/05/14(水) 00:23:46.12 ID:TPeqytUP.net]
漢字で始まり、ひらがなで終わる
ひらがなのみ
カタカナのみ
マッチした結果を全てディクショナリーに登録して、アイテムは1+1を繰り返してカウントする
これだけでも頻度分析ができるんだね

677 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 00:57:58.82 ID:WcLab/oc.net]
>>664

678 名前:
それ単語の区切りはどうするの?
[]
[ここ壊れてます]

679 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 01:04:11.54 ID:KAgWD1+F.net]
仕事の管理でVBA使ってポツポツやってたけど違う業務管理が追加になってもうすっかりコードなんか忘れてるので面倒だなと思ってたけどChatGPTちゃんに聞いたら楽に組めた
Aのシートをコピーしてシート名はCにしてとかでもすぐに教えてくれるし
こんなのでもすっかり忘れてるから助かった

680 名前:デフォルトの名無しさん [2025/05/14(水) 01:12:17.68 ID:TPeqytUP.net]
>>665
漢字とひらがな
ひらがなのみ
カタカナだけ
意味のある言葉になっているよ
むしろ本当の本当に単語にまで分解しても意味がわからないよ
情報を細分化してもしょうがない

681 名前:デフォルトの名無しさん [2025/05/14(水) 01:49:41.56 ID:TPeqytUP.net]
例えば
お 世話 に なり ます(あるいは なります)
まで分解しても意味を持たないでしょう?
お 世話になります
で十分でしょう
東京タワー みたいに
漢字カタカナパターンもある事に気がついた

682 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 09:24:40.17 ID:mIHvW3MM.net]
それで分析できるのはその定義における節の頻度であり、一般的な単語とは異なる
それがお前の目的に合っているのであれば好きにしたらいい
ついでに言えばそんなもんMeCabに突っ込めばいいだけだからお前独自の方式なんて誰も必要とはしない

683 名前:デフォルトの名無しさん mailto:sage [2025/05/14(水) 09:51:03.61 ID:mHOx/gQ0.net]
おー、MeCabってのがあるのね。めかぶって読めるなと書こうとしたら、本当にめかぶから名前を取っているのね。

684 名前:デフォルトの名無しさん [2025/05/15(木) 22:57:08.75 ID:vsR8tMHm.net]
めかぶというやつの公式ページ?の
一行一分
は誤字ですか?
それだったらテキストマイニングを極めていてもやっぱりこの程度なんだなと
あと何を言っているのかを判断するには前後の脈略が必要だし、日本語はひらがなに特に意味がある訳でもないから
そこまで単語に固執する必要もない気がする

685 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 09:43:09.58 ID:IgvVjYfn.net]
make a boo



686 名前:デフォルトの名無しさん [2025/05/16(金) 10:48:47.56 ID:em0azm75.net]
manko

687 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 13:02:22.31 ID:TOZOy2SA.net]
印刷範囲外のセルが
なぜか印刷範囲中央付近に
プレビューされ、実際にも印刷されます

改ページプレビューも利用して
グレーゾーンに押しやっている
テキストボックスなんですが
元の配置よりさらに外側に動かすと
印刷範囲から消えはします

そのため支障をきたしている
訳ではないのですが
なぜこうなってしまうのでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2025/05/16(金) 13:04:09.96 ID:TOZOy2SA.net]
↑スレ違いでした、すみません
取り消します

689 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 09:02:45.85 ID:ztNWa+hU.net]
ラベルのAcceleratorって何に使うの?

690 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 10:17:32.20 ID:BnclY/n2.net]
マジレスすると
ボタンのタイトルを E&xcel とかにすると
Ctrl+x でボタンを押せるのが Accellerator じゃないかな

691 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 10:20:42.98 ID:ztNWa+hU.net]
でもラベル押せないじゃん

692 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:01:06.66 ID:vJvypOU0.net]
ボタンの上とかにラベルを貼り付けることで
マウスクリックした時、キーボード操作した時で同じ操作をさせられる
Accessなら、ラベル単体でもつついてあれこれできるけど、Excelではそんな機能は無い
SpecialEffectと併用して見た目押したようにできるかも知らんが
そんな無駄を付け加えてまでやりたいことなのかどうか

693 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:11:18.06 ID:ztNWa+hU.net]
回答?
独り言?

結局、何に使うの?

694 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:32:35.29 ID:FyrcyVVg.net]
一応、フォーカス移動には使えるんじゃない? それがどの程度嬉しいことかは微妙なところかもしれないが。

695 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:42:35.66 ID:ztNWa+hU.net]
テキストボックスの前に置いといて、ラベルにフォーカスさせると
テキストボックスにフォーカスされる
テキストボックスが複数あっても一発で選べる
なるほど、こうやって使うのか



696 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:48:29.09 ID:AUJKaPS/.net]
それは可能かもしれないけど、テキストボックスにフォーカスを移動するためにアクセラレータを使うのはどうかなぁ

697 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:49:47.54 ID:AUJKaPS/.net]
>>661が指摘してましたね
スレ汚しでごめんなさい

698 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 12:58:22.21 ID:ztNWa+hU.net]
よく出来たアプリはみんなできるようになってるよ
S)検索
みたいな感じ

マウスしか使わない人はそんなこと考えないし、
タブオーダーも無茶苦茶で、どこに飛ぶか判らない

699 名前:デフォルトの名無しさん [2025/05/17(土) 14:53:18.10 ID:Mou0F5/k.net]
フォントサイズをセルの横幅にジャストサイズで合わせたいのですがどの様にすればいいでしょうか?
縮小して全体を表示するは試していますが、念のために列幅と文字数を割って1文字あたりの大きさをまとめるとか、そう言った確実な方法を探しています。

700 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:12:34.03 ID:VJRyFCkb.net]
そんな方法はない

701 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:32:10.79 ID:Vu4+Tz9e.net]
仕方が無い

702 名前:デフォルトの名無しさん [2025/05/17(土) 18:34:04.52 ID:Mou0F5/k.net]
やっぱりセルに実際の文字列を入れて
治ったセルの高さ/行数 = 1行あたりの行の高さ
で割り出すしか無さそうですね

703 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 18:37:59.26 ID:rdyb/DPe.net]
画像で保存してセルに合わせて画像を拡大縮小したらどうかな

704 名前:デフォルトの名無しさん [2025/05/17(土) 18:49:20.89 ID:B7xQsXDd.net]
一つのセルにそんなに長い文字列を入れてしまうデザインを見直したほうが早いかも

705 名前:デフォルトの名無しさん [2025/05/17(土) 18:50:45.81 ID:Mou0F5/k.net]
やっとdictionaryのネスト、親ディクショナリー、子ディクショナリーが理解できました。
よくdictionaryのitemに配列を入れたら値が複数登録できると言うコードが詳細されていて、私も四苦八苦しながら覚えました。

だけどこれって本当は親ディクショナリー、子ディクショナリーが正しい答えですよね
ディクショナリーだとそれぞれの項目が文字列で指定でますが、配列だとインデックスでしか登録できない



706 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 19:22:23.61 ID:hPL9irHC.net]
>>686
うちは24や48から2ポイントずつ減らしならが総当りしてる

707 名前:デフォルトの名無しさん [2025/05/17(土) 20:04:52.16 ID:Mou0F5/k.net]
>>691
1行なら 縮小したら全体を表示する が使えるから、、、?
そして多めに行数を作成して、行数が少ないのなら削除するか、非表示にすればいいと?
なるほど

708 名前:デフォルトの名無しさん [2025/05/17(土) 20:06:06.97 ID:Mou0F5/k.net]
>>693
私も12の倍数で作成しています。

709 名前:デフォルトの名無しさん [2025/05/17(土) 20:19:45.31 ID:Mou0F5/k.net]
印刷周りの仕様、挙動をよく理解していなくて申し訳ないですが、
改ページで1ページの範囲を設定していれば、どれだけ行が大きいか、行数が多いかしても、
必ず1ページになる様にExcel側が自動調整されるのでしょうか?
優先度は改ページ、全ての行、列を〜ページに合わせる、zoomの順番でしょうか?

710 名前:デフォルトの名無しさん [2025/05/17(土) 21:01:27.82 ID:HReuuPkT.net]
>>696
それはVBAの問題なのか?
ここは何のスレかわかってるか?

711 名前:デフォルトの名無しさん [2025/05/17(土) 21:14:59.94 ID:Mou0F5/k.net]
>>697
VBAで書類の作成、印刷の自動化を申しつけられて、全自動化時代は余裕なのですが、印刷周りの設定はよく知らなくて、しかも実際に印刷作業をする人は別の場所の人だから、1ミリでも小さければ気に食わないんでクレームを入れてくるんです。

712 名前:デフォルトの名無しさん [2025/05/17(土) 21:18:54.18 ID:Mou0F5/k.net]
.PageBreak
.Zoom
.FitToPagesWide
.FitToPagesTall
font-size
セルの縦横
これら全てVBAではないのですか?

713 名前:デフォルトの名無しさん [2025/05/17(土) 21:29:04.01 ID:HReuuPkT.net]
>>699
VBA以前にそもそもExcelの印刷自体を知らない人なんだと

714 名前:「うことはよくわかった
1ミリも狂わないように印刷するにはWindows APIを呼び出して使うかExcelで印刷するな
[]
[ここ壊れてます]

715 名前:デフォルトの名無しさん [2025/05/17(土) 21:36:27.58 ID:Mou0F5/k.net]
>>700
どのAPIがよろしいのでしょうか?
PDFには常に出力しています



716 名前:デフォルトの名無しさん [2025/05/17(土) 21:39:10.06 ID:HReuuPkT.net]
>>701
Canvas API
教えたからそろそろ消えろ

717 名前:デフォルトの名無しさん [2025/05/17(土) 21:56:35.49 ID:Mou0F5/k.net]
>>702
それはWindows APIなのでしょうか?

718 名前:デフォルトの名無しさん [2025/05/17(土) 22:02:21.39 ID:HReuuPkT.net]
>>703
いい加減にしろ
後は自分でPostScriptを書いてPDFファイルを作れ

719 名前:デフォルトの名無しさん [2025/05/17(土) 22:20:55.25 ID:Mou0F5/k.net]
>>704
Canvas APIはWindows APIなのでしょうか?
私はVBA以外はほぼ無知なのですみません

720 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 22:21:25.66 ID:c0BqlY74.net]
ぐぐれ

721 名前:デフォルトの名無しさん [2025/05/17(土) 22:28:10.07 ID:Mou0F5/k.net]
本当にAIのコミュ力につくづく人間は敵わないなと思う

722 名前:デフォルトの名無しさん [2025/05/17(土) 22:40:26.23 ID:HReuuPkT.net]
>>707
とことん馬鹿だな
教えてもらってそれかよ
消えろや

723 名前:デフォルトの名無しさん [2025/05/17(土) 22:48:37.53 ID:Mou0F5/k.net]
>>708
それがコミュニケーション能力が高い事なんですか?

724 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 22:54:54.99 ID:2QmOCSUM.net]
煽り耐性ないやつが次々と引っかかっててウケるー

725 名前:デフォルトの名無しさん [2025/05/17(土) 22:58:48.79 ID:HReuuPkT.net]
馬鹿はこうやって本性を曝け出す



726 名前:デフォルトの名無しさん mailto:sage [2025/05/17(土) 23:31:01.83 ID:QeS8RaKg.net]
エクセル(VBA)で印刷の精度を求めるのは徒労だと思う

727 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 08:45:52.75 ID:cP1cyZx+.net]
いまだに位置合わせがどうこうやってる
生産性激低日本さん

728 名前:デフォルトの名無しさん [2025/05/18(日) 09:28:02.03 ID:NiGvaOOd.net]
>>692
配列がいい場合もある
使い分け

729 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 10:05:14.14 ID:v1lfaeE4.net]
>>696
相談の核は、構文の式の優先度を知りたいのか
成果物を要求する人の要望に応じるには、どこを直せばいいのかを知りたいのか

それらの式をあれこれ工夫して組み込んでもどうしてもズレてしまう だの
今のところ問題無いが先々を考慮して問題に成りそうなヶ所を潰しておきたい だの
こちら側では相談の意図がいまひとつ掴みきれない
具体的にサンプル上げるなり事例を書き込むなり
1mmズレるケースとズレないケース両方があれば、より判断しやすい
おれのはズレないよ アー〇ネイ〇ャーだもの

730 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 11:39:33.78 ID:/BWwyZ2v.net]
Dictionaryのkeyに複数値を入れれば2次元で格納できる

731 名前:デフォルトの名無しさん [2025/05/18(日) 11:50:29.67 ID:Mk3OrkwO.net]
>>715
改ページと全ての行、列を1ページに合わせると、Zoomのこの3つの依存関係、絡み合いが知りたいですね。
AIのご説明では、
まず改ページが最優先され、
次に全ての行、列を1ページに合わせるの設定が優先さる?
全ての行、列を1ページに収めるが設定されているとZoomの設定は無視される
そうです

あとあと行数が今より増えた時に、「フォントサイズが小さくなりすぎる」かもしれないので、今一度、Excelのページレイアウトの設定、仕様、挙動を完璧に把握したいなと思いました。
ありがとうございます。

732 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 11:53:43.56 ID:JTwWUl1C.net]
ところがね・・・
Windowsの場合は、パソコン側の液晶モニターの設定も印刷に影響するんだよ
プリンターもすべて同じLANにつながってるのを共有してるのに、別のPCから印刷するとズレるんだ・・・

733 名前:デフォルトの名無しさん [2025/05/18(日) 11:59:28.20 ID:Mk3OrkwO.net]
AIにお伺いして、より沢山の案や方法の回答を得たい時はどの様にご質問していますでしょうか?

私は具体的に〜をするにはどの様な方法がありますか?
と聞いていますが、質問があまりにも具体的すぎるのか、限定的すぎるのか、聞かれた事に対してしか答えてくれません(質問に対して抽象化して幅広く回答したら今度はAIは嘘をつくと言われると思いますが。)

734 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 12:05:26.30 ID:9lhlIUdU.net]
左右に並んだセルを連結すると文字の上下位置がずれて発狂するよね

735 名前:デフォルトの名無しさん [2025/05/18(日) 12:07:00.00 ID:Mk3OrkwO.net]
>>718
それもAIに言われました
スケーリングも影響しますと言われました。
高解像度のモニターで、アイコンのサイズを大きくするために使うあのスケーリングです。
プリンターのフォントや最小の余白サイズなどのプリンターの仕様
プリンターに実は縮尺の設定がかかっている事に気づいていない
などなど



736 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 12:20:35.59 ID:Yd8pXRNj.net]
スレチの話題ほど長く続くんだよな
Excelスレでやってくれよ

737 名前:デフォルトの名無しさん [2025/05/18(日) 12:24:15.85 ID:Mk3OrkwO.net]
公式ページに書いてありましたね。
Zoom プロパティが True の場合、FitToPagesWide プロパティは無視されます。

Zoomプロパティが False の場合、 FitToPagesWide プロパティと FitToPagesTall プロパティは、ワークシートのスケーリング方法を制御します。

(Zoomは)拡大または縮小する方法にかかわらず、元の文書の縦横比は保持されます。

738 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 13:41:54.68 ID:v1lfaeE4.net]
スレチとは言えないだろうけど、今のところ個人の感想を書いてるだけに近しいな
仕様に関しては、その書類を共有するグループ内で諮って今後の方針を決めればいいだろうし
環境の違いで発生するトラブルに関しては、最大公約数だっけ?なんかそういう系の
どんな環境でもほぼ同一の結果を出せますゾーンを決めて、それに沿った設計制作に
改めるべきだろうし
PDFに出せば問題軽減するってんならそれもひとつの解決策だし
掛けるコストに見合う結果が出ないなら意義は低い(少ない)
これが、個人研究ってんならより深く追及して解に近いものが得られたら発表してもらいたいが

739 名前:デフォルトの名無しさん [2025/05/18(日) 13:47:30.17 ID:iKxgrlxH.net]
longとstrの変数定義10個やって、ループ5万回回して中で変数に値を出し入れする

まとめてループ外で変数定義するのと、ループ内で適宜定義するのとどっちがよいので??

740 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 14:08:00.75 ID:JTwWUl1C.net]
>>723
保持されないんだな、これが
罫線の太さが一部だけ違ってるシートだと拡大率が縦と横で違ってくる

741 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 14:10:27.89 ID:JTwWUl1C.net]
>>725
MSの推奨は最初にまとめて宣言
チームでやるならみんなに合わせる
個人的な作業ならどっちでもいいけど、途中で方針を変えるとあとで混乱するからどっちかに決めて一生変えないこと

742 名前:デフォルトの名無しさん [2025/05/18(日) 14:47:49.53 ID:qr58bPvk.net]
>>723
この馬鹿、答えを教えてもらってもネチネチやってるのか
馬鹿はこれだから
消えろや

743 名前:デフォルトの名無しさん mailto:sage [2025/05/18(日) 17:14:14.05 ID:9lhlIUdU.net]
>>725
VBAにブロックレベルのスコープはないからどっちも同じ
オレの好みは読みやすさ重視でループ内に書く方だが
プロシージャ内の2つのループで同じ変数名を使いたい時
ループ外で宣言しないといけなくなって打ちひしがれる

744 名前:デフォルトの名無しさん [2025/05/18(日) 19:26:33.94 ID:NiGvaOOd.net]
真円を印刷したら楕円になって発狂したの思い出したわ
どうやって解決したかは昔すぎて覚えていない

745 名前:デフォルトの名無しさん [2025/05/18(日) 21:45:07.54 ID:JeO/PtYk.net]
>>727
>>729
参考になります…!
ループ内の宣言コストとかはあんま気にしなくてもよさそうな感じなんですね(オブジェクト除く)



746 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 00:29:53.41 ID:aSNuw95p.net]
変数3、4個のプロシージャだったら変数の宣言しなくていいよね?
プロシージャが動いてる時だけメモリ消費するってことでいい?

747 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 00:49:32.05 ID:nyMkteHn.net]
>>732
Option Explicit しなさい
しないと、変数のタイプミスで簡単にバグる

748 名前:デフォルトの名無しさん mailto:sage [2025/05/19(月) 03:01:33.66 ID:xZYpAeMM.net]
>>732
たとえ宣言してあっても、メモリ上に変数領域が確保されるのは実行中だけだよ
ただし宣言しないと全部Variant型にされるからメモリ効率も実行効率も悪くなる、と言っても体感はできないけど

749 名前:デフォルトの名無しさん [2025/05/19(月) 06:06:52.71 ID:WEB+3jSu.net]
>>730
図形の事に全く詳しくないから間違っているかもしれませんが、セルに合わせて伸縮したり、移動したりするのを無効にするのでしょうね

750 名前:デフォルトの名無しさん [2025/05/20(火) 02:20:44.35 ID:vmioRAc9.net]
ListView,TreeView入れて作ったら、大半の人がOffice2013 64bit使ってて動かないことが判明したんだけど、どうしよう

751 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 06:15:30.63 ID:J92IpVQ8.net]
作りなおす

752 名前:デフォルトの名無しさん [2025/05/20(火) 07:27:24.89 ID:QvUhVdYo.net]
ん? 2013にはそのview無いってこと?

753 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 07:40:50.77 ID:QuREz4IK.net]
32bitと64bitの互換性が無い Verが違う 今時2013つこてる方がキケンがあぶない
相手の環境を再現できるマシンを入手してそれで作り直す
がんばって自作する https://qiita.com/Q11Q/items/b4f8d50e760d114b21fd

754 名前:デフォルトの名無しさん [2025/05/20(火) 08:58:00.71 ID:QvUhVdYo.net]
あぁ、なる
昔大量にフォーム移行する時に、定義を一覧に出して、それを元に再構築するの作ったような記憶…
おそらくサイズ変更に合わせてフォントとかも変えたのかな…

755 名前:デフォルトの名無しさん [2025/05/20(火) 10:20:21.64 ID:4cRKMiEn.net]
きちんと動作環境を明確にする
クライアントと打ち合わせる
上司や営業に相談する



756 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 14:46:51.76 ID:E4QmPhp5.net]
2019ですら化石レベル化してるのに2013とはな

757 名前:デフォルトの名無しさん mailto:sage [2025/05/20(火) 16:17:35.03 ID:0n1WQM2u.net]
2013がどうってんじゃなく使うDLLが違う
使用するべきDLLが32bit版か64bit版か判断するコードが要る

758 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 10:53:43.66 ID:va6/rMba.net]
Excel2013が危険なのには同意だけど
Excel2013/64からListView,TreeView/32を呼ぶのは無理ってだけで
Excel2013/64からListView,TreeView/64を呼べたら使えるんじゃね

759 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 11:32:04.49 ID:gg1Rd+aD.net]
所詮、ActiveXコントロール(ocx)だから
カレンダーコントロールと同じ運命を辿るような気がするけどね
必死に工夫して汗水流して作り上げても、寿命が風前の灯火で数ヶ月後には利用不可とか

760 名前:デフォルトの名無しさん [2025/05/21(水) 12:10:27.12 ID:ZnDW2hJE.net]
使用者、要望者のオーダーメイドでマクロを作成しても、これは嫌だ、あれも嫌だ、と言われるならなにも作る事は出来ない
脱Excelといって、既製品の業務ソフトを導入しても絶対不満しか出てこない
脱Excelの現実を知った気がする
そして全ての要望を取り込んで作成したマクロが属人化した闇Excelファイルなのだろう

761 名前:デフォルトの名無しさん [2025/05/21(水) 12:16:44.55 ID:np4mB3oN.net]
嫌かどうかで仕様を決めていると大変だろうな

762 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:16:57.81 ID:gg1Rd+aD.net]
>>746
そういう、いかがわしい新興宗教にのめり込んだ人のような発言はそろそろ控えたら?
書いてることが支離滅裂だよ?

>オーダーメイドでマクロを作成しても
 要望通りでダメなら、どこをどう改善すればいいかじっくり話し合いの機会を持てばいいだけ
 作成したと言い切れるのは、試作品を改良改善した末に仕上がったものに対して使う言葉
>これは嫌だ、あれも嫌だ、と言われるなら
 事前の要件や仕様を満たして無いんだろ? 打ち合わせの時に聞くだけの態度で居たとかで
 その制作物が仕上がった時の概要がじぶんのアタマの中にできていないからそういう事態に陥る
 経験不足もあるだろうし打ち合わせが打ち合わせの体を為していなかった、てだけ
>絶対不満しか出てこない
 その業務アプリに移行しましょうと先導した人間の責任 流行りの言葉なら任命責任
>全ての要望を取り込んで作成したマクロが属人化した闇Excelファイル
 これがまったく理解不能 属人とか闇とか言いたいだけちゃうんか、と
 そんな発言に賛同してくれるのは、あんたがた宗教の身内だけ

763 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:20:09.77 ID:a2F5EjYc.net]
TreeViewなどにはライセンスの問題もあったような

764 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:24:41.83 ID:4tKBDgn4.net]
顧客も打ち合わせしても話し通じないならAIと打ち合わせしてコード出してもらった方がいいってなるよな

765 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 13:28:08.25 ID:RMq3dtvy.net]
ぶっちゃけシステムなんてそんなもんだよ
コンサルや名の知れたSIerに頼んだって必ず不満は出るし、結局使い物になりませんでした、なんてことも珍しくない
ただし、VBAはユーザー側の人間が作ることが多いので、SIerみたいに「要件定義で決まった通りです」で逃げるわけにもいかないんだよね



766 名前:デフォルトの名無しさん [2025/05/21(水) 15:22:55.64 ID:r/haQ8U2.net]
仕様変更に合わせて納期も延長でいいんじゃね

767 名前:デフォルトの名無しさん [2025/05/21(水) 17:20:56.31 ID:RhMOdQAE.net]
だいたい配布前提で整備したコード書けば属人化なんてほぼしないわけで
取り込む要望も無理にまとめず適度に分割してやればいいし
敵に抵抗できないコミュ障コーダーが悪いまである

768 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 17:33:31.94 ID:7nPavp7R.net]
>>753
属人化の根源はコードそのものじゃなく脳内にしかない仕様だよ
コードからwhatを読み取れないから属人化する

769 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 17:33:52.05 ID:7nPavp7R.net]
whatじゃない、whyだな

770 名前:デフォルトの名無しさん [2025/05/21(水) 17:42:23.76 ID:RhMOdQAE.net]
根源とかどうでもいいんよ
VBA少しできますくらいの他人が
適当にメンテしながら使っていけるコード書けって話でしかない

771 名前:デフォルトの名無しさん mailto:sage [2025/05/21(水) 18:08:10.91 ID:7nPavp7R.net]
>>756
配布前提で書いたコードだろうと属人化するって話だから、
メンテしながら使おうが属人化はするよ

772 名前:デフォルトの名無しさん [2025/05/21(水) 18:16:53.95 ID:HDnlDCyv.net]
こんげんかせんといかん

773 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 07:49:16.16 ID:ZB7yrtfi.net]
Excel属人化教の方々は、その属人の定義をして欲しい
属人の何がいけないのか? 全員が同じレベルに成れと言い募ってるのか?
フルオープンにしてコード見れば説明書に成ってる程の成果物を作れと言ってるのか?
それとも、いけない事は無いがただ単に属人って言葉に魅了されて使ってるだけなのか?

774 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 07:59:10.35 ID:ZB7yrtfi.net]
WhyやWhatが読み取れないからメンテ出来ない ってんなら、じぶんのWhyやWhatで作り直せばいい
それを持ってた奴が前作を作ったんだしそれが使えてきてたって事実は変わらん
おれにはできねえってんなら、前任者より能力が劣ってるということになるし、才能ある奴を
新たに採用するように働きかけする必要がある
シン成果物を作れる能力あるなら、前任者をつべこべこき下ろしてる時間はムダでしかない 成果物-1.0でもいいけど

775 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:28:50.00 ID:cWZ2SmFA.net]
>>760
書き間違えたのは申し訳ないが



776 名前:、whatはコードから読み取れるんよ
whyは何故その処理をしているか?何故その方法を選んだか?何故そのアルゴリズムなのか?
それら意図を完全に示す術はない
コメントを残せって言われるのはつまりwhyを残せってこと
whyを知らなければVBAに限らず、言語にも依らず、
あらゆるものごとは属人化する
属人化は必ずしも悪ではないけれど、
昨日の自分は別人ってことを鑑みれば効率が悪いことは明らか
[]
[ここ壊れてます]

777 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:29:26.28 ID:uEqc52DQ.net]
数年後の自分がメンテできるように作ればOK
人の能力はマチマチ、まだいない後任者のことを考えてもしゃーない

778 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:42:19.33 ID:cWZ2SmFA.net]
属人化はリスク要因となりえ、VBAは属人化する蓋然性が高いってことをわかった上で許容するのと、
わからず使う・属人化しないと信じて使うのとは大違いって話をしているに過ぎない
能力だの才能だの、シン成果物だの成果物-1.0だの、
手も頭も動かさない奴の言葉遊びほど虚しいものはないな

779 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:49:14.19 ID:iwrIvlAH.net]
属人化教なんて言葉を使っている時点で、もう何を言われても属人化の弊害なんて絶対認めないぞっていう雰囲気をぷんぷんさせているじゃない。このスレだけで何回この話題やるの?
一般に言われる業務の属人化というのは、特定の人がいなければ業務が回らない状態のことで、当該特定の人が休んだり退職したりしたときに業務が止まってしまうリスクがあることから好ましい状態ではないとみなされている。会社側としては業務内容を把握する従業員を複数人にしたり(1人に依存しない)、マニュアル化したりすることでリスクを低減化するのが通常の対応。
VBAはコード作成も実行もExcelだけでできるという特徴があり、このVBA固有の事情により、?専門のプログラマーが作成するコードに比べて一般にコードの質が低い、?会社側が把握しないうちに業務にコードが使われるという事態が生じがち。属人化の弊害が、特にVBAについて言われることが多いのはこれらの事情によるところが大きい。
要するに会社側から見て、属人化リスクを低減化する機会自体がなかったり(上記?)、コストを掛けて属人化リスクを低減化するほどの価値が見出せなかったり(上記?)というケースがVBAの場合には少なくない。
VBAがアイデンティティになっちゃっている人にはどう説明しても理解しないだろうなと思いつつ、一応説明するとこういうことね。しかし、属人化の弊害を否定したがる人って、見事なまでに会社側の視点が抜け落ちているのね。担当者個人の視点で、業務が多少効率化できるのならそれはいいことだという発想から出発してそこから一歩も抜け出ないのならそりゃ議論も噛み合わんわな。

780 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 08:52:23.13 ID:cWZ2SmFA.net]
>>760
才能ある奴wがマニュアルをじぶんのWhyやWhatで作り直して大惨事になった、
東海村JCO臨界事故ってのもあったな

781 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:12:43.00 ID:ZB7yrtfi.net]
Excelは属人化しやすい だからExcelで効率化を図る場合には、それに関わる部署・チーム・グループが
一丸と成ってそうならないような対策を施さなければならない 今後、対策されていない自動化は禁止する
とかならまだわかる
Excelは属人化ガー VBAは尚更ー を連呼してるだけで、何の生産性向上に繋がるんだ?
アタマがひどく悪い一族に至っては「だからVBA禁止」のお触れまで出す始末

問題発生しないよう努力する必要もあるし、問題発生したらすぐさま対策を講じなきゃならないのは
何もExcelに限らんだろうに
とりわけここ20数年で急に変遷進歩し続けてきてしまったPC作業に取り残された奴らの繰り言に近い
そんなだから失われた40年とか揶揄されちまう 先を見て向上心持ってもっととんがらないと
VBAに問題あるなら、それを解消することに全身全霊で打ち込みゃあいいだけ
何の解説者だか評論家気取りだか知らんが、悪いものを悪いと言う事なんか阿呆でもできる 悪い処は直し続けるてだけ

782 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:31:16.38 ID:cWZ2SmFA.net]
>>766
属人化を悪いって言ってるのはあなた自身だろ
俺は属人化を悪いなんて言ってない
属人化を問題だと思うなら解決すべきなのはそりゃそうだし、
解決策の一つとしての全面禁止だって、俺なら選ばないけど理解はできる
属人化が何故生じるのかを議論することは、それを解消することにも繋がる
属人化する/しないの幼稚な二元論でまとめようとするのは、
頭を使ってない・使えないことをひけらかしてるに過ぎないよ

783 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:35:02.46 ID:mUoHJ/op.net]
従業員目線なら、属人化はイコール自分への依存度で価値だから、そりゃ手放さないわな

784 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:40:52.16 ID:cWZ2SmFA.net]
会社をプロフェッショナルの集まりだとすれば、
結局のところ仕事自体がどこまで属人化を突き詰められるかだから、
しょーもないことを属人化すんなって話なだけ

785 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 09:46:17.63 ID:ZB7yrtfi.net]
念仏唱えてるだけで、一向に前向きに対処しない・対策しようともしないバカ共を嘲って「教」を付けてる
属人の意味を、じぶんの中で咀嚼・消化してない/しようともしないで、ヨソで聞き齧った言葉をなぞってるだけ
「前にならえ・右にならえ」がDNAに刻み込まれてるこの国の人間にゃあ、それが心地いいのかも知らんが
誰がやらなくともおれはやる ぐらいの気概が欲しいところ

と書くと、内容読まずに言葉尻だけ捉えて「それが属人化に繋がる要因だろ!」とか言い募る奴が居そうだが
オープンな属人化なら大いに結構だろ ←これも語弊がある物言いだがw
オープンにする努力を怠るな、と言ってる 制作する側もそれを使って効率を上げようとする集団も 共有ってそういうもんだろ
そのグループ・集団は同じ目的(収益の向上)を持った集団のハズなんだ その目的達成の方にこそ目を向けろ
足引っ張って他人の粗探ししてつべこべ文句言ってるだけじゃあ、そのうち滅びる



786 名前:デフォルトの名無しさん [2025/05/22(木) 10:05:21.01 ID:cejl8MgF.net]
>>760
時間が無限にあるのが前提ならそうだね

787 名前:デフォルトの名無しさん [2025/05/22(木) 10:07:32.69 ID:cejl8MgF.net]
>>765
あれ実はノーベル賞もらえるレベルの改良だよな

788 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 10:23:06.55 ID:bEEUFRBb.net]
>>765
裏マニュアルとは別の?
ググっても分からなかった。

789 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 11:03:11.01 ID:j+nxGcrc.net]
質の低いコードを公開されたって迷惑なだけなんだって。VBA命の人は、まさに収益向上の観点からVBAはメリットより害の方が大きいと判断する会社が少なくないってことをどうしても受け入れられないみたいね。
VBA = 生産性向上・業務効率化という無邪気な信念を持っているみたいだけど、多くの会社はVBAをそのようには

790 名前:評価していない。会社が本気でコードによる生産性向上・業務効率化をするつもりなら、どのような言語を選定するにせよ継続的な管理コストは必要になるわけだけど、それならVBAではなく、もっとちゃんとした言語でやりたいというのが普通なわけ。非プログラマ社員の内製VBAの改変履歴を管理したり、マニュアル作ったりなんてしたくないのよ。 []
[ここ壊れてます]

791 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 16:37:21.75 ID:ZB7yrtfi.net]
さすが >>774を取るだけの素質を持ち合わせた人間の発言だなw
ExcelVBAスレでExcelVBA不要論を、あまり意味の無い言葉を並べ立てて講釈するとは
内製であれ外注であれ、その業務を賄うにはExcelで充分という案件は想定して無いだろ?
そういう案件に限ってという前提ならExcelVBAでいいじゃないか
ダメな理由を語りたいがためだけに持ち出した事例が、一向にその役目を果たしてない
どんなコードだろうと「質が低い」と判断できる能力を持ち合わせてるんなら、それを
ブラッシュアップするなり作り変えるなり その方が百万倍コストの面でメリットだろうに

どんな大袈裟なプロジェクトと比較してンの? んで、それ比較する意味あンの?
あんたの中ではあるのかも知らんけど、世間一般では無意味だ とおれは思うよ

792 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 17:36:10.44 ID:cWZ2SmFA.net]
>>775
少なくないってのを100%と解釈してるのか?
ダメだと判断する会社が多いってだけで、
良いと判断する会社が無いなんて書かれてないぞ
変なバイアスかけてレス読んでる様に思える
んで、ブラッシュアップなり作り変える(替える?)ことのどこにコストの優位性があるんだよ
無駄なコストを支払ってることに気づけないような奴が、
他人の発言の意味の多寡の判断なんてできないだろ
可か不可か、良いか悪いかみたいな単純な話にしないと理解できないポンコツ自慢はもうやめてくれよ

793 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 17:36:37.38 ID:Fv3bLhDj.net]
Excelで十分かどうかというのはあまり意味のない尺度だと思うけどね。
Excel VBAの案件って既存物のメンテを除けば基本的に現状ワークシート等での手作業を省力化したいというものだから、
そりゃExcelで十分に決まってる。元々人力でできる程度に細分化された業務なんだから。
VBAが批判されるのは、まさにそういう個別最適化の積み重ねによって細切れ(≒属人的)で非効率な業務プロセスが保存される傾向があるため。

794 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 19:51:20.63 ID:RAnqaH1V.net]
多くの会社から見て業務でVBAを使ってもトラブルが起きにくいパターンというのは主に2パターンあって、@重要なコードだが、何らかの理由で他の言語が使いにくい事情があるため、専門のプログラマに頼んできちんとしたVBAコードを書いてもらう場合。この場合、当然、VBA社員の出番はない。要するに、通常のシステム開発と同じだが、特定の事情により選定言語がVBAになるケース。もう一つは、Aあまり重要な業務ではないので、質の低いコードでも構わない場合。個人の裁量の範囲内でVBAの使用を認める会社というのはこっち。要するに個人で責任を取れる範囲内なら、会社は管理コストを掛ける必要もないし、担当者の裁量でVBAを使うことを禁止するまでのことはしないくても良いのではないかいう発想。それなりに合理的ではある。

逆にいうと、上記@Aいずれにも当てはまらないような使い方は、会社からするとリスク・コストを感じやすい。個人の裁量の範囲を超えて、非プログラマの書いたコードを業務に使用するような場合とかね。書いた本人はコードをオープンにしてブラッシュアップすれば良い、コストの面でも有利だなんて無邪気にのたまうけど、会社からすればそんな価値の低いものに管理コストを掛けたくない。仮に継続的な管理コストを掛けるならもっと価値のあるものに掛けたいわけ。はっきり言えば、新しく書き直すときでさえそういう既存のコードなんかない方が良い場合も多い。業務に使われている既存のコードがあるとなれば、どんなに酷いものであっても一応読まないわけにはいかないからね。

非プログラマの書くコードという括りで論じる限りは、Excelで十分な業務というより、低質なコードで十分な業務かというのが基準になるかな。それだって会社の方針次第だが。会社が全面的にVBAの使用を禁止しているような場合もあるからね。

795 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 21:02:03.17 ID:aXwvtPcZ.net]
VBA禁止な
reg add "HKCU\SOFTWARE\Microsoft\Office\16.0\Excel\Security" /v "VBAWarnings" /t REG_DWORD /d 4 /f



796 名前:デフォルトの名無しさん mailto:sage [2025/05/22(木) 22:58:58.92 ID:zdx+eNOi.net]
名前付き引数省略は害悪。全てキッチリ書け

797 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 08:26:51.53 ID:oLOrCYhj.net]
「多くの会社」を、それぞれが想定してる規模が違うような気がする
経産省のサイトを参考にすれば、商工業それぞれの規模から比較したら
小規模(社員数20人以下)のが俄然大半を占めてる(かつては零細と呼ばれてた)
製造業は九割に近付く勢いだし、小売業や飲食業も八割、卸売業は五割程度だが
「多くの会社」とひとまとめにする場合は、これらを指すのでは無いのか?
社員数2,000名以下の中規模とかをもって「多くの会社」と呼び為してる気がしてならない
小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに
その実態を知ったうえで「多くの会社」と書いてるんだろうか

798 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 09:06:27.49 ID:RtFNfP1s.net]
人手に余裕のない小さい会社こそ差別化要因にならない業務にはSaaS使うべきなんだよ
SaaSは企業規模に対する課金が多いため、むしろ小規模な企業の方がコスト効率も良くなる場合が多い

799 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 10:16:56.42 ID:38AbBGg0.net]
VBAの属人化リスクの議論って、むしろそういう小規模な会社こそが最も意識すべきことでしょ。中規模以上の会社なら、そもそも低質なVBAコードに業務を依存させるような間抜けなこと自体があまりないだろうし、仮にそういう事態を生じさせてしまっても、最悪追加コストで何とかできなくはない。
小規模会社には、VBAを「効率的」な「武器」だと思いこんで飛び付いて、必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった。その教訓としてVBAの属人化リスクが意識されるようになったんだよ。
「武器」にならないとまでは言わないが、そんなに大したものではないし、トータルで見れば「効率的」でもない。好んで「フルに活用」するようなものでもない。そういうVBAの等身大の実像が会社サイドに把握されるようになっただけの話。

「小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに」(>>781
多くの会社はこの後半部分が幻想に過ぎないことに既に気付いているが、VBAerには未だにこの幻想にしがみついている人が居るということ。

800 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 13:22:41.57 ID:oLOrCYhj.net]
>必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった
ここの事例を具体的に読ませてくれるサイトとかあるん? 統計とか?
文末を「・・してしまったところはほぼ無い」と書き換えてどっかで紹介して、それを鵜呑みにした読者がヨソでお披露目しても
気付かれないでしょ? おソースプリーズな言説

判り易く例として社員20人だとして、事務要員4人は

801 名前:規模に対して多い 大抵は現場と掛け持ちで4〜5人ならまだ普通
事務専任で1〜2人なのが一般的な見立てだろうと思う そのうち一人が丹精込めてVBA育ててたけどあいにく辞めた
他の人間は便利に使わせてもらってたけど、いざ辞められたらVBAだれもチンプンカンプン ならまだ有り得る
だからって、それが直接「だからVBA禁止!SaaSに移行!」って成ると頑なに信じてる?それ薦める?
小規模なら小規模なほど環境の変化を嫌うんだ あるものを何とかして使い続けられるならそうしたいってのが人の世の常
多少の手直し必要に成って助力が必要な状況なら、コネ使うなりしてでもそのものを使い続ける工夫に走る
タイミング良く同質のものを安価で提供できる業者とかが出てきて、それのサポートも請け負ってくれたりしたなら
ソッチに移行していくことはあったとしても、未知のサービスに賭けて投資してそれが自社の実態に即さなかったら
目も当てられない そっちのがリスキーだしその費用は丸々損害に等しい(授業料てか
どこの会社も業種が一緒なら業務も一緒だと思ってたら大間違いで、その会社独自の仕組みを持っていたりする
それに即して自在に加工できる道具として見ればExcelほど便利なものは無いのも事実

上では商工業を書いたけど、他にも建設、運輸・運送、士業えtc あらゆる業界で現実にExcel VBAが幅広く活用されてる
現実を鑑みても「ExcelのVBAは属人化しやすいから禁止」を言い張って止まないンなら、言い続けてりゃいいけどさ
書かれるたびにおれがしゃしゃり出てつべこべ反論してりゃいいんだろうし
[]
[ここ壊れてます]

802 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 13:35:20.91 ID:+XeHUCKJ.net]
どのように属人化するか・どの様に防ぐかの話題から、
属人化対策として禁止するか否かの話に

803 名前:デフォルトの名無しさん [2025/05/23(金) 15:19:50.38 ID:eOaMEV2I.net]
最後に 知らんけど ってつけた方がいいんじゃんね
知らんけど

804 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 15:21:21.07 ID:mEX1XvmT.net]
>>784
他の手段と比較してどうかはともかく、事実としてVBAが問題を起こすことが多いからあんたに仕事があるんだろ?
だったら属人化万歳くらいで流しときゃいいのに、いちいち突っ掛かってたら余計なストレスを作るだけだぞ
心配しなくても、あんたが顧客としているような会社は、全体最適云々を語るコンサルやシステム屋は相手にしない
まあSaaSについては結構小さいところもわりと積極的に営業するから敵になるかもね

805 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 15:53:12.83 ID:dHvUhuhP.net]
長くてわかりにくい
スパゲッティ文章はやめろ



806 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:24:52.89 ID:oLOrCYhj.net]
うん、途中からどうも話が噛みあわないな、とかは思っていた
ひと頃「ExcelのVBAは属人化しやすいから禁止する企業が増えてる」とかのたまう輩が徘徊してて
おま、それ、何もExcelに限らんだろ っつー意味で反抗してたし、そんなアホ論をこのスレで
平気で吹聴してる奴に向けて言葉のげんこつしてたんだけど どっか行っちゃったんか?
所詮、世間は、世の中は属人三昧だろ? それで右往左往世界が悪い方向に向かってる実例を
まざまざと目の当たりにしてる真っ最中だろ? で、それが悪かどうかなんか、もう少し様子を
見極めなきゃいけないまである
なんでわざわざこのスレをターゲットに、VBAは属人化!!!とか言い募らなきゃならん?
どこの回し者だ?、と

細かいこと言えば、じゃあってんでこれでもかっつー関数並べ立てて複雑怪奇な数式を組んだ
WorkSheetはどうなんだ? 属人化の極みだけどそれはいいのか? 見た目xlsxならおkなのか? と
至るスレで属人化!属人化!!属人化!!!と連呼してるならまだわかるが、なんでExcelスレ限定

で、こないだ別件で「Excel 売上管理」とかでネットをモゾモゾしてたら、そこら中の売上管理アプリの
宣伝サイトが、形ばかりのExcelのサンプル載せて「しかしExcelは属人化」っつー文言を決まり文句の
ように添えてたんだ ははぁ〜ん、とね、ある意味腑に落ちたし別の意味でがっかりしてたんだ
言い募る連中が自分の言葉でその悪弊を語れなくて「ネット見ろ」とか返すしか能が無かった理由が判明
そんなサイトだけじゃ無いのは承知してても、結局自分の意見として主張してンじゃなくて、受け売り
余所で聞きかじったのをなぞってるだけのレベルなんだな、と

しかし、少なくともこのスレに居続ける人間なら、ExcelのVBAで効率を図ることに意欲的であって欲しい
他のがいいよ、って奴はその宣伝だけして書き逃げしてて欲しい
まだまだExcel もっともっとVBA であり続けることが、このスレの健全化に貢献するはずなんだから

すぱげってぃwww 読み飛ばせばいいじゃんか 読んでくれなんて頼んで無いぞ?

807 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:44:22.04 ID:HIpPOdnz.net]
スレタイ

808 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 16:53:05.49 ID:fshmIkkH.net]
xlsmって唐突に未知のウイルスの疑いのあるファイル扱いになったりする事もあるから何も知らない人は扱うのが怖いかもね

809 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:18:49.63 ID:4lmOgu2G.net]
VBA職人が揶揄されるのも分かるわ。
ところで、仮にVBA職人、Ruby信者、Haskell信者、Rust信者で比べられたら、やっぱりVBA職人が圧倒的に格下扱いされちゃうのかな。ちょっと悲しみ。

810 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:28:32.52 ID:U7YdU8g0.net]
VBAがそれらと同列に比較されることはないから互いに眼中にないと思うよ
Excel VBAはピボットテーブルとか分析関数とかと同列の、Excelの上級スキルの一つに過ぎない
一般的なプログラミングとは別物
そのへんのエンジニアより、むしろBIツールがメインのデータアナリストなんかの方がVBA意識してるよ

811 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:34:04.21 ID:4lmOgu2G.net]
なるほど、そんなものかねぇ。

812 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 17:39:18.56 ID:+XeHUCKJ.net]
>>789
文意の分からん文章書いてて噛み合わないもクソもないだろ
伝える気ないなら書くな
読ませる気無いなら書くな
話を曲解して変な方向に話を誘導してるのはあんた自身だ

813 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 18:31:41.70 ID:5vSRBrjF.net]
言語にすぐ上だ下だ騒ぐ奴いるからな

814 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 18:59:01.81 ID:BlARSTzn.net]
言語じたいは下の下
反論する奴すらいない

815 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 19:12:24.88 ID:K4ioF38n.net]
構文として最低限どんなものがあって欲しいかっていうのは人によって違うからねぇ。いまは、JavascriptとかPython辺りが平均的なラインなのかな。まぁ、関数型言語等のユーザーから見ればJavaScriptとかPytnon辺りでも足りないものだらけということになるんだろうし、VBAでも慣れればそんなに不自由ではないよという人も大勢いるわけだしね。



816 名前:デフォルトの名無しさん [2025/05/23(金) 19:54:42.34 ID:ybuGJY2P.net]
C言語育ちのワイ、VBA始めた頃「えっ、ポインタってどうやって使うの?」って戸惑った思い出
自分の仕事が楽になる

817 名前:p途で使いまくってるからまぁ属人化しまくりだけど、
自分が退職した後(2年後)は知らんと思っている
[]
[ここ壊れてます]

818 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 20:17:02.36 ID:dHvUhuhP.net]
この辺がつらい

・tryがない
・for eachがバリアントのみ
・continueがない

819 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 21:01:05.99 ID:61koEGUg.net]
まぁ、なければないで何とかやっていけるもんだよ。
このスレではそう言っておくのが無難。

820 名前:デフォルトの名無しさん [2025/05/23(金) 21:05:52.61 ID:fxCKrz9G.net]
>>799
C言語にはfor eachがない、なぜならもっと原始的、シンプルな言語だからってCopilotに聞いたのですが本当なのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2025/05/23(金) 21:21:09.60 ID:eG6EJpyW.net]
>>802
ポインタに++すれば次の要素になるからむしろCのほうが融通が効く

822 名前:デフォルトの名無しさん [2025/05/23(金) 22:01:59.52 ID:ai481srR.net]
4行以上のレスは読む必要無いってマジだな

823 名前:デフォルトの名無しさん [2025/05/23(金) 22:09:05.20 ID:4KSUIwLz.net]
ぬるぽ

824 名前:デフォルトの名無しさん [2025/05/23(金) 23:17:20.35 ID:fxCKrz9G.net]
>>793
データアナリストならパワークエリーしてほしいな

825 名前:デフォルトの名無しさん [2025/05/24(土) 06:17:34.64 ID:OSW0csek.net]
属人化し易い言語と言うことは融通の利く言語と言うことでもある。
例えば、CやC++ではポインタが使えたけどC#では「それは危険だ」ということで使えなくなってしまった。
代わりにデリゲートを使ってセーフティーに参照しなさい、ってことなんだろうけど、まぁお仕事用の開発だったらそれでもいいのかもしれないけど、
昔PS-VITAってゲーム機があって、これがエクスペリアってスマホとクロスプラットフォームで開発できるように開発言語をC#にしてしまった。
ポインタは確かに参照先間違えると吹っ飛んだりメモリリーク起こしたりと危険なものではあったけど、扱いが面倒ではないし融通の利く機能だった。
それを潰してしまったことがPSPシリーズがVITAで終わってしまった原因ではないかと今でも思ってる。



826 名前:デフォルトの名無しさん [2025/05/24(土) 06:41:52.12 ID:OSW0csek.net]
>>798
JavaScriptをやったときには
前から.Net系の言語や、まぁVBAでもそうなんだけど、
何でクラスのインスタンスや文字列とかは変数に入れられるのにメソッドは入れられないんだろ?
って思ってた時期があって、
JavaScriptに当たったとき、
あ、出来る言語もあるんだってなって、あれVBAに欲しいなぁとは思った。
後はスクリプト系の言語はスカラー変数で型の指定がないから型の指定に慣れてると逆にそれが面倒だったかな。
VBAで言えば全部Variantで扱ってるようなもんだし。厳密には違うらしいけど。

827 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 10:35:16.26 ID:sJ/mZ3mU.net]
若いコにはやっぱPython辺りが人気とか?

828 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 13:44:59.73 ID:3VNn3d5Y.net]
スピル周りやLET,LAMBDAなどの関数が充実し
Excel=ビジュアルな関数型言語だと勝手に思っている

829 名前:デフォルトの名無しさん [2025/05/24(土) 14:39:09.90 ID:a4AdJqTs.net]
ビジュアルな関数型言語はemacs-lispだろ

830 名前:デフォルトの名無しさん [2025/05/24(土) 15:44:49.02 ID:0gUvgwlc.net]
表検索するのにSQL使ってたけど、FILTER覚えたら単純な検索ならこれでいいかー、ってなった

831 名前:デフォルトの名無しさん [2025/05/24(土) 20:17:19.55 ID:c7V+L981.net]
このスレはバカの話はなぜ長いのか考えるスレになりました

832 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 20:41:36.84 ID:6QA0+Pxw.net]
頭の良い人は難しいことを簡単に説明出来る
馬鹿は簡単なことを長々と判り難くする

833 名前:デフォルトの名無しさん [2025/05/24(土) 20:44:24.68 ID:OSW0csek.net]
>>813
正直すまんかった
久しぶりにVBAスレ来たからつい・・・
でもVBAはいい言語だと思うよ

834 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 21:07:47.86 ID:cYe6QRvj.net]
VBAは言語なのだろうか
VBは言語だけども

835 名前:デフォルトの名無しさん [2025/05/24(土) 21:42:51.33 ID:ZMjSY/PV.net]
A1セルはこのフォルダのパスを記入する
A2セルはこのフォルダのパスを記入する

流石にこれは通じる、、、よね?



836 名前:デフォルトの名無しさん [2025/05/24(土) 21:44:12.53 ID:ZMjSY/PV.net]
>>816
チューリング完全がプログラム言語の定義なのでしょう?
だったらVBAはプログラミング言語なのでは

837 名前:デフォルトの名無しさん mailto:sage [2025/05/24(土) 22:37:10.39 ID:iK5rs3WU.net]
A1 Write this folder pass.

838 名前:デフォルトの名無しさん [2025/05/25(日) 12:18:28.20 ID:IvH5YvLQ.net]
dictionaryやFileSystemObjectのfunction関数を使っているけど、dictionaryに登録する処理や取得したファイル名やファイルパスに対する操作は事なる

こう言う場合、どうすれば個別の条件にも対応できるfunction関数が作れますか?

839 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:36:22.85 ID:ubpRgCst.net]
異なる操作をひとつの関数で行いたいという質問ですね!
まずはどういう操作を行っているのか教えてください!

840 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:45:27.58 ID:czPn1bap.net]
dictionaryは死ぬ予定だから使うのやめなよ

841 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 12:53:50.40 ID:ubpRgCst.net]
>>822
そうですね!
Excelなのだからデータはワークシートに格納するのがスジですね!

842 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 13:20:14.05 ID:fZ8kzLje.net]
AIみたいな解答ワラタ

843 名前:デフォルトの名無しさん [2025/05/25(日) 16:48:27.92 ID:zOE9ehCa.net]
ホントにAIに聞いた。
個別の条件にも柔軟に対応できる function を作るには、いくつかのアプローチが考えられます。例えば、以下のような方法を試してみてはいかがでしょうか。
1. パラメータを活用する
2. Enum または定数を使う
3. コールバック関数を使う

844 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 17:36:59.25 ID:QBoxveBd.net]
何をしたいのかが謎
型によって処理を分岐させたいってことかね

Function 関数(処理対象)
 型名 = TypeName(処理対象)
 Select Case 型名
  Case "Dictionary"

  Case "File"

  Case "Folder"

 End Select
End Function

845 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 18:31:50.10 ID:czPn1bap.net]
>>823
そういう話じゃなくVBS廃止の副作用で連想配列や正規表現が死ぬって話



846 名前:デフォルトの名無しさん [2025/05/25(日) 18:42:26.13 ID:rOBfPREU.net]
>>827
VBS廃止の副作用で死ぬのは噂や推測じゃなくて公式の情報なの?

847 名前:デフォルトの名無しさん [2025/05/25(日) 19:07:30.81 ID:IvH5YvLQ.net]
ファイルシステムオブジェクトでフォルダの中のファイル名一覧と、ファイルパスを取得したい時もあれば、
ファイル名に部分一致するファイルのパスを取得したい時もある

848 名前:デフォルトの名無しさん [2025/05/25(日) 19:13:49.79 ID:5C/Jye7Q.net]
従来の正規表現の代用って無いの

849 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 19:54:07.08 ID:czPn1bap.net]
>>828
逆にあれだけ情報出ててなんで死なないと思うの?
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301

>>830
vba-regex by sihlfallっていう、
RegExp代替のフルVBAで書かれた正規表現エンジンがある

850 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 19:58:13.45 ID:bo3VS07C.net]
>>829
はい!
if文で条件分岐すれば、簡単に実現できます!

851 名前:デフォルトの名無しさん [2025/05/25(日) 20:04:43.89 ID:IvH5YvLQ.net]
私はVBAの正規表現が死んだら、パワークエリーでJavaScriptの正規表現を使うわ


set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
Wordのドキュメントやアプリ

852 名前:ケーションを処理する時にエラーが出たのでそう思いました。 []
[ここ壊れてます]

853 名前:デフォルトの名無しさん mailto:sage [2025/05/25(日) 22:03:34.39 ID:QBoxveBd.net]
正規表現はREGEX関数が実装されたのでVBAでやる必要なし

854 名前:デフォルトの名無しさん [2025/05/25(日) 22:32:05.60 ID:d/seLvao.net]
>>822
知ったか乙
良く調べて書き直せ

855 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 02:34:52.38 ID:J879X3+V.net]
>>835
Microsoft Scripting Runtimeに依存してるからVBSと共に死ぬ
FSOなんかはScripting Runtimeには依存してないから引き続き使える
間違ってるなら指摘して
認識改めるから



856 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 09:38:22.00 ID:G1Vrdcz4.net]
>>820 が聞きたいのは
https://www.limecode.jp/entry/syntax/bind-set-filesystemobject
この辺の処理の仕方なんでは? 最後まで精読すれば、どういう書き方をすれば
より都合が良くなるか、それなり理解が深まるような

857 名前:デフォルトの名無しさん [2025/05/26(月) 09:53:10.39 ID:wHcYCN0P.net]
>>833
>set オブジェクト = nothing
それ書かないで過去に何度か問題起きてたような
ファイルopenして、close書かなくても勝手に閉じてくれるとしても、書いたほうがいいようなもん
たった1行各程度で未然にトラブル防げるなら書いとけと
(かと言って、親オブジェクトから連なる小オブジェクトはいちいちnothingせずに、親オブジェクトだけ書いちゃうことも多いけどな。小さい処理だと特に)

858 名前:デフォルトの名無しさん [2025/05/26(月) 12:08:21.83 ID:chNfFSjB.net]
>>836
間違えている
どのDLLに何が入っているかだ

859 名前:デフォルトの名無しさん [2025/05/26(月) 13:55:33.90 ID:cvwCoF8H.net]
>set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?

した方が良いじゃなくてするべき

860 名前:デフォルトの名無しさん [2025/05/26(月) 17:21:30.90 ID:c1JRhLC0.net]
コピペ荒らしこのスレだけ来ないの面白いな

861 名前:デフォルトの名無しさん [2025/05/26(月) 18:35:02.01 ID:FaOK97dk.net]
>>837
すみません
今の私は例えばファイルシステムで言えば、
フォルダの中の全てのフォルダ名とフォルダパスを取得
フォルダの中の全てのファイル名とファイルパスを取得
フォルダの中に指定のファイル名と異なるファイルがあれば削除
と言う様に、
それぞれのサブプロシージャを作成する事しかできていません
なので、一つのサブプロシージャに条件に応じて複数の処理が行えないかなと思いました
原作論で言えば、一つの処理しかできないサブプロシージャこそ正しいのかもしれませんが
あと、それぞれのプロシージャでファイルシステムオブジェクトを宣言とセットをしてしまっています

nothingは今までプロシージャを抜けた時点で解放されるから特にする必要がないと思っていましたが、Wordを操作する様になって、nothingをしないと処理が止まってしまうので意識する様になりました

862 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 19:11:18.49 ID:mCaBFscc.net]
Sub Yaritai(i as integer)
if (i and 1) <> 0 then
Call Sub1()
elseif (i and 2) <> 0 then
Call Sub2()
End Sub

863 名前:デフォルトの名無しさん [2025/05/26(月) 20:30:26.44 ID:sP5+kUYx.net]
>>842
ご自分で言ってる通り、ひとつのモジュール、関数、メソッド等にはひとつの役割を与えて作るのがセオリーです。ちなみにそれを単一責任原則と言います。
ひとつのプロシージャ内で出来るかと言えば、再起処理やStaticな変数を上手く使えば恐らく出来ないことは無いでしょうが、そうするメリットをあまり感じません。
ひとつのプロシージャで処理するのではなく、ひとつのクラスとしてその辺の処理を行うことを検討しては如何でしょうか?
そうすればメンバ変数として宣言したもののインスタンスをコンストラクタで生成することも出来ますし、デストラクタで解放することも出来ますよ

864 名前:デフォルトの名無しさん [2025/05/26(月) 20:36:57.49 ID:sP5+kUYx.net]
×再起処理
◯再帰処理
誤変換すまんこ

865 名前:デフォルトの名無しさん [2025/05/26(月) 21:18:23.47 ID:FaOK97dk.net]
>>844
クラスモジュールを一通りやった事がありますが、いまいちクラスモジュールの使い方を知りません
どうすればそれぞれの機能をクラスモジュールで効率的に実装できるでしょうか?



866 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 22:59:03.14 ID:Eh03XDLb.net]
セルから機種依存文字を直接拾ってくるのは難しいですか?

例えば☐(unicode:2610)が入ってるセルをクリックすると☑(unicode:2611)に書き換える、みたいなのを実装する場合、
if(Range("A1").text="☐")then
だとRange("A1").textでセルの文字は取得できませんよね?
(もちろん「="☐"」で直接比較することもできませんが)

どうにかしてセルの機種依存文字を拾ってきてその種類を判定することは可能でしょうか?

867 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 23:15:54.66 ID:MWZ/4kNq.net]
>>847
Hex(WorksheetFunction.Unicode(Range("A1")))

868 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 15:49:48.18 ID:j5Gfr/Ar.net]
>>847
>Range("A1").textでセルの文字は取得できませんよね?
取得はできる。VBEで使えない文字だからソースに直接その文字を書けないだけ

Dim CHECK_ON As String: CHECK_ON = ChrW(&H2610)
Dim CHECK_OFF As String: CHECK_OFF = ChrW(&H2611)

If Range("A1").Value = CHECK_ON Then
Range("A1").Value = CHECK_OFF
Else
Range("A1").Value = CHECK_ON
End If

869 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 17:59:07.28 ID:2OPk25Mu.net]
>>848
解決しました。
ありがとうございます。

870 名前:デフォルトの名無しさん [2025/05/27(火) 20:17:39.42 ID:3QS90eHP.net]
Excelの話ではないからスレ違いなんですが、 Wordのドキュメントの2ページ目の行に文字列を挿入するにはどうしたらいいでしょうか?
2ページ目の〜行目にと言う様な指定はできないのでしょうか?

871 名前:デフォルトの名無しさん [2025/05/27(火) 20:38:35.17 ID:0hlUsnMF.net]
>>851
スレチとわかっていて厚かましい
死ね

872 名前:デフォルトの名無しさん [2025/05/27(火) 20:52:46.35 ID:OuONf5SF.net]
>>852
この馬鹿モンが!

>>851
いい質問ですね
ExcelのほうがメジャーでWordはマイナーなのだけど
WordのVBAをはじめた人にとっては初期段階でやりたい操作なのではないでしょうか?

簡単ではないですが解決策はあります
たしかinformationみたいな名のプロパティを使ったような気がする
(もうWordVBAは数年使ってないから忘れた)
ChatGPT使えば教えてくれるかも

873 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 20:54:35.84 ID:DtCiAPP8.net]
>>853
死ね

874 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 22:13:59.20 ID:JUnNHiQe.net]
>>851
ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range = "文字列" & ActiveWindow.ActivePane.Pages(2).Rectangles(1).Range

875 名前:デフォルトの名無しさん [2025/05/28(水) 00:45:03.58 ID:7WzKj5D7.net]
フォームを作るのに標準のコントロールやAPIでは動かないことがあったから、ついにPowershellで作り始めちゃった



876 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 01:00:15.46 ID:+7HocyMO.net]
PowerShellは
System.Collections.Genericが使えるからかなり楽だよなぁ
VBAと違ってフォームデザイナが標準で付いてないのが難だが

877 名前:デフォルトの名無しさん [2025/05/28(水) 07:40:29.71 ID:LbsE8EcH.net]
VSの方が楽なんでは
PS使ったことないけど

878 名前:デフォルトの名無しさん [2025/05/28(水) 08:42:06.86 ID:WNN+73zR.net]
PowerShellはbatと違って、一手間や権限設定が必要と聞いたからやめた震え声
本当にそうなのですか?

879 名前:デフォルトの名無しさん [2025/05/28(水) 08:58:57.33 ID:DZlhdmsz.net]
震え声で言ってるの?

880 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 09:02:42.36 ID:3/66YXCT.net]
スレタイを音読してみよう

881 名前:デフォルトの名無しさん [2025/05/28(水) 09:56:27.88 ID:0RI44N1Y.net]
エグザイル ビバ しつもんしる

882 名前:デフォルトの名無しさん [2025/05/28(水) 20:05:51.40 ID:WNN+73zR.net]
VBAでファイルやフォルダのパスはいつも一覧表で利用しているのですが、当然属人化するリスクがあるので、もっと柔軟にパスを設定できる方法を探しています。
今考えているのは、ファイルやフォルダが見つからなかった時にダイアログを開いてフォルダやファイルを選択させ、選択したファイルやフォルダのパスをセルに記入する、と言う方法なのですが、もっと簡単で確実で柔軟な方法はないでしょうか?

883 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 20:44:52.08 ID:Z5h4paoG.net]
自分は設定シートを用意して、そこに記述してあるものを参照してる

884 名前:デフォルトの名無しさん mailto:sage [2025/05/28(水) 20:50:09.42 ID:bd87TuSw.net]
ログインユーザーのマイドキュメントをルートにして開く
具体的には「HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal」
のパス

885 名前:デフォルトの名無しさん [2025/05/28(水) 21:40:10.79 ID:WNN+73zR.net]
>>864
その設定用シートに
例えばフォルダやファイルを複数選択した状況で右クリックのパスをコピーでシートに貼り付ける
という事さえも出来ない、わからない人も想定しないといけない訳で、、、



886 名前:デフォルトの名無しさん [2025/05/28(水) 21:58:53.67 ID://Fv0twK.net]
>>863
エクスプローラーからファイルをドラッグドロップ

887 名前:デフォルトの名無しさん [2025/05/28(水) 22:16:15.52 ID:WNN+73zR.net]
>>867
知らなかったです
これができるなら本当に希望が見えてきました

888 名前:デフォルトの名無しさん [2025/05/28(水) 22:18:57.59 ID:QfAx2JsO.net]
馬鹿ばっか

889 名前:デフォルトの名無しさん [2025/05/28(水) 23:46:46.18 ID://Fv0twK.net]
>>868
https://excel.syogyoumujou.com/memorandum/d_and_d_1.html
このやり方が簡単そう

890 名前:デフォルトの名無しさん [2025/05/29(木) 07:11:07.31 ID:cC95Jm/J.net]
>>870
よくよく考えれば当たり前なんだけど、ドラッグ&ドロップで追加する機能もあるんだ
これは便利だ

891 名前:デフォルトの名無しさん [2025/05/29(木) 17:25:49.51 ID:fp+yAGdo.net]
FileSystemObject の TextStream が使えないなら ADODB の Stream を使えばいいじゃない
と思ったら挙動が違ってびっくり

892 名前:デフォルトの名無しさん [2025/06/01(日) 20:16:56.40 ID:wTah86rB.net]
初歩的な質問で申し訳ないですが、マクロ実行中にエラーなどでデバック画面、エディタ画面に移動せずに、エラーハンドリングなどを実行してプロシージャを終了するにはどうしたらいいですか?

893 名前:デフォルトの名無しさん mailto:sage [2025/06/01(日) 21:54:45.65 ID:fzXRF4Kq.net]
>>873
On Error Resume Next

894 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 00:34:11.70 ID:14Td775l.net]
[ツール] [オプション] [全般]
エラーでトラップ
●エラー処理対象外のエラーで中断

ということではなくて?

895 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 00:35:28.23 ID:14Td775l.net]
×エラーでトラップ
◯エラートラップ



896 名前:デフォルトの名無しさん [2025/06/02(月) 07:36:05.35 ID:hx4qvUMZ.net]
>>614
on error goto ラベル名
vba エラーハンドリング で検索して例を見た方が早いよ

897 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 08:46:36.26 ID:IeMpK/LE.net]
>>614
そんなひとつのモジュールに詰め込んだら管理しにくいでしょ。
モジュールは分ける。

898 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 09:24:06.39 ID:3Ov4fjqk.net]
>>878
何を基準にかを書かかないと役立たずじゃない?

899 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 15:03:33.91 ID:DSKTrfoz.net]
馬鹿はそんなことも判らないのか

900 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 15:07:32.82 ID:OjGRkHiP.net]
>>880
スレタイ読めない馬鹿w

901 名前:デフォルトの名無しさん [2025/06/02(月) 19:50:00.14 ID:K2UVQp3e.net]
>>614
ひとつのモジュールにはひとつの役割を
ひとつのプロシージャにもひとつの役割を
与えて書けばいいんじゃない?
もちろん、モジュールとプロシージャでは
与える役割が全然変わってくるけど

例えばモジュールに車という役割を与えたら
プロシージャには走る役割を与えたり

後はセンス

902 名前:デフォルトの名無しさん [2025/06/02(月) 20:06:38.96 ID:Xhmb9taU.net]
ありがとうございます
やはり on error goto ラベル名 なのですね

903 名前:デフォルトの名無しさん [2025/06/02(月) 20:25:45.14 ID:gI3jZeU7.net]
on error resume next
ヤバそうな処理
if err.number<>0 then
エラーリカバリー
end if
on error goto0

904 名前:デフォルトの名無しさん [2025/06/02(月) 20:45:44.86 ID:Xhmb9taU.net]
>>884
エラーが発生している、あるいはしそうな処理がある、というよりは、マクロ実行中にどんなバグでも発生したら、発生した時点で終了させる必要があります

905 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 21:35:59.74 ID:nQl9pEtd.net]
終了前に
err.number = エラー番号
をセットしてジャンプさせるハンドラがいる
こわー



906 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 22:06:18.54 ID:ZCDsMgZ+.net]
Sub Div0()
On Error GoTo Err
MsgBox 1 / 1
MsgBox 1 / 0
MsgBox 1 / -1
Err:
MsgBox "ゼロで割るな、クソが"
End
End Sub

907 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 22:26:41.07 ID:ncJUEcFA.net]
Err: の前で Exit Sub しないと

908 名前:デフォルトの名無しさん [2025/06/03(火) 07:35:55.27 ID:o/OLh2ct.net]
異常が起きる前にファイル開いてた場合、closeしないで終了してしまうとかある

909 名前:デフォルトの名無しさん [2025/06/03(火) 07:39:00.03 ID:/ZJ1mBw3.net]
VBAのツール作りは時間がかかるのが当たり前でしょうか?
作り方は分かっているし、作るツールもたいしたものではないのに、それでも1日2日では終わらないです

910 名前:デフォルトの名無しさん [2025/06/03(火) 10:48:59.43 ID:Kk3A2bVT.net]
ものによる、人による、まともにテストしてるかにもよる

911 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 10:57:06.67 ID:Q0vXXWY4.net]
どうせ著作権侵害や不正アクセスツールだろ

912 名前:デフォルトの名無しさん [2025/06/03(火) 19:25:30.47 ID:gpacmpqZ.net]
>>890
まぁそうだね
だから綺麗に部品化しておくことが大事なんだよ
それを後で使い回せるようにね

913 名前:デフォルトの名無しさん [2025/06/03(火) 20:26:44.49 ID:/ZJ1mBw3.net]
自分が勤めている会社で理解者や協力者を増やそうと、少しでもVBAに興味を示した人や、VBAを齧っている人を相手に勉強会を開催しても、結局VBAがわかる人は少ない
という話を聞きますが、やっぱりVBAといえど、難しいのでしょうか?
Power Queryでもそういう話を聞きます

914 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:02:42.93 ID:cgHky4oh.net]
VBAが難しくないんだったらさっさとVBA卒業して本職のITエンジニアになった方が稼げるからねえ
向上心がありすぎてもいけない、中途半端なツールなので

915 名前:デフォルトの名無しさん [2025/06/03(火) 21:09:44.47 ID:Kk3A2bVT.net]
チンタラ残業代稼いでる人にとって効率化は最大の敵
VBAにしろRPAにしろ最大の抵抗勢力よ



916 名前:デフォルトの名無しさん [2025/06/03(火) 22:04:21.82 ID:gr7bEf2i.net]
>>872 で愚痴って終わりなのもアレだから一応書いとく

・事象
 FileSystemObject.TextStream.ReadLine と ADODB.Stream.ReadText(adReadLine) が同じ結果にならない

・原因
 改行コードが CRLF と LF が混じったお行儀のよろしくないファイルだった

・対処
 LineSeparator = adLF として Replace(ReadText(adReadLine), vbCr, "")
 とやったらOKだった

917 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 23:26:25.06 ID:aKU11sxP.net]
>>897
Microsoftのマニュアルよりも詳しい説明
ADODB.Stream: https://atsumitm.iobb.net/its/its-050.php
TextStream:  https://atsumitm.iobb.net/its/its-051.php

918 名前:デフォルトの名無しさん [2025/06/03(火) 23:46:58.61 ID:gpacmpqZ.net]
>>894
VBAは比較的間口が広くてとっつき易い言語ではあるとは思うよ
ただ、何の言語でもそうだけど教える人がいると受動的になりがちで聞いてりゃ分かるようになると思ってしまうのはマズい
聞いてりゃ分かるようになる言語なんて存在しない
分かる人が少ないのは結局、VBAを本当に必要であることを迫られる立場に無いからだと思う
VBA出来なきゃ今いる会社をクビになるくらいに迫られたら大概の人は理解する
でも教えてくれる人がいるということは恵まれたことだと思うよ
このスレにいる大多数の人は恐らく独学で仕事場で使えるようにならざるを得なかった立場なんじゃないかな

919 名前:デフォルトの名無しさん [2025/06/03(火) 23:58:42.71 ID:/ZJ1mBw3.net]
>>899
私も完全独学で覚えました
というプログラミングは独学で学んでいる人ばかりではないのですか?
プログラミングスクールは役に立たないし、かと言って会社は教えてくれない

920 名前:897 [2025/06/04(水) 00:06:22.21 ID:/Ak3M73b.net]
>>898
このサイトぐぐるとよく見かけるようになったけど、詳しすぎて理解できないw

921 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 00:40:57.38 ID:b8XC2mTd.net]
自学できない人はダメだよね

922 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 05:30:19.54 ID:3c6clsCg.net]
独学って、大半の人は言語に固有の文法と、開発環境に依存する実行方法を覚えただけでしょ
だからデータ型の違いとか文字コードとかアルゴリズムとかファイルシステムとか、基本がわかってないから別の言語に手を出せない

923 名前:デフォルトの名無しさん [2025/06/04(水) 06:02:44.09 ID:/hC9EQXc.net]
ここ見てりゃわかるけど、コピペで動いて偉くなったつもりの馬鹿ばっかだから

924 名前:デフォルトの名無しさん [2025/06/04(水) 07:11:35.77 ID:jKpT1SFo.net]
>>903
そうね
それはその通りだと思うわ
だから>>894の言ってる教えている人が
そもそものVBAの基本的な型やら
分岐や演算とかよく使うObjectの扱いとかを
最初に教えていることを切に願うわ

925 名前:デフォルトの名無しさん [2025/06/04(水) 07:34:51.95 ID:BFbm2+Cn.net]
>>900
覚えるのは自分、教わったのに覚えてないようでは学べてない
あと文法は覚えてもアルゴリズムは考えるもの
教わってないからできないって言ってるのは初心者以下な



926 名前:デフォルトの名無しさん [2025/06/04(水) 07:44:26.54 ID:f2CAL3f8.net]
やる必要性がないからやらないけど、Pythonが簡単というならPythonだってわかる気がするし、C言語がFor eachもない様な単純な言語だというならそれはそれでできそうな気もする(Copilotがあるから尚更)。
ローコードにしろスクラッチにしろそれは同じ。

既製品のソフトウェアを導入するか、VBAで作成するかならどちらが安いと思いますか?
もしVBAの方が安いなら世の中マクロだらけだと思うのです。

927 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 08:21:45.39 ID:B6zQeN2g.net]
誰も責任を負いたくない、率先して矢面に立ちたくない方々だらけだから

928 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 08:50:54.30 ID:yTwvetl9.net]
>>907
マクロだらけだよ
それらを管理する人(作成者)が抜けていくから管理不能になる
そういった事象を解決する銀の弾丸としてRPAやノーコードツールが喧伝されたけど、
管理する人がいないって意味では同じなので同じことが繰り返されてる

929 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 10:16:27.04 ID:pOYKhOcI.net]
>改行コードが CRLF と LF が混じったお行儀のよろしくないファイル

CSVなら普通にあるな
行儀の問題じゃない

930 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 10:36:26.59 ID:yTwvetl9.net]
行儀だよ
少なくともRFC上においては行末がCRLFであると規定されてる
ファイルの最後のみがどうでもよい

931 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 11:22:31.03 ID:ZuFYF6Nx.net]
>>907
どっちが安いって、保守コストまで考えて言ってる?
そりゃ作りっぱなしならVBAのが安上がりだけど、それじゃ後で困るって話をしてるんでしょ

932 名前:デフォルトの名無しさん [2025/06/04(水) 12:21:29.23 ID:pOYKhOcI.net]
LFは行末じゃないよ

933 名前:デフォルトの名無しさん [2025/06/04(水) 14:36:42.79 ID:p0LJP29f.net]
CSVの行改行と項目内改行が使い分けられてないわけが無い
使い分けられてなければ復元不可能になる

934 名前:デフォルトの名無しさん [2025/06/04(水) 14:39:56.22 ID:p0LJP29f.net]
>>914
"あれば可能だが無いの見たことあるのよね…

935 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 16:28:29.01 ID:3c6clsCg.net]
標準の改行コードはOSによって違う
CR、LF、CR+LF、LF+CR、すべてのパターンが実在する
フィールドに改行やコンマを含めたい場合、レコードの区切りと違うコードを割り当てる場合もあれば、クォートなどの記号でフィールドの範囲を明示する場合もある
Windows版Excelはダブルクォートでフィールドの範囲を指定するのが基本



936 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 16:30:20.58 ID:3c6clsCg.net]
>>915
それは固定長かセパレータ(コンマ)の数をカウントしてるかどっちかかな

937 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 18:23:31.04 ID:RQn0r/Lq.net]
>>916
CR MacOS(UNIX化前)
LF UNIX、MacOS(UNIX化後)
CR+LF Windows、DOS
LF+CR ← なんてOS?

938 名前:デフォルトの名無しさん [2025/06/04(水) 18:39:20.47 ID:f2CAL3f8.net]
>>909
RPAにしろ、ノーコードにしろ、なんにしろ、そうなりますよね。
結局社内でどれだけ学習意欲のある人を揃えるかによりそう。

939 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 19:22:49.50 ID:7S8kDVf/.net]
>>913
由来のタイプライターを鑑みたらLFは本来行頭に来るべきものだけど、
現実的には行末

940 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 19:55:51.24 ID:frrYvMiA.net]
頑張ってVBA勉強したところでプログラミングスキルとしては流石に時代遅れ&最底辺だし、
事務員としてスキルアップしたいならツールに入れ込むより業務知識を強化した方がいいし、
組織の中で出世したいなら自分でVBA書くより他人に書かせて継続的にスケールする仕組みを作るべき
そして、めでたく業務効率化できたとして、いず」行き着く先は「脱Excelで属人化解消&業務効率化」でVBA職人は悪者扱いだ
本当にVBAを広めたいのなら、個人の意欲に頼るのではなく、組織として適切なインセンティブを設けることだな

941 名前:デフォルトの名無しさん [2025/06/04(水) 20:02:53.71 ID:f2CAL3f8.net]
>>921
結局、経営者次第だよね
まるでITや業務効率化に興味がないなら何もできない
社員の進言に耳を傾けないなら騙されもするし、せ

942 名前:っかく導入したツールは社員にとって非常に使いづらい []
[ここ壊れてます]

943 名前:デフォルトの名無しさん [2025/06/05(木) 00:29:50.41 ID:Nu77Yg2O.net]
>>921
そっか
あなたはこのスレ卒業だね

944 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:17:29.72 ID:FSpPjL7A.net]
四行目までは自虐だろ? 言いたいのは五行目だけって意味と捉えたが、どうなんだ
まあ、ちょっと過剰に反応し過ぎなきらいは否めないが

945 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:45:28.01 ID:Lp1WVm/I.net]
>>921
組織の中で継続してスケールする仕組み作ったなら属人化してないんだから悪者になる理由なくない?



946 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 09:07:39.20 ID:FSpPjL7A.net]
お利口さんに成ろうとしてアタマでっかちに成り過ぎ
大工だっていろんなレベルもあるし色んな層が大工してる
その場しのぎのやっつけ大工も居れば、客の要望を叶えるために青写真から描ける熟練大工もいる
新人大工なら木の特性とか部材同士の相性とかもよく理解しないまま最新部材使って威張ってみたり
ガルバリウムには使ってはいけない釘平気で使って1〜2年後にはその部分からサビを拡げる原因作って顰蹙買うし
それでも世の中は回ってる
改善なんか数年で変化してくものだ、という前提を踏まえてれば、それに見合うコストで運用出来てれば御の字

947 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:31:37.20 ID:1teg7ITB.net]
>>925
コンサルはいわゆるExcelバケツリレーの非効率さを指摘してくるのが常道
VBAで個々人の作業が省力化されてようとフローは変わらないので、実際非合理だから仕方ない
その上で現行業務の調査として関係者全員にヒアリングして介在するワークシートやマクロをつぶさに調査するのにかかる莫大な費用の見積りを提示されると、
もう経営層からはVBA職人なんて非効率な業務を助長するだけの排除すべき敵としか見えなくなるわけよ

948 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:49:41.34 ID:1teg7ITB.net]
あと、業務を見直してシステム化しようとした際にVBAが悪者になる大きな原因として、
一見簡単な処理に見えて蓋を開けたらたまに複雑怪奇な難攻不落の化け物が出てくる、ってのがある
これ、Excel中心のワークフローをシステム化する際にはよくある話で、スケジュール遅延や予算超過を引き起こすことが多い
そうなるとシステム部門や現場が経営層に頭下げるのは当然として、上場企業だと株主に経営層が謝罪なんてケースもある
ここまでくるともうVBAなんて悪者もいいとこよ

949 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 10:55:09.32 ID:Lp1WVm/I.net]
それらは継続してスケールする仕組みを作れていない場合の話じゃないの?
複雑怪奇な難攻不落の化け物って、それスケールできる仕組み作れてなくない?
そもそもの話が噛み合ってないよ

950 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 11:09:55.37 ID:1teg7ITB.net]
>>929
隅々まで適切にガバナンスを効かせながら使うならいいんじゃない?
それができるほどの優秀なリーダーがVBAを選ぶかは疑問だけどな
どんな組織でも、人が増えれば馬鹿も増えるし目も行き届かなくなるものだ

951 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 11:27:50.93 ID:Z5osrhWk.net]
Excelバケツリレーは業務や人員を追加していく分にはスケールするよ
後から変更するのが困難でありシステム化が前提なら極めて非合理だけ

952 名前:デフォルトの名無しさん [2025/06/05(木) 17:48:57.22 ID:lb5raFks.net]
>>928
IR出すレベルのVBAは確実に一見簡単そうな処理では無いと思います。
そこまでの規模のシステムなら、それこそ何かしらの製品やサービスを導入してください。

953 名前:デフォルトの名無しさん [2025/06/05(木) 17:54:18.01 ID:lb5raFks.net]
ローコードツールや多言語の方がいいのはその通りだと思います
VBAはOfficeしか扱えないのだから

954 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 18:20:52.21 ID:uYkJABQ4.net]
> VBAはOfficeしか扱えないのだから
AutoCAD、SOLIDWORKS、・・・

955 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 18:33:57.70 ID:Lp1WVm/I.net]
>>933
そうなんだ?知らなかった



956 名前:デフォルトの名無しさん [2025/06/05(木) 20:15:40.58 ID:r0Qxvap7.net]
そもそもパッケージやクラウドサービス使えば、中身は全くわからない
手の出しようがない
自前なら何とかなる
そこをどう捉えるかよ
そもそも基幹システムをVBAで作らないし
(小企業は知らんが)
作っても枝葉よ

957 名前:デフォルトの名無しさん [2025/06/05(木) 20:29:53.99 ID:lb5raFks.net]
>>936
C、CSVで吐き出せればなんとか(震え声)

TYPEを全く使ってこなかったのです。
しかし、この度同じモジュールで多数のstring型の変数を宣言する必要があります。
TYPEデビューしようと思うのですがどうでしょうか?

958 名前:デフォルトの名無しさん [2025/06/05(木) 23:29:45.76 ID:fxlZJI+h.net]
ここで聞かなきゃいけないような馬鹿はやめとけ

959 名前:デフォルトの名無しさん [2025/06/05(木) 23:53:54.23 ID:r0Qxvap7.net]
>>937
type稀にしか使わないので調べたら
CollectionやDictionaryに格納できないと
マジか、知らなかったわ
これに使うならクラスにしたらいいかもね

960 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 23:57:55.29 ID:0HOZWCXV.net]
>>920
リアルタイプライターではLFの位置は任意だよ
行頭とか行末とか関係なく、行の途中でも好きな所でline feedは可能

961 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 01:00:59.18 ID:gfk/0ela.net]
>>940
CRLFはCRが来る時点でLFが行末じゃなくなるって話

962 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 08:39:00.12 ID:cx/TERMm.net]
Enterキーの矢印ってLF-CRだよね
  ↓

CR-LFならこういう向きじゃないとおかしい
  ←


963 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 09:32:23.47 ID:rGtsPzUl.net]
VBAでクラスモジュールを使っていろいろやるのもなしとは言わないけれど、それなら正直JavaとかPythonとかの普通の言語を勉強した方が良いような気もするかな。クラスモジュールって、よくある普通の言語とはちょっと違ったVBA固有の仕様に過ぎないし。

964 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 09:44:39.10 ID:4a1tHPn5.net]
>>943
JavaScript様のプロトタイプに喧嘩売る気か

965 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 10:07:22.76 ID:NfW6LToZ.net]
クラスモジュールはVBA固有というかCOMの仕様
COMの絡まない処理で無理に使う必要は全く無いし、COMを理解してないと不可解な仕様が多い



966 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 10:45:07.80 ID:c6RrnkVo.net]
他言語でクラス使ってたらクラスモジュール作りたくなる病

967 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 11:16:07.96 ID:FmZludjM.net]
COMってどう勉強するんだろ
漠として簡潔な説明がなかなかなく
IUnknownやらなんやら、

968 名前:デフォルトの名無しさん [2025/06/06(金) 11:35:48.78 ID:3VaYoART.net]
InsideCOMを辛抱強く読むのが唯一の道
それ以上の資料もかみくだいた解説書もない

969 名前:デフォルトの名無しさん [2025/06/06(金) 18:33:04.93 ID:lAxJJHmL.net]
っ https://learn.microsoft.com/ja-jp/cpp/mfc/ole-in-mfc?view=msvc-170
https://learn.microsoft.com/ja-jp/windows/win32/learnwin32/module-2--using-com-in-your-windows-program

970 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 18:52:09.71 ID:4a1tHPn5.net]
COMの解説
https://learn.microsoft.com/ja-jp/windows/win32/com/component-object-model--com--portal

971 名前:デフォルトの名無しさん [2025/06/06(金) 19:13:06.68 ID:fJneNGsq.net]
>>939
TYPEは他のオブジェクトに引き渡せないとは聞いていました

結局ディクショナリーで登録しました

972 名前:デフォルトの名無しさん [2025/06/06(金) 20:17:15.03 ID:tc8PGxli.net]
>>951
ディクショナリだとインテリ使えんけど、まあそれでいいなら

973 名前:デフォルトの名無しさん mailto:sage [2025/06/06(金) 20:34:48.52 ID:2QLQ97JJ.net]
たまにいる勘違い人間 「自分、CやJavaできるから低レベルのVBA(笑)なんてすぐマスターできるし」とか豪語するヤツ

974 名前:デフォルトの名無しさん [2025/06/06(金) 21:03:29.16 ID:fJneNGsq.net]
私はファイルパスやフォルダパスの取得や設定、ファイル名やフォルダ名の作成に冗長なコードを書いている気がしてならないのですが、何かいいコードはないでしょうか?

975 名前:897 [2025/06/06(金) 21:52:26.62 ID:CfJ/EVmD.net]
Typeの代わりにRecordSet使ったりする Field設定いちいちするの面倒だけど
Filterとか使えるしCopyFromRecorSetとかできるし



976 名前:デフォルトの名無しさん [2025/06/07(土) 01:20:40.40 ID:hTJ86lb5.net]
>>954
昔はdirやnameだったけど、今はfso使ってればいいんじゃね

977 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 04:19:49.26 ID:GCIZhVy1.net]
>>954
その程度の処理なら、冗長で困ることなんかほとんどないよ
自分に理解できる形で書くのが、長い目で見れば一番保守性が高いんだから
ちゃんと

978 名前:動いてる物を直そうとして壊すことも多いから、そっとしとけ []
[ここ壊れてます]

979 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 07:03:08.54 ID:QQtzQfGp.net]
>>954
末尾の円マーク有無で毎回処理を分岐させてるのならBuildPathを使え

980 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 09:36:28.54 ID:zGsllLLl.net]
>>954
その冗長なコードとやらを貼ってみれば何が悪いか指摘してもらえると思うぞ

981 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 10:26:27.74 ID:pGBLBsE0.net]
.netの文字列操作ライブラリとか見たらいたせりつくせりで贅沢過ぎるわ!って怒り出しそう

982 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 12:33:58.98 ID:NHsDgqoS.net]
タスクバーのアイコンを取得したくて、下記のサイトのC#をVBAに移植しても、Excelがハングアップする
C#ではちゃんと動く
なぜ?

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hTaskBar)


https://learn.microsoft.com/en-us/answers/questions/115440/how-to-find-taskbar-button-screen-rect-of-a-window

983 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:25:32.25 ID:QQtzQfGp.net]
https://qiita.com/Mrs_P/items/5c8070fd880b9deb284a
↑ここの人がVBAで似たようなことやってますね
GetReferenceElementという関数の中に >>961 と同等のコードが書かれているから
hTaskBarの値がおかしいんじゃないの?

これでブラウザの自動操縦できるのかぁ 便利そうだな

984 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:32:49.76 ID:NHsDgqoS.net]
>>962
このサイトも見た
hTaskBarの値は、C#版とVBA版で同じ値だったので、正しいと思う。

Chromeのウィンドウハンドルでやった場合は、ちゃんと動いた

985 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 13:58:10.47 ID:QQtzQfGp.net]
これで最後の行まで動いたよ

Dim hWndTray As LongPtr: hWndTray = FindWindow("Shell_TrayWnd", vbNullString)
Dim hWndRebar As LongPtr: hWndRebar = FindWindowEx(hWndTray, 0, "ReBarWindow32", vbNullString)
Dim hWndMSTaskSwWClass As LongPtr: hWndMSTaskSwWClass = FindWindowEx(hWndRebar, 0, "MSTaskSwWClass", vbNullString)
Dim hWndMSTaskListWClass As LongPtr: hWndMSTaskListWClass = FindWindowEx(hWndMSTaskSwWClass, 0, "MSTaskListWClass", vbNullString)

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndMSTaskListWClass)
MsgBox "終わり"



986 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 14:07:56.34 ID:QQtzQfGp.net]
もうひとつの方もこれで動いた

Dim hWndTray As LongPtr: hWndTray = FindWindow("Shell_TrayWnd", vbNullString0)
Dim hWndTrayNotify As LongPtr: hWndTrayNotify = FindWindowEx(hWndTray, 0, "TrayNotifyWnd", vbNullString)
Dim hWndSysPager As LongPtr: hWndSysPager = FindWindowEx(hWndTrayNotify, 0, "SysPager", vbNullString)
Dim hWndToolbar As LongPtr: hWndToolbar = FindWindowEx(hWndSysPager, 0, "ToolbarWindow32", vbNullString)

Dim pUIAutomation As New CUIAutomation
Dim windowElementTray As IUIAutomationElement
Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndToolbar)
MsgBox "終わり"

987 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 15:15:58.64 ID:NHsDgqoS.net]
>>965
あ、
Windows 11だと動かないな…

>>964のタスクバーのボタンは動いたけど、
>>965のトレイアイコンは、最後の1行で、やっぱExcelごとハングアップで強制終了するわ
(Set windowElementTray = pUIAutomation.ElementFromHandle(ByVal hWndToolbar))

C#版は、>>965のトレイアイコンもちゃんと動くんだけど…

988 名前:デフォルトの名無しさん [2025/06/07(土) 16:04:31.64 ID:I++ihMYF.net]
>>959
例えばファイルシステムで
フォルダ1の中から指定の文字列を含むフォルダを探して
見つかったフォルダのパスを取得して
さらにそのフォルダの中から指定の文字列を含むフォルダを探して
見つかったフォルダのパスを取得して
そのフォルダの中に指定のフォルダがあるか確認してなかった場合はフォルダを作成するコードです
2〜3回同じ様な事を繰り返しているので冗長な気がしてなりません

989 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 16:09:10.87 ID:WTKqP7i+.net]
>>967
それそのままAIに投げたら一瞬で書いてくれるよ

990 名前:947 mailto:sage [2025/06/07(土) 16:28:51.74 ID:ADmBeqPj.net]
>>948, 949, 950
ありがとうございます

マイクロソフトのサイトは機械翻訳がどうも…、と敬遠していましたが、参照してみます
それから洋書、かぁ…

991 名前:デフォルトの名無しさん [2025/06/07(土) 17:36:52.86 ID:hTJ86lb5.net]
>>967
それを平で書いてるなら冗長
再帰処理でやるのがあるべき姿
まずは指定フォルダ下の全フォルダを出力する再帰処理書いてみ
(全てが再帰処理ではない。呼び出し元処理と再帰処理の2つ書くことになる。念の為)

992 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 17:47:31.26 ID:QQtzQfGp.net]
>>966
Windows11はタスクバーに使われてるクラスが変わってるらしいから関係あるかもよ
https://www.autohotkey.com/boards/viewtopic.php?style=19&t=108539
AHKにクラス名を調べるツールがついてたような

993 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 17:55:49.45 ID:nK7i38Q0.net]
>>967
こんなのかな
>フォルダ1(Path1)の中から指定の文字列を含むフォルダ(Pattern1)を探して見つかったフォルダのパス(Path2)を取得する

Path2 = GetPatternPath(Path1, Pattern1) As String

>さらにそのフォルダ(Path2)の中から指定の文字列(Pattern2)を含むフォルダを探して
>見つかったフォルダのパス(Path3)を取得する

Path3 = FindPatternPath(Path2, Pattern2) As String

>そのフォルダ(Path3)の中に指定のフォルダ(Pattern3)があるか確認してなかった場合はフォルダを作成するコードです

result = CheckPatternPath(Path3, Pattern3) As Boolean
If result Then
Call MakePatternPath(Path3, Pattern3)
End If
あとは関数の中身を書くだけ

994 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 18:21:21.32 ID:QQtzQfGp.net]
>>967
ShiteiNoMojiretsu = "指定の文字列"
Shitei = "指定"
Path = "C:\フォルダ1"
Path = Path & "\" & Dir(Path & "\*" & ShiteiNoMojiretsu & "*", vbDirectory)
Path = Path & "\" & Dir(Path & "\*" & ShiteiNoMojiretsu & "*", vbDirectory)
If Dir(Path & "\" & Shitei, vbDirectory) = "" Then
MkDir Path & "\" & Shitei
End If

995 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 18:49:45.58 ID:NHsDgqoS.net]
>>971
んー

でも、C#ではちゃんと動くので、VBA側の問題な気が…
クラスが変わってるのも知ってる。



996 名前:デフォルトの名無しさん [2025/06/07(土) 22:19:45.07 ID:I++ihMYF.net]
>>970
やっぱりそうですよね
再帰処理を頑張って覚えます

997 名前:デフォルトの名無しさん [2025/06/08(日) 02:30:07.18 ID:bVJzS0fI.net]
>>975
そやね
たったこれだけでフォルダ階層どこまでも潜れるのかと感動すると思う
(かもしれないw)
フォルダ再帰ができたら各全ファイル名列挙も再帰処理の中に追加しとき
いつか使う時が来る

998 名前:デフォルトの名無しさん [2025/06/08(日) 03:49:16.50 ID:kACuu3za.net]
こんなので偉そうにする馬鹿

999 名前:デフォルトの名無しさん [2025/06/08(日) 10:13:48.24 ID:szoadHGe.net]
>>977
わざわざ「私バカです」って手を挙げて出てきてどうした

1000 名前:897 [2025/06/08(日) 10:59:09.81 ID:BE7fUg1L.net]
>>976
昔だったら stack overflowとか心配してたけど今はあまり気にしなくて良さそうだね

1001 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:01:04.08 ID:j4jIPbHU.net]
.netのAPIラッパー関数もソース見ると大抵泥臭い事やってんのよね

1002 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:03:50.75 ID:4qkaLQIW.net]
スタック領域は昔からほとんど変わってないから気にする必要はある

1003 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 11:07:37.10 ID:j4jIPbHU.net]
Excel VBA 質問スレ Part83
https://mevius.5ch.net/test/read.cgi/tech/1749348402/

1004 名前:897 [2025/06/08(日) 11:11:01.02 ID:BE7fUg1L.net]
>>982
乙彼
>>981
共有サーバのアドレス変わった時、全フォルダの奥までショートカット探して書き換えたけど
何ともなかったからそんなもんだと思ってた

1005 名前:デフォルトの名無しさん [2025/06/08(日) 12:43:48.49 ID:gXHyLlYW.net]
>>976
再帰処理のコード自体はわかるのですが、If文で再帰処理をする、しないまでは考えてなかったです



1006 名前:デフォルトの名無しさん [2025/06/08(日) 14:43:09.01 ID:bVJzS0fI.net]
>>984
if?
途中から折り返す時のこと?
それなら必要

1007 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 16:28:21.07 ID:46RFXcFD.net]
2階層しか掘らないのにわざわざ再帰処理にするかなぁ

1008 名前:デフォルトの名無しさん [2025/06/08(日) 16:56:20.91 ID:DI4VVn6/.net]
>>978
構ってもらうのも大変なんだぞ
察してあげなきゃ

1009 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 17:17:56.33 ID:8915HtnW.net]
>>983
スタックさせたまま全ファイル走査なんてしないだろうから、
ファイルの数何個あろうが同じでは?

1010 名前:デフォルトの名無しさん mailto:sage [2025/06/08(日) 19:19:30.01 ID:4BwIalv3.net]
ソース的に簡単にするなら全ファイルのフルパス取って正規表現だな

1011 名前:デフォルトの名無しさん [2025/06/09(月) 07:30:24.52 ID:UIpY0QNU.net]
フォルダのショートカットファイルがある場合の動作確認はした方がいいぞ

1012 名前:デフォルトの名無しさん mailto:sage [2025/06/09(月) 08:19:56.01 ID:EHQrQQev.net]
シンボリックリンクとジャンクションとハードリンクも動作確認した方がいいぞ
パスが255文字超えた場合も動作確認した方がいいぞ

1013 名前:デフォルトの名無しさん [2025/06/10(火) 20:52:05.68 ID:RKOrDLCJ.net]
VBAのfor eachやfor nextでif文を使用して条件に合わなかった時にnext するにはどうしたらいいでしょうか?

1014 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:05:38.20 ID:94f6xD2K.net]
forの中をDo-Loopで囲んで脱出したい時はExit Doする

1015 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:05:45.22 ID:zK5HBYNC.net]
>>992
VBAでFor EachやFor Nextループ中に条件に合わない場合に次のループに進むには、If文を使い、条件が合致した場合のみ処理を記述します。
' For Each の例
For Each item In collection
If 条件 Then
' 条件に合った場合の処理をここに書く
End If
Next item

' For Next の例
For i = 1 To 10
If 条件 Then
' 条件に合った場合の処理をここに書く
End If
Next i

Elseブロックを記述しないことで、条件が合わない場合は自動的に次のループへ進みます。



1016 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:17:29.25 ID:KLsW+s5l.net]
next の手前にgoto

1017 名前:デフォルトの名無しさん [2025/06/10(火) 21:35:49.89 ID:chtn5cci.net]
gotoでnext前のラベルに飛ぶ。ラベルは
CONTINUE_1:
など

1018 名前:897 [2025/06/10(火) 21:41:20.79 ID:4RtejL7X.net]
C言語の呪いから解けずにGoTo使いにくい俺

1019 名前:デフォルトの名無しさん mailto:sage [2025/06/10(火) 21:55:14.34 ID:qJv58WHL.net]
無理して使うもんじゃない
そもそもifで処理せずにnextさせたいなら、
逆にifで処理させれば条件に当てはまらなければnextになるんだし

1020 名前:デフォルトの名無しさん [2025/06/10(火) 21:57:34.45 ID:YNq6kTxr.net]
馬鹿ばっかで呆れるスレ

1021 名前:デフォルトの名無しさん [2025/06/10(火) 21:58:07.04 ID:YNq6kTxr.net]
馬鹿ばっか

1022 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 137日 18時間 26分 52秒

1023 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<280KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef