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+P512デフォルトの名無しさん
2025/04/29(火) 00:38:17.02ID:Cio0Z7DT >>511
ざっくり例えると、1件ずつ処理すると元データどおり
みかん 150円
バナナ 200円
りんご 250円
となるところがCopyFromRecordSetだと
みかん 150円
みかん 200円
りんご 250円
になる感じかな もちろん今回が初めてのケース
ざっくり例えると、1件ずつ処理すると元データどおり
みかん 150円
バナナ 200円
りんご 250円
となるところがCopyFromRecordSetだと
みかん 150円
みかん 200円
りんご 250円
になる感じかな もちろん今回が初めてのケース
513デフォルトの名無しさん
2025/04/29(火) 03:39:13.13ID:uCA5xnZY514デフォルトの名無しさん
2025/04/29(火) 05:46:13.95ID:DUP3Wr3v 重複したデータでなければプログラムに問題がありそうだけどなぁ
ザックリすぎてわっかんねぇなぁ
ザックリすぎてわっかんねぇなぁ
515デフォルトの名無しさん
2025/04/29(火) 05:58:53.59ID:NELjOoG5 質問の間抜けな感じからして凡ミスやな
516デフォルトの名無しさん
2025/04/29(火) 06:09:56.99ID:DUP3Wr3v スゲー適当なんだけど違いが1件ってことはEOFが入ってるとかそんな感じかな?
517デフォルトの名無しさん
2025/04/29(火) 09:40:01.77ID:Cio0Z7DT >>513
同じデータをAccessにインポートして実行→再現せず
SQLiteで検索するデータ量を減らす→再現せず
で、よく見たら256レコード目で検索条件(SQL文)変えても必ず発生することがわかった
SQLite3 ODBC DriverからADODBでデータ取得してCopyFromRecordSetでデータ貼付けすると起こる
データ取得方法は同じでも1レコード1カラムずつデータ貼っていくと起こらない
ダミーデータ作って色々試してみるかな
同じデータをAccessにインポートして実行→再現せず
SQLiteで検索するデータ量を減らす→再現せず
で、よく見たら256レコード目で検索条件(SQL文)変えても必ず発生することがわかった
SQLite3 ODBC DriverからADODBでデータ取得してCopyFromRecordSetでデータ貼付けすると起こる
データ取得方法は同じでも1レコード1カラムずつデータ貼っていくと起こらない
ダミーデータ作って色々試してみるかな
518デフォルトの名無しさん
2025/04/29(火) 09:48:33.61ID:cxg+2T2y >>517
元データの中に制御文字のようなゴミがあるとか、取得したものを表示する過程でミスっている可能性もある
ダミーで試すか、文字コードをバイナリ値でチェックするとかだな
あと256番目って数値がbyte扱いで0になってないかとか
元データの中に制御文字のようなゴミがあるとか、取得したものを表示する過程でミスっている可能性もある
ダミーで試すか、文字コードをバイナリ値でチェックするとかだな
あと256番目って数値がbyte扱いで0になってないかとか
519デフォルトの名無しさん
2025/04/29(火) 09:57:59.04ID:LEbvev28 昔Oracleのバグで1件くらい少ないレコードセット返ってくるバグ思い出した
520デフォルトの名無しさん
2025/04/29(火) 11:15:10.56ID:Cio0Z7DT ダミーでも再現した
SQLite側のフィールドがTEXT型の場合のみ、256レコード目の内容が255レコード目と同じになる
INTEGER方だと起らない
SQLite側のフィールドがTEXT型の場合のみ、256レコード目の内容が255レコード目と同じになる
INTEGER方だと起らない
521デフォルトの名無しさん
2025/04/29(火) 11:17:05.94ID:Cio0Z7DT こんな感じ SQLiteに日付型は無いのでTEXT扱い
254 test254 2025/06/11 1253
255 test255 2025/06/12 1254
256 test255 2025/06/12 1255
257 test257 2025/06/14 1256
254 test254 2025/06/11 1253
255 test255 2025/06/12 1254
256 test255 2025/06/12 1255
257 test257 2025/06/14 1256
522デフォルトの名無しさん
2025/04/29(火) 12:21:37.37ID:TmvDscRd 属人的と言うなら車間距離だな
ExcelやVBA利用者には車間距離詰める馬鹿が多過ぎる
総じて「だろう運転」ばかりしていて「かもしれない運転」なんて眼中に無い
そもそもMicrosoft開発陣が「だろう運転」を推奨してる節がある
ExcelやVBA利用者には車間距離詰める馬鹿が多過ぎる
総じて「だろう運転」ばかりしていて「かもしれない運転」なんて眼中に無い
そもそもMicrosoft開発陣が「だろう運転」を推奨してる節がある
523デフォルトの名無しさん
2025/04/29(火) 12:25:39.07ID:Cio0Z7DT 連投失礼、256だけじゃなく512,768,1024も同じ現象だった
524デフォルトの名無しさん
2025/04/29(火) 13:23:59.14ID:lJszgH0z ODBCのバージョンと定義がわかる画面貼っとけ
525デフォルトの名無しさん
2025/04/29(火) 14:30:57.99ID:AuvQCcIn 久しぶりに面白そうな話題じゃん
自己解決しちゃっても是非原因教えてね
自己解決しちゃっても是非原因教えてね
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
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:Mpe85ZPY528デフォルトの名無しさん
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
で正常になった お騒がせしました
早速自決w
Set dbrs = New ADODB.Recordset
dbrs.CursorLocation = adUseClient
dbrs.Open "select * from testtbl", dbcn, adOpenStatic, adLockReadOnly
で正常になった お騒がせしました
529デフォルトの名無しさん
2025/04/29(火) 16:47:03.16ID:EclpVRbh ちょうど総合相談スレでも
3時間くらい前に発生した本日の事案への弔辞
> 介錯人は頼んだのかな
> 成仏しろよ
3時間くらい前に発生した本日の事案への弔辞
> 介錯人は頼んだのかな
> 成仏しろよ
530デフォルトの名無しさん
2025/04/29(火) 16:58:21.16ID:EclpVRbh 「自決」の辞書上のもう一つの意味、民族自決主義の「自決」は
「自分の意志で自分のことを決めること」だけど、
くだんの「自決する」の文脈は、意志うんぬんや決めるとかの流れはない。
なので、「問題を自分で解決した」という意味はならなさそう・・・
とマジレスしてみる
「自分の意志で自分のことを決めること」だけど、
くだんの「自決する」の文脈は、意志うんぬんや決めるとかの流れはない。
なので、「問題を自分で解決した」という意味はならなさそう・・・
とマジレスしてみる
531デフォルトの名無しさん
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だとならない
office2021だとCreateWindowEXで作ればvisual styleになるのにoffice2019だとならない
534デフォルトの名無しさん
2025/04/29(火) 23:44:21.62ID:jEUD8QFb 今頃になって列の行ごとの文字列のReplaceは、まず文字列をカンマでもなんでもいいから全部くっつけてひとまとめにして変数に代入して、Replace(文字列,検索文字,"")すれば一括で置き換えられるって理解したよ
そしてSplitで配列に戻して元通り
そしてSplitで配列に戻して元通り
535デフォルトの名無しさん
2025/04/30(水) 01:17:17.74ID:0P1GE/1d >>533
ComCtl32.DLLにリンクしてないからだと思う
ComCtl32.DLLにリンクしてないからだと思う
536デフォルトの名無しさん
2025/04/30(水) 03:14:35.45ID:IvfkHP7P >>534
たまたまデリミタと同じ文字(列)がデータにも含まれててExcelのバグだと騒ぐまでがセット
たまたまデリミタと同じ文字(列)がデータにも含まれててExcelのバグだと騒ぐまでがセット
537デフォルトの名無しさん
2025/04/30(水) 06:29:26.31ID:7AsrwtYN >>536
わかるわかる
わかるわかる
538デフォルトの名無しさん
2025/04/30(水) 06:54:36.59ID:TQaKmIw3539デフォルトの名無しさん
2025/04/30(水) 18:11:25.83ID:/xZzLlpB Range("A1:C10").Replace What:="置換前の文字", Replacement:="置換後の文字", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
ってchatgptさんが言ってます
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
ってchatgptさんが言ってます
540デフォルトの名無しさん
2025/04/30(水) 18:39:00.27ID:3/ALrefg Replaceメソッドはシートの検索/置換オプションも変更されるから嫌い
541デフォルトの名無しさん
2025/04/30(水) 19:34:30.68ID:Ypkgz0ac >>528
さんきゅ
さんきゅ
542デフォルトの名無しさん
2025/05/01(木) 10:16:05.61ID:NoOjVvyj 開発では作るだけでなく動作確認、評価、検証をきちんとやるのも大事なのじゃ
わざと異常を出して正しく異常が出るか、桁数やデータが大量だとどうなるかとか、日本語以外の環境でも動くとか
実際に動かして確認すると気づかなかった問題が見えてくるものだ
わざと異常を出して正しく異常が出るか、桁数やデータが大量だとどうなるかとか、日本語以外の環境でも動くとか
実際に動かして確認すると気づかなかった問題が見えてくるものだ
543デフォルトの名無しさん
2025/05/01(木) 10:51:14.04ID:/KCrsMZn テストが重要なのはもちろんだが、VBAerレベルではそもそもバグが出にくくテストケースを闇雲に増やさなくていい書き方というものも多少は勉強した方がよい
似た処理をいちいちコピペすればその分ミスは増えるし、プログラムに直行性がないとテストケースは無限に増える
似た処理をいちいちコピペすればその分ミスは増えるし、プログラムに直行性がないとテストケースは無限に増える
544デフォルトの名無しさん
2025/05/01(木) 11:52:17.40ID:nTiKCI2R >プログラムに直行性がないとテストケースは無限に増える
ほんそれ
直交性が無いのは言語の欠陥だと思う
ほんそれ
直交性が無いのは言語の欠陥だと思う
545デフォルトの名無しさん
2025/05/01(木) 13:39:51.25ID:yf6hHvtn x ほんそれ
o 本当にそれ
o 本当にそれ
546デフォルトの名無しさん
2025/05/01(木) 14:02:16.67ID:NoOjVvyj 問題ないですとか言ってたのに後になって実は確認してませんでした とか言う新人たまにいる
547デフォルトの名無しさん
2025/05/01(木) 15:05:48.78ID:my1nUwSm VBAで単体テスト、カバレージ100とか聞いたことないわ
あれ?ACCESSの納品物の評価ってどうやってたっけ……(もう忘れた)
あれ?ACCESSの納品物の評価ってどうやってたっけ……(もう忘れた)
548デフォルトの名無しさん
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+ 話がループしてるな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【滋賀】不良グループのメンバーの「タイマン」で17歳重体 殺人未遂容疑で岐阜市の19歳を逮捕 頭蓋骨骨折や脳挫傷、急性硬膜下血腫 ★2 [ぐれ★]
- 立憲・原口議員がキレキレ「日本にレアアース来なければ中国は精製できない」「“旧敵国条項”明らかなやりすぎ」 [少考さん★]
- 「おこめ券知られていない」農水省が説明会実施へ 「税金でおこめ券配ると、発行2団体に利益集中するのでは?」記者の問いに鈴木農水大臣 [ぐれ★]
- 【外交】中国大使館、自民党の石破茂前首相の発言「台湾は中国の一部。変えてはならない」をX投稿 産経 [1ゲットロボ★]
- 【プロ野球】巨人 オコエ瑠偉外野手が自由契約 [あずささん★]
- 長瀬智也 インスタで“意味深”連続投稿 「どうなるのかもわかっている」 [muffin★]
- 👊👊😅 👊👊😅 さかなーっ!🏡
- 【衝撃】去年の自民党総裁戦、高市は宣伝費に約8400万円もの巨額を使っていた ※この時勝利した石破は約40万円 [597533159]
- 【んな🏡】華金✨のんなたん🍬んなんなスレッドなのらよ🏰【ホロライブ】
- 中国「日本は高市発言を“言及しない”ことで誤魔化そうとしてるが、所詮その場しのぎの言い訳」 [834922174]
- 拷問官「小麦粉と野菜だけで飯をつくれ」👈どうする? [268718286]
- お茶会聯合自治政府
