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/
Excel VBA 質問スレ Part82
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2025/01/24(金) 03:31:15.25ID:l239yW+P548デフォルトの名無しさん
2025/05/01(木) 23:23:13.02ID:15supz3z スレチだけど
やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。
.Buffer早すぎ
やっとPowerQueryの変数宣言、代入、for each、無名(名前付き)関数がわかった。
.Buffer早すぎ
549デフォルトの名無しさん
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式の中身をワークシートに書き出せるのね
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に聞けばいいんだろうけれど。
ここから親子関係の一覧表を作る、次のプロシージャは
正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。
いやこれ、一昨日ChatGPTに
「クエリーの依存関係がもっと見やすいツール、何かない?」
って聞いた中で、教わったばかりの一部なんだけど。
需要があるなら、フルでプロシージャを晒すよ?
おのおのChatGPTに聞けばいいんだろうけれど。
ここから親子関係の一覧表を作る、次のプロシージャは
正規表現検出をどう扱うか、相談しながらチューニング中なんだけど。
553デフォルトの名無しさん
2025/05/02(金) 07:20:32.31ID:TLbUOI0p ワイはCopilotにsheet.copyで作成した新規ブックのクエリを削除するにはどうしたらいいですか?
のコードでマクロ実行ブック(コピー元)のクエリも削除された泣
プログラマが型がわからないってマジ?
VBAでtypeっていうともっぱらそのモジュールのみで有効なプロパティ?の事を指すと思うけど
TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。
何でもかんでもできる、受け付けるというのはバグの元だよ。
のコードでマクロ実行ブック(コピー元)のクエリも削除された泣
プログラマが型がわからないってマジ?
VBAでtypeっていうともっぱらそのモジュールのみで有効なプロパティ?の事を指すと思うけど
TypeScriptでは静的型付けの様に、バグの無いコードというのは、できる事、やれる事、受け付ける操作を限定する事だと思う。
何でもかんでもできる、受け付けるというのはバグの元だよ。
554デフォルトの名無しさん
2025/05/02(金) 07:59:38.75ID:TLbUOI0p VBAは変数を宣言しなくても変数が使用できるし、Variantは中のデータの型を判断するし、動的型付けだった😫
宣言を強制しているし、型指定もしているからすっかり忘れていた
宣言を強制しているし、型指定もしているからすっかり忘れていた
555デフォルトの名無しさん
2025/05/02(金) 08:41:13.69ID:IByDjNOR556デフォルトの名無しさん
2025/05/02(金) 09:45:33.14ID:G++s7sQD >>551
Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?
Power Automateって使ったことないので分からないんだが、多くの言語で一般的ないわゆるブロックスコープとは別物なの?
557デフォルトの名無しさん
2025/05/02(金) 12:34:26.30ID:FVfG1Al+ >>556
同じなんだけど、
Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される
vbaで同じ事をしようとするといちいち宣言しなくちゃいけないし、命名のレパートリーも尽きるからやらないし、流用になる
個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う
同じなんだけど、
Power Automateはループ処理のアクションを追加すると自動的にvbaでいう for i の i とか for each 変数 の 変数が自動的に宣言される
vbaで同じ事をしようとするといちいち宣言しなくちゃいけないし、命名のレパートリーも尽きるからやらないし、流用になる
個別に変数を自動的に宣言してしかも管理も把握も一目瞭然だと、これからの時代はそれぞれのアクション、ブロックが一つのオブジェクト、関数みたいになるのがスタンダードで、しかもさらに進化するのかなと思う
558デフォルトの名無しさん
2025/05/02(金) 13:08:27.70ID:i8P7c2SF だからそんなもん20年前から他の言語では一般的だし、
PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ
変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない
PowerAutomateって複雑なことやろうとすると共通の変数を複数ステップに渡って弄り回すことになって簡単にVBAの糞コードみたいになるよ
変数のスコープに関する君の考えは一般的には正しいが、残念ながらPower Automateは君が期待しているようなものではない
559デフォルトの名無しさん
2025/05/02(金) 13:46:02.65ID:G++s7sQD スコープが別なことが分かっていれば、ループ変数は同じ名前の流用でも特に問題は起きないような気もするけれど。まぁでも便利なんだろうね。
ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。
ブロックスコープがない言語もそこそこあるような……。Pythonとか昔のJavaScriptとかは、関数スコープはあるけれどブロックスコープはないよね。
560デフォルトの名無しさん
2025/05/02(金) 16:53:20.86ID:nKjy1k/M ブロックがあればええ
561デフォルトの名無しさん
2025/05/02(金) 19:06:46.82ID:ngu+xaVd 全てグローバル
変数名も文字数制限あり
BASICとはそういうものだ
変数名も文字数制限あり
BASICとはそういうものだ
562デフォルトの名無しさん
2025/05/02(金) 20:16:54.76ID:KF55o+fS 変数名といえばおまえら Option Explicitしてるの?
俺はうっかりさんでスペルミスしがちだから外せないけど
俺はうっかりさんでスペルミスしがちだから外せないけど
563デフォルトの名無しさん
2025/05/02(金) 20:38:35.86ID:sdnBjLxl しない理由がない
564デフォルトの名無しさん
2025/05/02(金) 20:55:10.60ID:1BRp4bnH あれ消えないようにして欲しい
565デフォルトの名無しさん
2025/05/03(土) 05:59:05.73ID:2+JR0EAo 今更ながらブックオープン 読み取り専用のコードだけを書いたfunction関数を作れば短い文字数でブックを開いて変数に代入できるって気づいたんだけど
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
もっと有用なコードはありますか?
さらにテーブルをセットするfunctionとか、ディクショナリーの作成、登録するfunctionとかもいいな
566デフォルトの名無しさん
2025/05/03(土) 07:20:36.45ID:0JGyOYLe 自分だけが読み書きするコードならそれもありだと思うけど、一般論としては、文字数を少し節約できるというくらいしかメリットがないなら、あえてラッパーを作る意味はあまりないような気がする。
567デフォルトの名無しさん
2025/05/03(土) 09:23:52.05ID:Hazt22aJ >>565
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね
短い文字数が有用ならコメント付けないで変数名とか全部1文字にしたらいいんじゃね
568デフォルトの名無しさん
2025/05/03(土) 10:20:15.15ID:VRj6VpYS 使用回数によるよね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね
同じ操作が何回も出てくるなら適当なラッパー書いてあげると見通し良くて親切かなと
もちろんコメント付きでね
569デフォルトの名無しさん
2025/05/03(土) 11:20:28.73ID:F8pywi6k そのプロジェクト内では1回しか使わなくても、よくある定形処理は関数にまとめた方がいい
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる
文字数を減らす必要はないけど、行数は少ない方がデバッグがしやすくなる
570デフォルトの名無しさん
2025/05/03(土) 16:42:04.86ID:h9Jrb8E+ 1ファイルに全部書く
571デフォルトの名無しさん
2025/05/03(土) 17:16:40.74ID:2+JR0EAo ラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね
ありがとうございます
function関数やサブプロシージャは短い方がいい(一つの処理しか行わなくてもいい、行わない方がいい)
一回しか使用しない処理でも、メインプロシージャから切り分けた方がいい
と聞いていましたが、これはラッパーというのですね
572デフォルトの名無しさん
2025/05/03(土) 18:50:44.41ID:ocHu15P2 ぱっぱらぱー
573デフォルトの名無しさん
2025/05/03(土) 21:38:51.92ID:Hazt22aJ お鍋の中からインチキおじさんが登場しますた
574デフォルトの名無しさん
2025/05/03(土) 22:43:16.33ID:aLoX39eB ぴーひゃらぴーひゃら
575デフォルトの名無しさん
2025/05/04(日) 07:28:49.39ID:ajXSlqYh ラッパーというのは、元の関数とかにガワを被せた(つまり、その中で元の関数を呼び出している)関数とかのことね。包装するとかの意味のラップ。念のため。
576デフォルトの名無しさん
2025/05/04(日) 08:17:46.31ID:kPdoN8ak ラッパーとインターフェースはどう違うのっと
577デフォルトの名無しさん
2025/05/04(日) 09:35:43.88ID:VN1fyBP0 インターフェースは、抽象的にいえばひとまとまりと観念されるコードの塊(クラスとかモジュールとか)同士の間の境界、その境界に接するコード部分かな。インターフェースを介して情報のやり取りを行うに際して互いの前提が異なる場合には、そのままでは情報のやり取りができないので前提を合わせる必要がある。ラッパーはそのために使われることもあるけれど、基本的には全然別の概念。
578デフォルトの名無しさん
2025/05/04(日) 16:30:55.85ID:IQyuDcpS579デフォルトの名無しさん
2025/05/04(日) 16:35:24.36ID:IQyuDcpS >>577
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる
インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる
質問者じゃないけど、あなたの説明は入出力のインターフェース
質問者はオブジェクト思考のインターフェースのことを聞いているとおもわれる
インターフェースはモジュールに決まったメソッド、プロパティを持たせるための骨格となる設計の定義
特定のインターフェースを継承させることで、そのクラスにはどういうメソッド、どういうプロパティがあるのか調べなくてもわかるようにできる
580デフォルトの名無しさん
2025/05/04(日) 21:24:05.55ID:NkPvwNmC 具象クラスの(>>577の意味での)インターフェイスを規定する抽象クラス(抽象基底クラス)それ自体のことをインターフェイスと呼ぶのは、オブジェクト指向というよりもJavaとかから広まった用語法なのでは。
個人的には、インターフェイスという語の本来の意味はあくまでも577のようなものであって、Javaとかでいうインターフェイスはそこからの派生とか転用として位置付けられるべき用語法だと思うかな。
ただたしかに、Javaみたいな意味でインターフェイスという語を用いることの方が(プログラミング関係の文脈では)もはや多いのかもしれないし、質問した576の意図もそちらにあったのかもしれないね。
個人的には、インターフェイスという語の本来の意味はあくまでも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 自分で実装すればいいじゃん
583デフォルトの名無しさん
2025/05/05(月) 09:14:01.67ID:8n1c0Fvg 実装は難しくはないだろうけど、汎用的に使える便利な関数はできれば組み込みで持っていて欲しいという感覚は分かる。
584デフォルトの名無しさん
2025/05/05(月) 10:45:35.51ID:NKQxWENO 配列の中に、対象に含まれているものがあれば、配列から取り出す、
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな
っていう処理だから、内部処理的には、結局配列を全てチェックしていて意味がないのかな
585デフォルトの名無しさん
2025/05/05(月) 10:46:27.32ID:Q8K4+hk+ 自分が欲しいと思ったものは誰かがすでに作ってる
作るよりAIに聞いた方が早い
作るよりAIに聞いた方が早い
586デフォルトの名無しさん
2025/05/05(月) 11:03:49.52ID:20YqVkB+587デフォルトの名無しさん
2025/05/05(月) 11:43:00.38ID:EffckoF6 VBAにもInterfaceという機能があり見た目はJavaに似ている
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない
しかし実質的にはCOM相互運用専用の機能であり、JavaのようなInterfaceは無いと考えて差し支えない
そもそもクラスメンバへのアクセスは常にダックタイピングなのでInterfaceはあってもなくても何の影響もなく、特に意味はない
588デフォルトの名無しさん
2025/05/05(月) 13:17:06.42ID:bvP/AgOh 今時のプログラミングの考え方とか、関数型プログラミングというのは、ワークシート関数でいうindex関数とmatch関数の組み合わせの検索関数や、
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?
マッチ関数とoffset関数とcount if関数の組み合わせによるプルダウンリストの絞り込みの様な、
一つのセルに対して関数のネストはやめましょう、
一つの関数は一つの答えを返しましょう、という認識なのですがどうなのでしょうか?
589デフォルトの名無しさん
2025/05/05(月) 13:26:58.67ID:qohU83nC 入門書読んだこと無いの?
590デフォルトの名無しさん
2025/05/05(月) 13:37:24.10ID:EffckoF6 違う
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね
関数型プログラミングってのは、VBAなんか使わずにワークシートの式と関数だけで作りましょう、というものだと考えるとイメージしやすい
正確には、副作用のない式や関数だけを組み合わせてプログラムを作るのが関数型プログラミングで、Excelのワークシートはその一例
VBAでも注意深くやれば副作用のない関数だけで作ることは可能だが、それができるスキルの奴はVBAなんか使わないだろうね
591デフォルトの名無しさん
2025/05/05(月) 17:39:10.53ID:ueUnqmHR 関数型プログラミングは入門記事でちょっと齧ったくらいだけど自分にはムリそうだなーと思った。
VBAとかPythonとかの手続型言語で書く分には、@決定性や副作用を意識する、A言語に取り入れられた関数型言語由来の構文(Pythonでいえば、イテレーター、内包表記、構造的パターンマッチとか?)を使うというくらいで十分じゃんじゃないかなぁ。
本格的に関数型でやるぞっていう人なら関数型言語(HaskellとかOCamlとか?)を使うんだろうし、そこまでは頑張れないけど手続型言語を書く際に関数型言語の考え方を参考にしたいという程度なら、上記@Aくらいでお茶を濁しておく感じになるのではないかと。
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 関数型プログラミングはオブジェクト指向よりも圧倒的に古い
594デフォルトの名無しさん
2025/05/06(火) 01:25:53.28ID:AZSw2w0R 関数型において関数は引数を受けることと戻り値を返すことしかできないというのは正しいのだけど、
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する
鬼門なのは関数そのものを引数として渡したり関数の戻り値として関数を返したりできるところ
それにより関数型プログラミングは飛躍的に自由度と難易度が上がり、>>592の頭だとたぶんそこで挫折する
595デフォルトの名無しさん
2025/05/06(火) 06:45:59.65ID:j1SFEq5D596デフォルトの名無しさん
2025/05/06(火) 07:24:57.73ID:Gnnon1y6 引数として関数そのものを渡したり、戻り値として関数そのものを返したりできるかは言語仕様の問題だから、言語によってできるかできないかは決まっている。VBAではできない。
597デフォルトの名無しさん
2025/05/06(火) 08:15:59.98ID:Gnnon1y6 念のためだけど、
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。
さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。
@ある関数(関数A)の引数の一つとして、他の関数(関数B)からの戻り値を渡すこと(大袈裟に言えば、関数呼び出し式のネスト?)と
Aある関数(関数A)の引数の一つとして、他の関数(関数B)そのものを渡すこととは、違うことだよ。
C言語もVBAと同じく、関数そのものを他の関数の引数として渡したりすること(上記A)はできないが(もっとも、関数へのポインタを渡すことによって同等のことは実現できる)、上記@はできる。
さらにいえば、関数を引数として渡せたり、戻り値として返したりできる(関数が第1級の値である等と表現されることも多い)というのは、関数型プログラミングのおそらく必要条件にはなるのだと思うけど、だからといってこれらの性質があれば関数型言語というわけでもない。JavaScriptとかPythonとかは関数が第1級の値である言語だけと、いわゆる関数型言語とは言われていないと思うし。
VBAは、構文的にはJavaScript、Pytnon、C辺りと比べても関数型プログラミングからより遠い位置にいる言語だと思うので、あまり関数型にこだわる必要はないのでは? 実践的には、関数の決定性と副作用の有無に意識的になるだけでも、それなりのメリットはあると思う。
598デフォルトの名無しさん
2025/05/06(火) 09:32:02.27ID:ePr8aXMn あとこれは割とどうでもいいことだけど、関数の戻り値を他の関数の引数にすることを「関数のネスト」ということは、普通はあまりないのではないかなぁ(関数呼び出し式のネストという趣旨だとすれば意図は通じるけれども)。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。
普通は「関数のネスト」といわれれば、関数定義のネスト(関数内で定義された関数)の方を想起すると思う。
599デフォルトの名無しさん
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:8NEt0qiL602デフォルトの名無しさん
2025/05/08(木) 01:43:07.29ID:eAkjlYW3 VBA使ってる人間が他言語批判は草
603デフォルトの名無しさん
2025/05/08(木) 01:56:21.88ID:hlDlUBWZ VBAは俗人化するのでは?なんて質問を会議でこのご時世に言われるとは思わなんだ
優しく答えて大恥かかせてしまったけど少し悪かったかも
優しく答えて大恥かかせてしまったけど少し悪かったかも
604デフォルトの名無しさん
2025/05/08(木) 03:20:26.19ID:Mm7IQCJP 設計と管理がちゃんとしてれば関数型だろうがプログラムは作れる
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ
だいたいは見積もりが甘いかドキュメントの整備がおろそかになってるだけ
605デフォルトの名無しさん
2025/05/08(木) 06:36:17.83ID:rpgtocHg VBAの何が属人化するの?
他の本格言語、例えばC++と何が違うの?
他の本格言語、例えばC++と何が違うの?
606デフォルトの名無しさん
2025/05/08(木) 07:04:16.42ID:KsTAlec+ 単純に用途が限定的なのでわざわざ覚える人が少ないのよ
607デフォルトの名無しさん
2025/05/08(木) 07:25:23.15ID:jLg0E+bB 関数型言語が主流になったことがないというのは事実だろうけど、関数型言語による宣言的なプログラミングスタイルに何かしら限界とか制約があるからなのか、それとも単に難しいからなのかはわからないな。関数型言語をある程度使いこなした経験がある人には分かるのかもしれないが。
608デフォルトの名無しさん
2025/05/08(木) 07:39:13.07ID:jLg0E+bB 状態を数多く管理しなければならないようなプログラム(GUIとか?)はちょっと苦手と聞いたことごあるような気もするが、今はどうなんだろう。
609デフォルトの名無しさん
2025/05/08(木) 08:15:37.11ID:Im8CJRBo VBAに限らず、属人化のリスクは「協業の仕事」共通やな
当たり前っちゃ、当たり前だが
なんつうか、丁寧さというか共同作業のセンスというか・・・
当たり前っちゃ、当たり前だが
なんつうか、丁寧さというか共同作業のセンスというか・・・
610デフォルトの名無しさん
2025/05/08(木) 09:23:26.41ID:v93ye6LH どだい、現場の最前線で使われる省力化目的の小アプリ(業務の簡素化含め)なんか
その寿命は3〜5年使えれば御の字
その間にもいろいろ業務形態も変化するし欲しい成果物もその都度変わったりする
その変化に逐次対応できるものなら属人化してようとも目的は果たしてる
その期間内に制作者が辞めたところでそれが何だってんだ 属人化させたのは上の責任
属人化がいけないなんてのは、上の方の言い訳に過ぎない 何故一人に任せた
10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産
その寿命は3〜5年使えれば御の字
その間にもいろいろ業務形態も変化するし欲しい成果物もその都度変わったりする
その変化に逐次対応できるものなら属人化してようとも目的は果たしてる
その期間内に制作者が辞めたところでそれが何だってんだ 属人化させたのは上の責任
属人化がいけないなんてのは、上の方の言い訳に過ぎない 何故一人に任せた
10年も使い続けられるような制作物ならとっくに償却できてるし、その会社の立派な資産
611デフォルトの名無しさん
2025/05/08(木) 10:03:03.06ID:a9PTljx+ 話がループしてるな
612デフォルトの名無しさん
2025/05/08(木) 10:09:29.45ID:D3KgMrbS Exit vba
613デフォルトの名無しさん
2025/05/08(木) 10:11:28.02ID:RKaJBu95 属人化の話題はVBAスレの華だからね。VBAがアイデンティティになっているタイプの人には譲れない話題なんでしょ。
今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。
今は、昔と比べて他の言語に触れてからVBAもやるという人が増えているのかな。VBAが最初に触れた言語ですという人の割合ってどれくらいなんだろう。
614デフォルトの名無しさん
2025/05/08(木) 10:29:57.11ID:a9PTljx+ モジュール分ける意味と基準が判らない
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?
全部のプロシージャを一つのモジュールに詰め込むのは何が悪いの?
615デフォルトの名無しさん
2025/05/08(木) 10:32:44.22ID:G5GTs1je Exile VIVA!
616デフォルトの名無しさん
2025/05/08(木) 10:41:00.38ID:719LxqHN617デフォルトの名無しさん
2025/05/08(木) 10:54:42.11ID:RKaJBu95 一般的な言語だと、機能分割や名前空間の分割のためにモジュールを分けるのでは。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。
モジュール分割の基準については、凝集度(高い方が良い)とか、結合度(低い方が良い)とかの概念でいろいろ議論されているみたい。
ただ、正直、VBAのモジュールっていろいろと特徴的なので(クラス定義はクラスモジュールで行う必要があるとか)、モジュール分割が必要な規模ならVBAではあんまり書きたくないかな。
618デフォルトの名無しさん
2025/05/08(木) 12:10:22.44ID:8ptxnmrn 今は改善されてるのかも知れないが
名前ちょっと変えただけで行方不明になることは良くあった
名前ちょっと変えただけで行方不明になることは良くあった
619デフォルトの名無しさん
2025/05/08(木) 18:48:55.03ID:rpgtocHg 私はモジュールをコードの使用目的で分けているな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな
ブックマークみたいな感じ
あと特定のアプリケーションを操作する時は、関係する変数、オブジェクトをひとまとめにしたりとか
もっと何も気にせず使えるのなら、アドインにコードをまとめて共有したりもするんだろうな
620デフォルトの名無しさん
2025/05/08(木) 20:28:48.50ID:Qp1M/T2r 皆さんVBAでどのくらいコードを書きます?
1000行くらい?
1000行くらい?
621デフォルトの名無しさん
2025/05/08(木) 21:11:25.68ID:kNzCbrU5 シートごとにモジュール分けてる...
622デフォルトの名無しさん
2025/05/08(木) 21:26:36.63ID:ownVsw/K623デフォルトの名無しさん
2025/05/08(木) 21:34:26.78ID:hlDlUBWZ そういうところがセンスないんだよな
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん
僕は詳しい僕は長くかける
で自己満足して社内の評価も年収も低いっしょ
火の玉ストレートでごめん
624デフォルトの名無しさん
2025/05/08(木) 21:49:23.37ID:rpgtocHg 可読性の高いコードは、処理を一つ一つ、行を書く事だと思います
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか
あと、エクセルだとRangeだのCellsだの、英語や数字になるから、それぞれ変数で名前をつけて変数に代入して可読性を上げるとか
625デフォルトの名無しさん
2025/05/09(金) 07:31:44.14ID:Y+GhIEwV うちの職場だけ特殊なので
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ
全体のシステムが大きいからコードも必然的に大きくなるだけ
その中の個々の機能では1000行以下の機能もたくさんあるよ
626デフォルトの名無しさん
2025/05/09(金) 08:00:17.09ID:zNQNct04 RPA!RPA!って少し前もてはやされてたけど、
速度的にも手順的にもVBAでよくねって案件多かったよね
速度的にも手順的にもVBAでよくねって案件多かったよね
627デフォルトの名無しさん
2025/05/09(金) 12:28:57.25ID:piOnFv34 そうなか、自分のとこだけで精一杯で世間知らずになってるかも
628デフォルトの名無しさん
2025/05/09(金) 18:28:31.58ID:HJ6RQEwc VBAで済むならVBA
RPAの方が楽ならRPAってだけ
RPAの方が楽なのにVBAで書くのはバカ
RPAの方が楽ならRPAってだけ
RPAの方が楽なのにVBAで書くのはバカ
629デフォルトの名無しさん
2025/05/09(金) 18:30:10.14ID:HJ6RQEwc >>628
ちょっと一行目が合わんな(寝起き)
ちょっと一行目が合わんな(寝起き)
630デフォルトの名無しさん
2025/05/09(金) 18:41:10.42ID:zNQNct04 何が楽かって視点がないからRPAが廃れたってことをわかってなさそうなレス
631デフォルトの名無しさん
2025/05/09(金) 22:10:08.68ID:p2pcYwx2 そもそも論として、使い方を学ぼうとしない人が大勢なのに使いこなせるわけがない
kintoneだろうがなんだろうが
銀の弾などない
kintoneだろうがなんだろうが
銀の弾などない
632デフォルトの名無しさん
2025/05/09(金) 22:37:09.74ID:p2pcYwx2 文系管理職なのに業務アプリをシュシュっと作れちゃう俺
あるわけないだろバーカ
絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ
あるわけないだろバーカ
絶対スカラ値の原則を無視したり、列を繰り返したりしてるわボケ
633デフォルトの名無しさん
2025/05/10(土) 02:15:51.46ID:2PI0HY+M 豊川悦司「俺ー♪」
634デフォルトの名無しさん
2025/05/10(土) 13:05:37.78ID:IWhliTad 無から有は難しいよね、環境や周囲の協力がないと
635デフォルトの名無しさん
2025/05/10(土) 13:13:10.16ID:APagMvUq 業務効率化程度の仕事なら、無から有は勝手にやりゃいいだけだから難しくない
周囲を巻き込んだとしてもどのみち最終的には言い出しっぺが責任持ってやれよという感じにしかならん
有から別の有の方が遥かに難しい
周囲を巻き込んだとしてもどのみち最終的には言い出しっぺが責任持ってやれよという感じにしかならん
有から別の有の方が遥かに難しい
636デフォルトの名無しさん
2025/05/10(土) 13:23:47.83ID:TkZSyEZj 誰かがVBAなんかで半端に作っちゃったものを、こんなもんSaaSでいいだろと移行させるみたいなのは難しい
必ず、決まった業務を回すしか能のない人達が重箱の隅をつついたり牛歩戦術をしてみたりと必死に抵抗してくる
必ず、決まった業務を回すしか能のない人達が重箱の隅をつついたり牛歩戦術をしてみたりと必死に抵抗してくる
637デフォルトの名無しさん
2025/05/10(土) 13:31:42.36ID:HZyfRGTg 金がかかるとなるとそりゃそうでしょ。
638デフォルトの名無しさん
2025/05/10(土) 13:49:08.55ID:tG+fugNq いや、経験上、金を問題にするのはある程度上の立場の人間なので、本質的でないしょーもない業務影響はあまり問題にしない。
〇業務を〇時間削減できるから人件費換算で導入コストと利用料を上回る効果が見込めますと説明できればよい。
くだらないことで難癖を付けてくるのは現場の人間。
〇業務を〇時間削減できるから人件費換算で導入コストと利用料を上回る効果が見込めますと説明できればよい。
くだらないことで難癖を付けてくるのは現場の人間。
639デフォルトの名無しさん
2025/05/10(土) 14:05:58.61ID:3Mk2sCKg >>630
何が楽かさえわかってないのかよw
何が楽かさえわかってないのかよw
640デフォルトの名無しさん
2025/05/10(土) 14:09:45.85ID:644AQTJb 無から有ってのは、何であれ産みの苦しみって奴で、社会でも人生でもあらゆる場面で起こり得る
有から別の有ってのは例えが判らんが、αというシステム化された処理が有って、その結果を元に
別のβを作ろうとしているのか、或いはαの改善品αUを作ろうとしているのか
前者なら無から有と一緒だし、後者なら元と成ってる最初のαを精査すればいいだけ
こんなもんSaaSでいいだろと思い込んでしまった原因を自省してみて、うかうか宣伝文句に釣られてただけと
理解出来たら儲けもの じぶんで実際にSaaSに移行してみて一年位稼働させてそれでも一切問題が発生しない
事を確認してから提案するぐらいの努力は発言する前に済ませておくべき
やってみましたできませんでしたは、殊営利を目的とする企業では落第の烙印を押されるだけ
プロトタイプ・試作品も無いまま実務で運用することほど無謀な試みは無い 旧日本軍大本営方式でしか無い
有から別の有ってのは例えが判らんが、αというシステム化された処理が有って、その結果を元に
別のβを作ろうとしているのか、或いはαの改善品αUを作ろうとしているのか
前者なら無から有と一緒だし、後者なら元と成ってる最初のαを精査すればいいだけ
こんなもんSaaSでいいだろと思い込んでしまった原因を自省してみて、うかうか宣伝文句に釣られてただけと
理解出来たら儲けもの じぶんで実際にSaaSに移行してみて一年位稼働させてそれでも一切問題が発生しない
事を確認してから提案するぐらいの努力は発言する前に済ませておくべき
やってみましたできませんでしたは、殊営利を目的とする企業では落第の烙印を押されるだけ
プロトタイプ・試作品も無いまま実務で運用することほど無謀な試みは無い 旧日本軍大本営方式でしか無い
641デフォルトの名無しさん
2025/05/10(土) 14:31:05.56ID:HZyfRGTg642デフォルトの名無しさん
2025/05/10(土) 14:39:47.45ID:tG+fugNq >>641
だからそれを含めて難しいって話でしょ
だからそれを含めて難しいって話でしょ
643デフォルトの名無しさん
2025/05/10(土) 16:34:23.69ID:ngauQQ8E 話の逸れ方が大きくなってきたな
644デフォルトの名無しさん
2025/05/10(土) 16:38:29.08ID:iGSB8dlv 前から先人達がこのスレで、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") _
)
と。
で、何度かやり取りした結果、うまく出来まスた。
「どこで活かせるんだろう?」と思っていたけど、
今日初めて使ってみた。
もともとは、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") _
)
と。
で、何度かやり取りした結果、うまく出来まスた。
645デフォルトの名無しさん
2025/05/10(土) 18:59:33.45ID:Pq21kD+5 しねごみかす
646デフォルトの名無しさん
2025/05/10(土) 19:48:45.71ID:pekHwIHV >>644
どれくらい処理の重い作業か、帰りの組み方をしているのか私には分かりませんが、
テーブルデータの整形が終わった後、一区切りついた後、テーブル関数やリスト関数などで繰り返し作業保護(一般的なeach?)
どれくらい処理の重い作業か、帰りの組み方をしているのか私には分かりませんが、
テーブルデータの整形が終わった後、一区切りついた後、テーブル関数やリスト関数などで繰り返し作業保護(一般的なeach?)
647デフォルトの名無しさん
2025/05/10(土) 19:52:02.31ID:pekHwIHV >>646
を行う前に
必ず
List.Buffer Table.buffer を行うと(VBAの配列並にとは言いませんが)処理が劇的に早くなると思います。
私は2000行に6000行のTaxt.Containsをして結果をList.SelectやAnyTrueなどをしていますが、劇的に早くなりました。
を行う前に
必ず
List.Buffer Table.buffer を行うと(VBAの配列並にとは言いませんが)処理が劇的に早くなると思います。
私は2000行に6000行のTaxt.Containsをして結果をList.SelectやAnyTrueなどをしていますが、劇的に早くなりました。
648デフォルトの名無しさん
2025/05/10(土) 20:41:13.86ID:pekHwIHV VBAでセルの中の改行のある大量の文字列の中から目的の情報を抽出するという試みをやっていたのですが、最近になってやっと改行で区切って、1行にバラすという事に気がつきました。
これで無関係な文字列の行はフィルターできるし、視認性が劇的に改善したしで本当に楽になった。
データは必ず一行づつという当たり前を改めて知らされた。
これで無関係な文字列の行はフィルターできるし、視認性が劇的に改善したしで本当に楽になった。
データは必ず一行づつという当たり前を改めて知らされた。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」 [ぐれ★]
- 【テレビ】玉川徹「これ天災じゃなくて人災でしょ。責任どうするんだ」 日本のホテル、中国人観光客からのキャンセルが相次ぐ [冬月記者★]
- プーチン大統領「ウクライナ軍が撤退すれば戦闘は終わる」と主張 [どどん★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★10 [Ailuropoda melanoleuca★]
- 高市総理の「そんなことよりも」発言を釈明 木原官房長官「急いで話題転換する趣旨」 [ぐれ★]
- 【中国国防省】日本は戦争犯罪を悔い改め、憲法改正と軍備増強という危険な試みをただちに改めよと発信… [BFU★]
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★15
- 巨専】 ★2
- とらせん IP
- ハム専
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★14
- こいせん 全レス転載禁止
- すまん、俺の勝ちで良いか?
- 【高市悲報】中国、世界中に是非を問うwwwwwwwwwwwwwwwwwww [308389511]
- ほぼ全ての男性医は結婚しているが女医の半分は結婚してないという事実
- ぼくニートがTOKYOに住んで思ったこと書くね【吉祥寺】
- 冬眠って冬の間ずっと寝てるってこと?
- 何故、田中はメジャーなんだ
