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/05/21(水) 13:24:41.83ID:4tKBDgn4
顧客も打ち合わせしても話し通じないならAIと打ち合わせしてコード出してもらった方がいいってなるよな
2025/05/21(水) 13:28:08.25ID:RMq3dtvy
ぶっちゃけシステムなんてそんなもんだよ
コンサルや名の知れたSIerに頼んだって必ず不満は出るし、結局使い物になりませんでした、なんてことも珍しくない
ただし、VBAはユーザー側の人間が作ることが多いので、SIerみたいに「要件定義で決まった通りです」で逃げるわけにもいかないんだよね
752デフォルトの名無しさん
垢版 |
2025/05/21(水) 15:22:55.64ID:r/haQ8U2
仕様変更に合わせて納期も延長でいいんじゃね
753デフォルトの名無しさん
垢版 |
2025/05/21(水) 17:20:56.31ID:RhMOdQAE
だいたい配布前提で整備したコード書けば属人化なんてほぼしないわけで
取り込む要望も無理にまとめず適度に分割してやればいいし
敵に抵抗できないコミュ障コーダーが悪いまである
2025/05/21(水) 17:33:31.94ID:7nPavp7R
>>753
属人化の根源はコードそのものじゃなく脳内にしかない仕様だよ
コードからwhatを読み取れないから属人化する
2025/05/21(水) 17:33:52.05ID:7nPavp7R
whatじゃない、whyだな
756デフォルトの名無しさん
垢版 |
2025/05/21(水) 17:42:23.76ID:RhMOdQAE
根源とかどうでもいいんよ
VBA少しできますくらいの他人が
適当にメンテしながら使っていけるコード書けって話でしかない
2025/05/21(水) 18:08:10.91ID:7nPavp7R
>>756
配布前提で書いたコードだろうと属人化するって話だから、
メンテしながら使おうが属人化はするよ
758デフォルトの名無しさん
垢版 |
2025/05/21(水) 18:16:53.95ID:HDnlDCyv
こんげんかせんといかん
2025/05/22(木) 07:49:16.16ID:ZB7yrtfi
Excel属人化教の方々は、その属人の定義をして欲しい
属人の何がいけないのか? 全員が同じレベルに成れと言い募ってるのか?
フルオープンにしてコード見れば説明書に成ってる程の成果物を作れと言ってるのか?
それとも、いけない事は無いがただ単に属人って言葉に魅了されて使ってるだけなのか?
2025/05/22(木) 07:59:10.35ID:ZB7yrtfi
WhyやWhatが読み取れないからメンテ出来ない ってんなら、じぶんのWhyやWhatで作り直せばいい
それを持ってた奴が前作を作ったんだしそれが使えてきてたって事実は変わらん
おれにはできねえってんなら、前任者より能力が劣ってるということになるし、才能ある奴を
新たに採用するように働きかけする必要がある
シン成果物を作れる能力あるなら、前任者をつべこべこき下ろしてる時間はムダでしかない 成果物-1.0でもいいけど
2025/05/22(木) 08:28:50.00ID:cWZ2SmFA
>>760
書き間違えたのは申し訳ないが、whatはコードから読み取れるんよ
whyは何故その処理をしているか?何故その方法を選んだか?何故そのアルゴリズムなのか?
それら意図を完全に示す術はない
コメントを残せって言われるのはつまりwhyを残せってこと
whyを知らなければVBAに限らず、言語にも依らず、
あらゆるものごとは属人化する
属人化は必ずしも悪ではないけれど、
昨日の自分は別人ってことを鑑みれば効率が悪いことは明らか
2025/05/22(木) 08:29:26.28ID:uEqc52DQ
数年後の自分がメンテできるように作ればOK
人の能力はマチマチ、まだいない後任者のことを考えてもしゃーない
2025/05/22(木) 08:42:19.33ID:cWZ2SmFA
属人化はリスク要因となりえ、VBAは属人化する蓋然性が高いってことをわかった上で許容するのと、
わからず使う・属人化しないと信じて使うのとは大違いって話をしているに過ぎない
能力だの才能だの、シン成果物だの成果物-1.0だの、
手も頭も動かさない奴の言葉遊びほど虚しいものはないな
2025/05/22(木) 08:49:14.19ID:iwrIvlAH
属人化教なんて言葉を使っている時点で、もう何を言われても属人化の弊害なんて絶対認めないぞっていう雰囲気をぷんぷんさせているじゃない。このスレだけで何回この話題やるの?
一般に言われる業務の属人化というのは、特定の人がいなければ業務が回らない状態のことで、当該特定の人が休んだり退職したりしたときに業務が止まってしまうリスクがあることから好ましい状態ではないとみなされている。会社側としては業務内容を把握する従業員を複数人にしたり(1人に依存しない)、マニュアル化したりすることでリスクを低減化するのが通常の対応。
VBAはコード作成も実行もExcelだけでできるという特徴があり、このVBA固有の事情により、@専門のプログラマーが作成するコードに比べて一般にコードの質が低い、A会社側が把握しないうちに業務にコードが使われるという事態が生じがち。属人化の弊害が、特にVBAについて言われることが多いのはこれらの事情によるところが大きい。
要するに会社側から見て、属人化リスクを低減化する機会自体がなかったり(上記A)、コストを掛けて属人化リスクを低減化するほどの価値が見出せなかったり(上記@)というケースがVBAの場合には少なくない。
VBAがアイデンティティになっちゃっている人にはどう説明しても理解しないだろうなと思いつつ、一応説明するとこういうことね。しかし、属人化の弊害を否定したがる人って、見事なまでに会社側の視点が抜け落ちているのね。担当者個人の視点で、業務が多少効率化できるのならそれはいいことだという発想から出発してそこから一歩も抜け出ないのならそりゃ議論も噛み合わんわな。
2025/05/22(木) 08:52:23.13ID:cWZ2SmFA
>>760
才能ある奴wがマニュアルをじぶんのWhyやWhatで作り直して大惨事になった、
東海村JCO臨界事故ってのもあったな
2025/05/22(木) 09:12:43.00ID:ZB7yrtfi
Excelは属人化しやすい だからExcelで効率化を図る場合には、それに関わる部署・チーム・グループが
一丸と成ってそうならないような対策を施さなければならない 今後、対策されていない自動化は禁止する
とかならまだわかる
Excelは属人化ガー VBAは尚更ー を連呼してるだけで、何の生産性向上に繋がるんだ?
アタマがひどく悪い一族に至っては「だからVBA禁止」のお触れまで出す始末

