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/
526デフォルトの名無しさん
垢版 |
2025/04/29(火) 16:26:16.90ID:Cio0Z7DT
スクショは貼らないw 64bit
SQLite3 ODBC Driver 1.34455.00.00 Christian Werner Software & Consulting SQLITE3ODBC.DLL 2023/10/23

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

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

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

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

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

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

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

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

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

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

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

BASICとはそういうものだ
562デフォルトの名無しさん
垢版 |
2025/05/02(金) 20:16:54.76ID:KF55o+fS
変数名といえばおまえら Option Explicitしてるの?
俺はうっかりさんでスペルミスしがちだから外せないけど
2025/05/02(金) 20:38:35.86ID:sdnBjLxl
しない理由がない
2025/05/02(金) 20:55:10.60ID:1BRp4bnH
あれ消えないようにして欲しい
565デフォルトの名無しさん
垢版 |
2025/05/03(土) 05:59:05.73ID:2+JR0EAo
今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
2025/05/03(土) 07:20:36.45ID:0JGyOYLe
自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。
2025/05/03(土) 09:23:52.05ID:Hazt22aJ
>>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね
2025/05/03(土) 10:20:15.15ID:VRj6VpYS
使用回数によるよね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね
2025/05/03(土) 11:20:28.73ID:F8pywi6k
そのプロジェクト内では1回しか使わなくても、よくある定形処理は関数にまとめた方がいい
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる
2025/05/03(土) 16:42:04.86ID:h9Jrb8E+
1ファイルに全部書く
571デフォルトの名無しさん
垢版 |
2025/05/03(土) 17:16:40.74ID:2+JR0EAo
ラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね
2025/05/03(土) 18:50:44.41ID:ocHu15P2
ぱっぱらぱー
2025/05/03(土) 21:38:51.92ID:Hazt22aJ
お鍋の中からインチキおじさんが登場しますた
2025/05/03(土) 22:43:16.33ID:aLoX39eB
ぴーひゃらぴーひゃら
2025/05/04(日) 07:28:49.39ID:ajXSlqYh
ラッパーというのは、元の関数とかにガワを被せた(つまり、その中で元の関数を呼び出している)関数とかのことね。包装するとかの意味のラップ。念のため。
2025/05/04(日) 08:17:46.31ID:kPdoN8ak
ラッパーとインターフェースはどう違うのっと
2025/05/04(日) 09:35:43.88ID:VN1fyBP0
インターフェースは、抽象的にいえばひとまとまりと観念されるコードの塊(クラスとかモジュールとか)同士の間の境界、その境界に接するコード部分かな。インターフェースを介して情報のやり取りを行うに際して互いの前提が異なる場合には、そのままでは情報のやり取りができないので前提を合わせる必要がある。ラッパーはそのために使われることもあるけれど、基本的には全然別の概念。
578デフォルトの名無しさん
垢版 |
2025/05/04(日) 16:30:55.85ID:IQyuDcpS
>>571
それはモジュール分割

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

ラッパーはラッピングだから、モジュールを包むモジュールというイメージ
579デフォルトの名無しさん
垢版 |
2025/05/04(日) 16:35:24.36ID:IQyuDcpS
>>577
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる

インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる
2025/05/04(日) 21:24:05.55ID:NkPvwNmC
具象クラスの(>>577の意味での)インターフェイスを規定する抽象クラス(抽象基底クラス)それ自体のことをインターフェイスと呼ぶのは、オブジェクト指向というよりもJavaとかから広まった用語法なのでは。
個人的には、インターフェイスという語の本来の意味はあくまでも577のようなものであって、Javaとかでいうインターフェイスはそこからの派生とか転用として位置付けられるべき用語法だと思うかな。
ただたしかに、Javaみたいな意味でインターフェイスという語を用いることの方が(プログラミング関係の文脈では)もはや多いのかもしれないし、質問した576の意図もそちらにあったのかもしれないね。
581デフォルトの名無しさん
垢版 |
2025/05/04(日) 21:50:46.14ID:6QG7+rqM
PowerQueryでの動的な繰り返し処理を理解したら、VBAにもList.Select関数とかText.PositionOfのOccurrence.Allとか欲しい
582デフォルトの名無しさん
垢版 |
2025/05/05(月) 01:42:23.95ID:6skGH2rL
自分で実装すればいいじゃん
2025/05/05(月) 09:14:01.67ID:8n1c0Fvg
実装は難しくはないだろうけど、汎用的に使える便利な関数はできれば組み込みで持っていて欲しいという感覚は分かる。
584デフォルトの名無しさん
垢版 |
2025/05/05(月) 10:45:35.51ID:NKQxWENO
配列の中に、対象に含まれているものがあれば、配列から取り出す、
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな
2025/05/05(月) 10:46:27.32ID:Q8K4+hk+
自分が欲しいと思ったものは誰かがすでに作ってる
作るよりAIに聞いた方が早い
2025/05/05(月) 11:03:49.52ID:20YqVkB+
>>579
InterfaceはJava用語
TraitはRust用語
Excelでは何と言うのか?概念がそもそも無いのか?
2025/05/05(月) 11:43:00.38ID:EffckoF6
VBAにもInterfaceという機能があり見た目はJavaに似ている
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない
588デフォルトの名無しさん
垢版 |
2025/05/05(月) 13:17:06.42ID:bvP/AgOh
今時のプログラミングの考え方とか、関数型プログラミングというのは、ワークシート関数でいうindex関数とmatch関数の組み合わせの検索関数や、
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?
2025/05/05(月) 13:26:58.67ID:qohU83nC
入門書読んだこと無いの?
2025/05/05(月) 13:37:24.10ID:EffckoF6
違う
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね
2025/05/05(月) 17:39:10.53ID:ueUnqmHR
関数型プログラミングは入門記事でちょっと齧ったくらいだけど自分にはムリそうだなーと思った。
VBAとかPythonとかの手続型言語で書く分には、@決定性や副作用を意識する、A言語に取り入れられた関数型言語由来の構文(Pythonでいえば、イテレーター、内包表記、構造的パターンマッチとか?)を使うというくらいで十分じゃんじゃないかなぁ。
本格的に関数型でやるぞっていう人なら関数型言語(HaskellとかOCamlとか?)を使うんだろうし、そこまでは頑張れないけど手続型言語を書く際に関数型言語の考え方を参考にしたいという程度なら、上記@Aくらいでお茶を濁しておく感じになるのではないかと。
592デフォルトの名無しさん
垢版 |
2025/05/05(月) 22:54:48.45ID:bvP/AgOh
オブジェクト指向でカプセル化とか言っていたけど、結局はその理想通りにはならなかった。
その反省で生まれたのが関数型プログラミングという理解です。
関数には引数を引き渡す事と戻り値を受け取る事しか絶対にできない。
横槍も茶々入れも鶴の一声もない。
関数は一つのだけの事しかできない。
だからバグらない、誰がやっても結果は同じ。
593デフォルトの名無しさん
垢版 |
2025/05/05(月) 23:40:24.40ID:fQ8xBj6s
関数型プログラミングはオブジェクト指向よりも圧倒的に古い
2025/05/06(火) 01:25:53.28ID:AZSw2w0R
関数型において関数は引数を受けることと戻り値を返すことしかできないというのは正しいのだけど、
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する
595デフォルトの名無しさん
垢版 |
2025/05/06(火) 06:45:59.65ID:j1SFEq5D
>>594
まさに今それをやろうとしていますね
引数に関数を渡そうとしているの
値を引数にしたいけど、関数をネストせざるを得ない
2025/05/06(火) 07:24:57.73ID:Gnnon1y6
引数として関数そのものを渡したり、戻り値として関数そのものを返したりできるかは言語仕様の問題だから、言語によってできるかできないかは決まっている。VBAではできない。
2025/05/06(火) 08:15:59.98ID:Gnnon1y6
念のためだけど、
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。

さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。
2025/05/06(火) 09:32:02.27ID:ePr8aXMn
あとこれは割とどうでもいいことだけど、関数の戻り値を他の関数の引数にすることを「関数のネスト」ということは、普通はあまりないのではないかなぁ(関数呼び出し式のネストという趣旨だとすれば意図は通じるけれども)。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。
2025/05/06(火) 09:47:26.27ID:K1Pjz07i
pythonの凸レータは関数型らしいし関数のネストっぽく観える
600デフォルトの名無しさん
垢版 |
2025/05/07(水) 23:18:41.10ID:5rQjCI4p
関数型プログラミングは手続きという処理を見せないだけで、ロジックを隠すことでシンプルな見た目にするもの。

