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/
543 名前:デフォルトの名無しさん [2025/04/29(火) 22:00:44.14 ID:V3jk1q3e.net] WinAPIでvisual styleを適用させたい office2021だとCreateWindowEXで作ればvisual styleになるのにoffice2019だとならない
544 名前:デフォルトの名無しさん [2025/04/29(火) 23:44:21.62 ID:jEUD8QFb.net] 今頃になって列の行ごとの文字列のReplaceは、まず文字列をカンマでもなんでもいいから全部くっつけてひとまとめにして変数に代入して、Replace(文字列,検索文字,"")すれば一括で置き換えられるって理解したよ そしてSplitで配列に戻して元通り
545 名前:デフォルトの名無しさん [2025/04/30(水) 01:17:17.74 ID:0P1GE/1d.net] >>533 ComCtl32.DLLにリンクしてないからだと思う
546 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 03:14:35.45 ID:IvfkHP7P.net] >>534 たまたまデリミタと同じ文字(列)がデータにも含まれててExcelのバグだと騒ぐまでがセット
547 名前:デフォルトの名無しさん [2025/04/30(水) 06:29:26.31 ID:7AsrwtYN.net] >>536 わかるわかる
548 名前:デフォルトの名無しさん [2025/04/30(水) 06:54:36.59 ID:TQaKmIw3.net] >>534 初級を脱したい奴が考えそうな無駄な技 経験積めば自然に書くのが一番て解るよ
549 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 18:11:25.83 ID:/xZzLlpB.net] Range("A1:C10").Replace What:="置換前の文字", Replacement:="置換後の文字", _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False ってchatgptさんが言ってます
550 名前:デフォルトの名無しさん mailto:sage [2025/04/30(水) 18:39:00.27 ID:3/ALrefg.net] Replaceメソッドはシートの検索/置換オプションも変更されるから嫌い
551 名前:デフォルトの名無しさん [2025/04/30(水) 19:34:30.68 ID:Ypkgz0ac.net] >>528 さんきゅ
552 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 10:16:05.61 ID:NoOjVvyj.net] 開発では作るだけでなく動作確認、評価、検証をきちんとやるのも大事なのじゃ わざと異常を出して正しく異常が出るか、桁数やデータが大量だとどうなるかとか、日本語以外の環境でも動くとか 実際に動かして確認すると気づかなかった問題が見えてくるものだ
553 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 10:51:14.04 ID:/KCrsMZn.net] テストが重要なのはもちろんだが、VBAerレベルではそもそもバグが出にくくテストケースを闇雲に増やさなくていい書き方というものも多少は勉強した方がよい 似た処理をいちいちコピペすればその分ミスは増えるし、プログラムに直行性がないとテストケースは無限に増える
554 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 11:52:17.40 ID:nTiKCI2R.net] >プログラムに直行性がないとテストケースは無限に増える ほんそれ 直交性が無いのは言語の欠陥だと思う
555 名前:デフォルトの名無しさん [2025/05/01(木) 13:39:51.25 ID:yf6hHvtn.net] x ほんそれ o 本当にそれ
556 名前:デフォルトの名無しさん mailto:sage [2025/05/01(木) 14:02:16.67 ID:NoOjVvyj.net] 問題ないですとか言ってたのに後になって実は確認してませんでした とか言う新人たまにいる
557 名前:デフォルトの名無しさん [2025/05/01(木) 15:05:48.78 ID:my1nUwSm.net] VBAで単体テスト、カバレージ100とか聞いたことないわ あれ?ACCESSの納品物の評価ってどうやってたっけ……(もう忘れた)
558 名前:デフォルトの名無しさん [2025/05/01(木) 23:23:13.02 ID:15supz3z.net] スレチだけど やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。 .Buffer早すぎ
559 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 00:25:17.81 ID:+dCfSpYU.net] 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式の中身をワークシートに書き出せるのね
560 名前:デフォルトの名無しさん [2025/05/02(金) 01:50:51.67 ID:TLbUOI0p.net] >>549 いやん見ないで照
561 名前:デフォルトの名無しさん [2025/05/02(金) 06:41:36.56 ID:TLbUOI0p.net] 前に言っていた、Power Automateみたいにコードブロックを入れたら、作成したコードブロックだけで有効な変数が自動的に作成されて、コードブロックを抜けたら変数が削除される、コードブロックごとに変数が一意、コードブロックがカプセル化、秘匿化されている、もはやコードブロックがサブプロシージャ、ファンクション関数っていうの、関数型プログラミングの事だったんだな
562 名前:549 mailto:sage [2025/05/02(金) 06:43:09.29 ID:+dCfSpYU.net] そんな、他人を痴漢扱いすなw いやこれ、一昨日ChatGPTに 「クエリーの依存関係がもっと見やすいツール、何かない?」 って聞いた中で、教わったばかりの一部なんだけど。 需要があるなら、フルでプロシージャを晒すよ? おのおのChatGPTに聞けばいいんだろうけれど。 ここから親子関係の一覧表を作る、次のプロシージャは 正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。
563 名前:デフォルトの名無しさん [2025/05/02(金) 07:20:32.31 ID:TLbUOI0p.net] ワイはCopilotにsheet.copyで作成した新規ブックのクエリを削除するにはどうしたらいいですか? のコードでマクロ実行ブック(コピー元)のクエリも削除された泣 プログラマが型がわからないってマジ? VBAでtypeっていうともっぱらそのモジュールのみで有効なプロパティ?の事を指すと思うけど TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。 何でもかんでもできる、受け付けるというのはバグの元だよ。
564 名前:デフォルトの名無しさん [2025/05/02(金) 07:59:38.75 ID:TLbUOI0p.net] VBAは変数を宣言しなくても変数が使用できるし、Variantは中のデータの型を判断するし、動的型付けだった😫 宣言を強制しているし、型指定もしているからすっかり忘れていた
565 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 08:41:13.69 ID:IByDjNOR.net] >>549 WorkbookQuery初めて知った 面白そうだな
566 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 09:45:33.14 ID:G++s7sQD.net] >>551 Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?
567 名前:デフォルトの名無しさん [2025/05/02(金) 12:34:26.30 ID:FVfG1Al+.net] >>556 同じなんだけど、 Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される vbaで同じ事をしようとするといちいち宣言しなくちゃいけないし、命名のレパートリーも尽きるからやらないし、流用になる 個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う
568 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 13:08:27.70 ID:i8P7c2SF.net] だからそんなもん20年前から他の言語では一般的だし、 PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ 変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない
569 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 13:46:02.65 ID:G++s7sQD.net] スコープが別なことが分かっていれば、ループ変数は同じ名前の流用でも特に問題は起きないような気もするけれど。まぁでも便利なんだろうね。 ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。
570 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 16:53:20.86 ID:nKjy1k/M.net] ブロックがあればええ
571 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 19:06:46.82 ID:ngu+xaVd.net] 全てグローバル 変数名も文字数制限あり BASICとはそういうものだ
572 名前:デフォルトの名無しさん [2025/05/02(金) 20:16:54.76 ID:KF55o+fS.net] 変数名といえばおまえら Option Explicitしてるの? 俺はうっかりさんでスペルミスしがちだから外せないけど
573 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 20:38:35.86 ID:sdnBjLxl.net] しない理由がない
574 名前:デフォルトの名無しさん mailto:sage [2025/05/02(金) 20:55:10.60 ID:1BRp4bnH.net] あれ消えないようにして欲しい
575 名前:デフォルトの名無しさん [2025/05/03(土) 05:59:05.73 ID:2+JR0EAo.net] 今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど もっと有用なコードはありますか? さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
576 名前:デフォルトの名無しさん mailto:sage [2025/05/03(土) 07:20:36.45 ID:0JGyO
] [ここ壊れてます]
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] 文系管理職なのに業務アプリをシュシュっと作れちゃう俺 あるわけないだろバーカ 絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