問題発生しないよう努力する必要もあるし、問題発生したらすぐさま対策を講じなきゃならないのは
何もExcelに限らんだろうに
とりわけここ20数年で急に変遷進歩し続けてきてしまったPC作業に取り残された奴らの繰り言に近い
そんなだから失われた40年とか揶揄されちまう 先を見て向上心持ってもっととんがらないと
VBAに問題あるなら、それを解消することに全身全霊で打ち込みゃあいいだけ
何の解説者だか評論家気取りだか知らんが、悪いものを悪いと言う事なんか阿呆でもできる 悪い処は直し続けるてだけ
2025/05/22(木) 09:31:16.38ID:cWZ2SmFA
>>766
属人化を悪いって言ってるのはあなた自身だろ
俺は属人化を悪いなんて言ってない
属人化を問題だと思うなら解決すべきなのはそりゃそうだし、
解決策の一つとしての全面禁止だって、俺なら選ばないけど理解はできる
属人化が何故生じるのかを議論することは、それを解消することにも繋がる
属人化する/しないの幼稚な二元論でまとめようとするのは、
頭を使ってない・使えないことをひけらかしてるに過ぎないよ
2025/05/22(木) 09:35:02.46ID:mUoHJ/op
従業員目線なら、属人化はイコール自分への依存度で価値だから、そりゃ手放さないわな
2025/05/22(木) 09:40:52.16ID:cWZ2SmFA
会社をプロフェッショナルの集まりだとすれば、
結局のところ仕事自体がどこまで属人化を突き詰められるかだから、
しょーもないことを属人化すんなって話なだけ
2025/05/22(木) 09:46:17.63ID:ZB7yrtfi
念仏唱えてるだけで、一向に前向きに対処しない・対策しようともしないバカ共を嘲って「教」を付けてる
属人の意味を、じぶんの中で咀嚼・消化してない/しようともしないで、ヨソで聞き齧った言葉をなぞってるだけ
「前にならえ・右にならえ」がDNAに刻み込まれてるこの国の人間にゃあ、それが心地いいのかも知らんが
誰がやらなくともおれはやる ぐらいの気概が欲しいところ