歴史上、常にこういう発想が何度も出てきているが、見た目をきれいにしたいだけで仕様の変更に耐えられない構文であることから、一度も主流になったことがない。
601デフォルトの名無しさん
垢版 |
2025/05/07(水) 23:48:45.09ID:8NEt0qiL
>>600
全然違うと思いますけど?
結局大勢の人で手続き型プログラミングを作ったところでバカだらけ
2025/05/08(木) 01:43:07.29ID:eAkjlYW3
VBA使ってる人間が他言語批判は草
603デフォルトの名無しさん
垢版 |
2025/05/08(木) 01:56:21.88ID:hlDlUBWZ
VBAは俗人化するのでは?なんて質問を会議でこのご時世に言われるとは思わなんだ
優しく答えて大恥かかせてしまったけど少し悪かったかも
2025/05/08(木) 03:20:26.19ID:Mm7IQCJP
設計と管理がちゃんとしてれば関数型だろうがプログラムは作れる
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ
605デフォルトの名無しさん
垢版 |
2025/05/08(木) 06:36:17.83ID:rpgtocHg
VBAの何が属人化するの?
他の本格言語、例えばC++と何が違うの?
606デフォルトの名無しさん
垢版 |
2025/05/08(木) 07:04:16.42ID:KsTAlec+
単純に用途が限定的なのでわざわざ覚える人が少ないのよ
2025/05/08(木) 07:25:23.15ID:jLg0E+bB
関数型言語が主流になったことがないというのは事実だろうけど、関数型言語による宣言的なプログラミングスタイルに何かしら限界とか制約があるからなのか、それとも単に難しいからなのかはわからないな。関数型言語をある程度使いこなした経験がある人には分かるのかもしれないが。
2025/05/08(木) 07:39:13.07ID:jLg0E+bB
状態を数多く管理しなければならないようなプログラム(GUIとか?)はちょっと苦手と聞いたことごあるような気もするが、今はどうなんだろう。
2025/05/08(木) 08:15:37.11ID:Im8CJRBo
VBAに限らず、属人化のリスクは「協業の仕事」共通やな
当たり前っちゃ、当たり前だが

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

10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産
2025/05/08(木) 10:03:03.06ID:a9PTljx+
話がループしてるな
612デフォルトの名無しさん
垢版 |
2025/05/08(木) 10:09:29.45ID:D3KgMrbS
Exit vba
2025/05/08(木) 10:11:28.02ID:RKaJBu95
属人化の話題はVBAスレの華だからね。VBAがアイデンティティになっているタイプの人には譲れない話題なんでしょ。

今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。
2025/05/08(木) 10:29:57.11ID:a9PTljx+
モジュール分ける意味と基準が判らない
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?
2025/05/08(木) 10:32:44.22ID:G5GTs1je
Exile VIVA!
2025/05/08(木) 10:41:00.38ID:719LxqHN
>>614
VBAレベルなら全部一つでいいよ
分割したくなるほど大きくなるようなら全体の業務フローを見直すべき
2025/05/08(木) 10:54:42.11ID:RKaJBu95
一般的な言語だと、機能分割や名前空間の分割のためにモジュールを分けるのでは。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。
2025/05/08(木) 12:10:22.44ID:8ptxnmrn
今は改善されてるのかも知れないが
名前ちょっと変えただけで行方不明になることは良くあった
619デフォルトの名無しさん
垢版 |
2025/05/08(木) 18:48:55.03ID:rpgtocHg
私はモジュールをコードの使用目的で分けているな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな
2025/05/08(木) 20:28:48.50ID:Qp1M/T2r
皆さんVBAでどのくらいコードを書きます?
1000行くらい?
621デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:11:25.68ID:kNzCbrU5
シートごとにモジュール分けてる...
622デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:26:36.63ID:ownVsw/K
>>620
必要に合わせてかなり書くよ
1000は小規模
623デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:34:26.78ID:hlDlUBWZ
そういうところがセンスないんだよな
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん
624デフォルトの名無しさん
垢版 |
2025/05/08(木) 21:49:23.37ID:rpgtocHg
可読性の高いコードは、処理を一つ一つ、行を書く事だと思います
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか
625デフォルトの名無しさん
垢版 |
2025/05/09(金) 07:31:44.14ID:Y+GhIEwV
うちの職場だけ特殊なので
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ
2025/05/09(金) 08:00:17.09ID:zNQNct04
RPA!RPA!って少し前もてはやされてたけど、
速度的にも手順的にもVBAでよくねって案件多かったよね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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