と書くと、内容読まずに言葉尻だけ捉えて「それが属人化に繋がる要因だろ!」とか言い募る奴が居そうだが
オープンな属人化なら大いに結構だろ ←これも語弊がある物言いだがw
オープンにする努力を怠るな、と言ってる 制作する側もそれを使って効率を上げようとする集団も 共有ってそういうもんだろ
そのグループ・集団は同じ目的(収益の向上)を持った集団のハズなんだ その目的達成の方にこそ目を向けろ
足引っ張って他人の粗探ししてつべこべ文句言ってるだけじゃあ、そのうち滅びる
771デフォルトの名無しさん
垢版 |
2025/05/22(木) 10:05:21.01ID:cejl8MgF
>>760
時間が無限にあるのが前提ならそうだね
772デフォルトの名無しさん
垢版 |
2025/05/22(木) 10:07:32.69ID:cejl8MgF
>>765
あれ実はノーベル賞もらえるレベルの改良だよな
2025/05/22(木) 10:23:06.55ID:bEEUFRBb
>>765
裏マニュアルとは別の?
ググっても分からなかった。
2025/05/22(木) 11:03:11.01ID:j+nxGcrc
質の低いコードを公開されたって迷惑なだけなんだって。VBA命の人は、まさに収益向上の観点からVBAはメリットより害の方が大きいと判断する会社が少なくないってことをどうしても受け入れられないみたいね。
VBA = 生産性向上・業務効率化という無邪気な信念を持っているみたいだけど、多くの会社はVBAをそのようには評価していない。会社が本気でコードによる生産性向上・業務効率化をするつもりなら、どのような言語を選定するにせよ継続的な管理コストは必要になるわけだけど、それならVBAではなく、もっとちゃんとした言語でやりたいというのが普通なわけ。非プログラマ社員の内製VBAの改変履歴を管理したり、マニュアル作ったりなんてしたくないのよ。
2025/05/22(木) 16:37:21.75ID:ZB7yrtfi
さすが >>774を取るだけの素質を持ち合わせた人間の発言だなw
ExcelVBAスレでExcelVBA不要論を、あまり意味の無い言葉を並べ立てて講釈するとは
内製であれ外注であれ、その業務を賄うにはExcelで充分という案件は想定して無いだろ?
そういう案件に限ってという前提ならExcelVBAでいいじゃないか
ダメな理由を語りたいがためだけに持ち出した事例が、一向にその役目を果たしてない
どんなコードだろうと「質が低い」と判断できる能力を持ち合わせてるんなら、それを
ブラッシュアップするなり作り変えるなり その方が百万倍コストの面でメリットだろうに

どんな大袈裟なプロジェクトと比較してンの? んで、それ比較する意味あンの?
あんたの中ではあるのかも知らんけど、世間一般では無意味だ とおれは思うよ
2025/05/22(木) 17:36:10.44ID:cWZ2SmFA
>>775
少なくないってのを100%と解釈してるのか?
ダメだと判断する会社が多いってだけで、
良いと判断する会社が無いなんて書かれてないぞ
変なバイアスかけてレス読んでる様に思える
んで、ブラッシュアップなり作り変える(替える?)ことのどこにコストの優位性があるんだよ
無駄なコストを支払ってることに気づけないような奴が、
他人の発言の意味の多寡の判断なんてできないだろ
可か不可か、良いか悪いかみたいな単純な話にしないと理解できないポンコツ自慢はもうやめてくれよ
2025/05/22(木) 17:36:37.38ID:Fv3bLhDj
Excelで十分かどうかというのはあまり意味のない尺度だと思うけどね。
Excel VBAの案件って既存物のメンテを除けば基本的に現状ワークシート等での手作業を省力化したいというものだから、
そりゃExcelで十分に決まってる。元々人力でできる程度に細分化された業務なんだから。
VBAが批判されるのは、まさにそういう個別最適化の積み重ねによって細切れ(≒属人的)で非効率な業務プロセスが保存される傾向があるため。
2025/05/22(木) 19:51:20.63ID:RAnqaH1V
多くの会社から見て業務でVBAを使ってもトラブルが起きにくいパターンというのは主に2パターンあって、@重要なコードだが、何らかの理由で他の言語が使いにくい事情があるため、専門のプログラマに頼んできちんとしたVBAコードを書いてもらう場合。この場合、当然、VBA社員の出番はない。要するに、通常のシステム開発と同じだが、特定の事情により選定言語がVBAになるケース。もう一つは、Aあまり重要な業務ではないので、質の低いコードでも構わない場合。個人の裁量の範囲内でVBAの使用を認める会社というのはこっち。要するに個人で責任を取れる範囲内なら、会社は管理コストを掛ける必要もないし、担当者の裁量でVBAを使うことを禁止するまでのことはしないくても良いのではないかいう発想。それなりに合理的ではある。

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

非プログラマの書くコードという括りで論じる限りは、Excelで十分な業務というより、低質なコードで十分な業務かというのが基準になるかな。それだって会社の方針次第だが。会社が全面的にVBAの使用を禁止しているような場合もあるからね。
2025/05/22(木) 21:02:03.17ID:aXwvtPcZ
VBA禁止な
reg add "HKCU\SOFTWARE\Microsoft\Office\16.0\Excel\Security" /v "VBAWarnings" /t REG_DWORD /d 4 /f
2025/05/22(木) 22:58:58.92ID:zdx+eNOi
名前付き引数省略は害悪。全てキッチリ書け
2025/05/23(金) 08:26:51.53ID:oLOrCYhj
「多くの会社」を、それぞれが想定してる規模が違うような気がする
経産省のサイトを参考にすれば、商工業それぞれの規模から比較したら
小規模(社員数20人以下)のが俄然大半を占めてる(かつては零細と呼ばれてた)
製造業は九割に近付く勢いだし、小売業や飲食業も八割、卸売業は五割程度だが
「多くの会社」とひとまとめにする場合は、これらを指すのでは無いのか?
社員数2,000名以下の中規模とかをもって「多くの会社」と呼び為してる気がしてならない
小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに
その実態を知ったうえで「多くの会社」と書いてるんだろうか
2025/05/23(金) 09:06:27.49ID:RtFNfP1s
人手に余裕のない小さい会社こそ差別化要因にならない業務にはSaaS使うべきなんだよ
SaaSは企業規模に対する課金が多いため、むしろ小規模な企業の方がコスト効率も良くなる場合が多い
2025/05/23(金) 10:16:56.42ID:38AbBGg0
VBAの属人化リスクの議論って、むしろそういう小規模な会社こそが最も意識すべきことでしょ。中規模以上の会社なら、そもそも低質なVBAコードに業務を依存させるような間抜けなこと自体があまりないだろうし、仮にそういう事態を生じさせてしまっても、最悪追加コストで何とかできなくはない。
小規模会社には、VBAを「効率的」な「武器」だと思いこんで飛び付いて、必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった。その教訓としてVBAの属人化リスクが意識されるようになったんだよ。
「武器」にならないとまでは言わないが、そんなに大したものではないし、トータルで見れば「効率的」でもない。好んで「フルに活用」するようなものでもない。そういうVBAの等身大の実像が会社サイドに把握されるようになっただけの話。

「小規模は、持ち合わせてる武器で戦うのがいちばん効率的なんだが
持ち合わせてるExcelだけで戦えるなら、それをフルに活用しない手は無いだろうに」(>>781
多くの会社はこの後半部分が幻想に過ぎないことに既に気付いているが、VBAerには未だにこの幻想にしがみついている人が居るということ。
2025/05/23(金) 13:22:41.57ID:oLOrCYhj
>必要な管理もしないまま「フルに活用」した挙句、にっちもさっちもいかない事態にしてしまったところが少なくなかった
ここの事例を具体的に読ませてくれるサイトとかあるん? 統計とか?
文末を「・・してしまったところはほぼ無い」と書き換えてどっかで紹介して、それを鵜呑みにした読者がヨソでお披露目しても
気付かれないでしょ? おソースプリーズな言説

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

上では商工業を書いたけど、他にも建設、運輸・運送、士業えtc あらゆる業界で現実にExcel VBAが幅広く活用されてる
現実を鑑みても「ExcelのVBAは属人化しやすいから禁止」を言い張って止まないンなら、言い続けてりゃいいけどさ
書かれるたびにおれがしゃしゃり出てつべこべ反論してりゃいいんだろうし
2025/05/23(金) 13:35:20.91ID:+XeHUCKJ
どのように属人化するか・どの様に防ぐかの話題から、
属人化対策として禁止するか否かの話に
786デフォルトの名無しさん
垢版 |
2025/05/23(金) 15:19:50.38ID:eOaMEV2I
最後に 知らんけど ってつけた方がいいんじゃんね
知らんけど
2025/05/23(金) 15:21:21.07ID:mEX1XvmT
>>784
他の手段と比較してどうかはともかく、事実としてVBAが問題を起こすことが多いからあんたに仕事があるんだろ?
だったら属人化万歳くらいで流しときゃいいのに、いちいち突っ掛かってたら余計なストレスを作るだけだぞ
心配しなくても、あんたが顧客としているような会社は、全体最適云々を語るコンサルやシステム屋は相手にしない
まあSaaSについては結構小さいところもわりと積極的に営業するから敵になるかもね
2025/05/23(金) 15:53:12.83ID:dHvUhuhP
長くてわかりにくい
スパゲッティ文章はやめろ
2025/05/23(金) 16:24:52.89ID:oLOrCYhj
うん、途中からどうも話が噛みあわないな、とかは思っていた
ひと頃「ExcelのVBAは属人化しやすいから禁止する企業が増えてる」とかのたまう輩が徘徊してて
おま、それ、何もExcelに限らんだろ っつー意味で反抗してたし、そんなアホ論をこのスレで
平気で吹聴してる奴に向けて言葉のげんこつしてたんだけど どっか行っちゃったんか?
所詮、世間は、世の中は属人三昧だろ? それで右往左往世界が悪い方向に向かってる実例を
まざまざと目の当たりにしてる真っ最中だろ? で、それが悪かどうかなんか、もう少し様子を
見極めなきゃいけないまである
なんでわざわざこのスレをターゲットに、VBAは属人化!!!とか言い募らなきゃならん?
どこの回し者だ?、と

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

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

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

すぱげってぃwww 読み飛ばせばいいじゃんか 読んでくれなんて頼んで無いぞ?
2025/05/23(金) 16:44:22.04ID:HIpPOdnz
スレタイ
2025/05/23(金) 16:53:05.49ID:fshmIkkH
xlsmって唐突に未知のウイルスの疑いのあるファイル扱いになったりする事もあるから何も知らない人は扱うのが怖いかもね
2025/05/23(金) 17:18:49.63ID:4lmOgu2G
VBA職人が揶揄されるのも分かるわ。
ところで、仮にVBA職人、Ruby信者、Haskell信者、Rust信者で比べられたら、やっぱりVBA職人が圧倒的に格下扱いされちゃうのかな。ちょっと悲しみ。
2025/05/23(金) 17:28:32.52ID:U7YdU8g0
VBAがそれらと同列に比較されることはないから互いに眼中にないと思うよ
Excel VBAはピボットテーブルとか分析関数とかと同列の、Excelの上級スキルの一つに過ぎない
一般的なプログラミングとは別物
そのへんのエンジニアより、むしろBIツールがメインのデータアナリストなんかの方がVBA意識してるよ
2025/05/23(金) 17:34:04.21ID:4lmOgu2G
なるほど、そんなものかねぇ。
2025/05/23(金) 17:39:18.56ID:+XeHUCKJ
>>789
文意の分からん文章書いてて噛み合わないもクソもないだろ
伝える気ないなら書くな
読ませる気無いなら書くな
話を曲解して変な方向に話を誘導してるのはあんた自身だ
2025/05/23(金) 18:31:41.70ID:5vSRBrjF
言語にすぐ上だ下だ騒ぐ奴いるからな
2025/05/23(金) 18:59:01.81ID:BlARSTzn
言語じたいは下の下
反論する奴すらいない
2025/05/23(金) 19:12:24.88ID:K4ioF38n
構文として最低限どんなものがあって欲しいかっていうのは人によって違うからねぇ。いまは、JavascriptとかPython辺りが平均的なラインなのかな。まぁ、関数型言語等のユーザーから見ればJavaScriptとかPytnon辺りでも足りないものだらけということになるんだろうし、VBAでも慣れればそんなに不自由ではないよという人も大勢いるわけだしね。
799デフォルトの名無しさん
垢版 |
2025/05/23(金) 19:54:42.34ID:ybuGJY2P
C言語育ちのワイ、VBA始めた頃「えっ、ポインタってどうやって使うの?」って戸惑った思い出
自分の仕事が楽になる用途で使いまくってるからまぁ属人化しまくりだけど、
自分が退職した後(2年後)は知らんと思っている
2025/05/23(金) 20:17:02.36ID:dHvUhuhP
この辺がつらい

・tryがない
・for eachがバリアントのみ
・continueがない
2025/05/23(金) 21:01:05.99ID:61koEGUg
まぁ、なければないで何とかやっていけるもんだよ。
このスレではそう言っておくのが無難。
802デフォルトの名無しさん
垢版 |
2025/05/23(金) 21:05:52.61ID:fxCKrz9G
>>799
C言語にはfor eachがない、なぜならもっと原始的、シンプルな言語だからってCopilotに聞いたのですが本当なのでしょうか?
2025/05/23(金) 21:21:09.60ID:eG6EJpyW
>>802
ポインタに++すれば次の要素になるからむしろCのほうが融通が効く
804デフォルトの名無しさん
垢版 |
2025/05/23(金) 22:01:59.52ID:ai481srR
4行以上のレスは読む必要無いってマジだな
805デフォルトの名無しさん
垢版 |
2025/05/23(金) 22:09:05.20ID:4KSUIwLz
ぬるぽ
806デフォルトの名無しさん
垢版 |
2025/05/23(金) 23:17:20.35ID:fxCKrz9G
>>793
データアナリストならパワークエリーしてほしいな
807デフォルトの名無しさん
垢版 |
2025/05/24(土) 06:17:34.64ID:OSW0csek
属人化し易い言語と言うことは融通の利く言語と言うことでもある。
例えば、CやC++ではポインタが使えたけどC#では「それは危険だ」ということで使えなくなってしまった。
代わりにデリゲートを使ってセーフティーに参照しなさい、ってことなんだろうけど、まぁお仕事用の開発だったらそれでもいいのかもしれないけど、
昔PS-VITAってゲーム機があって、これがエクスペリアってスマホとクロスプラットフォームで開発できるように開発言語をC#にしてしまった。
ポインタは確かに参照先間違えると吹っ飛んだりメモリリーク起こしたりと危険なものではあったけど、扱いが面倒ではないし融通の利く機能だった。
それを潰してしまったことがPSPシリーズがVITAで終わってしまった原因ではないかと今でも思ってる。
808デフォルトの名無しさん
垢版 |
2025/05/24(土) 06:41:52.12ID:OSW0csek
>>798
JavaScriptをやったときには
前から.Net系の言語や、まぁVBAでもそうなんだけど、
何でクラスのインスタンスや文字列とかは変数に入れられるのにメソッドは入れられないんだろ?
って思ってた時期があって、
JavaScriptに当たったとき、
あ、出来る言語もあるんだってなって、あれVBAに欲しいなぁとは思った。
後はスクリプト系の言語はスカラー変数で型の指定がないから型の指定に慣れてると逆にそれが面倒だったかな。
VBAで言えば全部Variantで扱ってるようなもんだし。厳密には違うらしいけど。
2025/05/24(土) 10:35:16.26ID:sJ/mZ3mU
若いコにはやっぱPython辺りが人気とか?
2025/05/24(土) 13:44:59.73ID:3VNn3d5Y
スピル周りやLET,LAMBDAなどの関数が充実し
Excel=ビジュアルな関数型言語だと勝手に思っている
811デフォルトの名無しさん
垢版 |
2025/05/24(土) 14:39:09.90ID:a4AdJqTs
ビジュアルな関数型言語はemacs-lispだろ
812デフォルトの名無しさん
垢版 |
2025/05/24(土) 15:44:49.02ID:0gUvgwlc
表検索するのにSQL使ってたけど、FILTER覚えたら単純な検索ならこれでいいかー、ってなった
813デフォルトの名無しさん
垢版 |
2025/05/24(土) 20:17:19.55ID:c7V+L981
このスレはバカの話はなぜ長いのか考えるスレになりました
2025/05/24(土) 20:41:36.84ID:6QA0+Pxw
頭の良い人は難しいことを簡単に説明出来る
馬鹿は簡単なことを長々と判り難くする
815デフォルトの名無しさん
垢版 |
2025/05/24(土) 20:44:24.68ID:OSW0csek
>>813
正直すまんかった
久しぶりにVBAスレ来たからつい・・・
でもVBAはいい言語だと思うよ
2025/05/24(土) 21:07:47.86ID:cYe6QRvj
VBAは言語なのだろうか
VBは言語だけども
817デフォルトの名無しさん
垢版 |
2025/05/24(土) 21:42:51.33ID:ZMjSY/PV
A1セルはこのフォルダのパスを記入する
A2セルはこのフォルダのパスを記入する

流石にこれは通じる、、、よね?
818デフォルトの名無しさん
垢版 |
2025/05/24(土) 21:44:12.53ID:ZMjSY/PV
>>816
チューリング完全がプログラム言語の定義なのでしょう?
だったらVBAはプログラミング言語なのでは
2025/05/24(土) 22:37:10.39ID:iK5rs3WU
A1 Write this folder pass.
820デフォルトの名無しさん
垢版 |
2025/05/25(日) 12:18:28.20ID:IvH5YvLQ
dictionaryやFileSystemObjectのfunction関数を使っているけど、dictionaryに登録する処理や取得したファイル名やファイルパスに対する操作は事なる

こう言う場合、どうすれば個別の条件にも対応できるfunction関数が作れますか?
2025/05/25(日) 12:36:22.85ID:ubpRgCst
異なる操作をひとつの関数で行いたいという質問ですね!
まずはどういう操作を行っているのか教えてください!
2025/05/25(日) 12:45:27.58ID:czPn1bap
dictionaryは死ぬ予定だから使うのやめなよ
2025/05/25(日) 12:53:50.40ID:ubpRgCst
>>822
そうですね!
Excelなのだからデータはワークシートに格納するのがスジですね!
2025/05/25(日) 13:20:14.05ID:fZ8kzLje
AIみたいな解答ワラタ
825デフォルトの名無しさん
垢版 |
2025/05/25(日) 16:48:27.92ID:zOE9ehCa
ホントにAIに聞いた。
個別の条件にも柔軟に対応できる function を作るには、いくつかのアプローチが考えられます。例えば、以下のような方法を試してみてはいかがでしょうか。
1. パラメータを活用する
2. Enum または定数を使う
3. コールバック関数を使う
2025/05/25(日) 17:36:59.25ID:QBoxveBd
何をしたいのかが謎
型によって処理を分岐させたいってことかね

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

  Case "File"

  Case "Folder"

 End Select
End Function
2025/05/25(日) 18:31:50.10ID:czPn1bap
>>823
そういう話じゃなくVBS廃止の副作用で連想配列や正規表現が死ぬって話
828デフォルトの名無しさん
垢版 |
2025/05/25(日) 18:42:26.13ID:rOBfPREU
>>827
VBS廃止の副作用で死ぬのは噂や推測じゃなくて公式の情報なの?
829デフォルトの名無しさん
垢版 |
2025/05/25(日) 19:07:30.81ID:IvH5YvLQ
ファイルシステムオブジェクトでフォルダの中のファイル名一覧と、ファイルパスを取得したい時もあれば、
ファイル名に部分一致するファイルのパスを取得したい時もある
830デフォルトの名無しさん
垢版 |
2025/05/25(日) 19:13:49.79ID:5C/Jye7Q
従来の正規表現の代用って無いの
2025/05/25(日) 19:54:07.08ID:czPn1bap
>>828
逆にあれだけ情報出ててなんで死なないと思うの?
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301

>>830
vba-regex by sihlfallっていう、
RegExp代替のフルVBAで書かれた正規表現エンジンがある
2025/05/25(日) 19:58:13.45ID:bo3VS07C
>>829
はい!
if文で条件分岐すれば、簡単に実現できます!
833デフォルトの名無しさん
垢版 |
2025/05/25(日) 20:04:43.89ID:IvH5YvLQ
私はVBAの正規表現が死んだら、パワークエリーでJavaScriptの正規表現を使うわ


set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?
Wordのドキュメントやアプリケーションを処理する時にエラーが出たのでそう思いました。
2025/05/25(日) 22:03:34.39ID:QBoxveBd
正規表現はREGEX関数が実装されたのでVBAでやる必要なし
835デフォルトの名無しさん
垢版 |
2025/05/25(日) 22:32:05.60ID:d/seLvao
>>822
知ったか乙
良く調べて書き直せ
2025/05/26(月) 02:34:52.38ID:J879X3+V
>>835
Microsoft Scripting Runtimeに依存してるからVBSと共に死ぬ
FSOなんかはScripting Runtimeには依存してないから引き続き使える
間違ってるなら指摘して
認識改めるから
2025/05/26(月) 09:38:22.00ID:G1Vrdcz4
>>820 が聞きたいのは
https://www.limecode.jp/entry/syntax/bind-set-filesystemobject
この辺の処理の仕方なんでは? 最後まで精読すれば、どういう書き方をすれば
より都合が良くなるか、それなり理解が深まるような
838デフォルトの名無しさん
垢版 |
2025/05/26(月) 09:53:10.39ID:wHcYCN0P
>>833
>set オブジェクト = nothing
それ書かないで過去に何度か問題起きてたような
ファイルopenして、close書かなくても勝手に閉じてくれるとしても、書いたほうがいいようなもん
たった1行各程度で未然にトラブル防げるなら書いとけと
(かと言って、親オブジェクトから連なる小オブジェクトはいちいちnothingせずに、親オブジェクトだけ書いちゃうことも多いけどな。小さい処理だと特に)
839デフォルトの名無しさん
垢版 |
2025/05/26(月) 12:08:21.83ID:chNfFSjB
>>836
間違えている
どのDLLに何が入っているかだ
840デフォルトの名無しさん
垢版 |
2025/05/26(月) 13:55:33.90ID:cvwCoF8H
>set オブジェクト = nothingって必ずした方が動作が確実になるのでしょうか?

した方が良いじゃなくてするべき
841デフォルトの名無しさん
垢版 |
2025/05/26(月) 17:21:30.90ID:c1JRhLC0
コピペ荒らしこのスレだけ来ないの面白いな
842デフォルトの名無しさん
垢版 |
2025/05/26(月) 18:35:02.01ID:FaOK97dk
>>837
すみません
今の私は例えばファイルシステムで言えば、
フォルダの中の全てのフォルダ名とフォルダパスを取得
フォルダの中の全てのファイル名とファイルパスを取得
フォルダの中に指定のファイル名と異なるファイルがあれば削除
と言う様に、
それぞれのサブプロシージャを作成する事しかできていません
なので、一つのサブプロシージャに条件に応じて複数の処理が行えないかなと思いました
原作論で言えば、一つの処理しかできないサブプロシージャこそ正しいのかもしれませんが
あと、それぞれのプロシージャでファイルシステムオブジェクトを宣言とセットをしてしまっています

nothingは今までプロシージャを抜けた時点で解放されるから特にする必要がないと思っていましたが、Wordを操作する様になって、nothingをしないと処理が止まってしまうので意識する様になりました
2025/05/26(月) 19:11:18.49ID:mCaBFscc
Sub Yaritai(i as integer)
if (i and 1) <> 0 then
Call Sub1()
elseif (i and 2) <> 0 then
Call Sub2()
End Sub
844デフォルトの名無しさん
垢版 |
2025/05/26(月) 20:30:26.44ID:sP5+kUYx
>>842
ご自分で言ってる通り、ひとつのモジュール、関数、メソッド等にはひとつの役割を与えて作るのがセオリーです。ちなみにそれを単一責任原則と言います。
ひとつのプロシージャ内で出来るかと言えば、再起処理やStaticな変数を上手く使えば恐らく出来ないことは無いでしょうが、そうするメリットをあまり感じません。
ひとつのプロシージャで処理するのではなく、ひとつのクラスとしてその辺の処理を行うことを検討しては如何でしょうか?
そうすればメンバ変数として宣言したもののインスタンスをコンストラクタで生成することも出来ますし、デストラクタで解放することも出来ますよ
845デフォルトの名無しさん
垢版 |
2025/05/26(月) 20:36:57.49ID:sP5+kUYx
×再起処理
◯再帰処理
誤変換すまんこ
846デフォルトの名無しさん
垢版 |
2025/05/26(月) 21:18:23.47ID:FaOK97dk
>>844
クラスモジュールを一通りやった事がありますが、いまいちクラスモジュールの使い方を知りません
どうすればそれぞれの機能をクラスモジュールで効率的に実装できるでしょうか?
2025/05/26(月) 22:59:03.14ID:Eh03XDLb
セルから機種依存文字を直接拾ってくるのは難しいですか?

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

どうにかしてセルの機種依存文字を拾ってきてその種類を判定することは可能でしょうか?
2025/05/26(月) 23:15:54.66ID:MWZ/4kNq
>>847
Hex(WorksheetFunction.Unicode(Range("A1")))
2025/05/27(火) 15:49:48.18ID:j5Gfr/Ar
>>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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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