advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 14716 for VBA�������������� (0.003 sec.)
[[20230331164541]]
#score: 3409
@digest: 2316ee0cbc0fee4c6ff7d4aa0f931254
@id: 93899
@mdate: 2023-04-04T09:36:01Z
@size: 4350
@type: text/plain
#keywords: initialization (23246), イニ (22657), chatgpt (20768), possible (18595), parameters (18278), ニシ (15910), overflow (15602), according (14647), jjjjjj (14536), ャラ (13889), myclass (13259), creating (12851), stack (10139), ズ時 (10014), class (9939), 化時 (8479), シャ (5930), ス化 (5884), クラ (5196), 引数 (4037), ラス (3899), initialize (3058), トプ (2932), を渡 (2765), class1 (2716), ラク (2594), 渡す (2552), ンス (2321), に引 (2270), クタ (2097), イズ (1897), ライ (1623)
『ChatGPTがVBAでクラスのイニシャライズに引数は設定できるといいますが本当ですか?』(jjjjjj)
VBAでクラスのイニシャライズに引数を設定するとエラーになるので、『VBA クラス イニシャライズ 引数』で検索するとイニシャライズに引数は渡せないという結論のページばかりでてきます。 しかし、ChatGPTに『VBAではコンストラクタに引数を渡すことができない。ということで間違いないですか?』と聞くと、 VBA においては、コンストラクタという形式的な概念はありません。代わりに、クラスのイニシャライズ時に Class_Initialize イベントプロシージャを使用して、クラスの初期化処理を実行します。クラスのイニシャライズ時に引数を渡すことはできますが、明示的に宣言する必要があります。具体的には、Class_Initialize イベントプロシージャの引数として宣言することができます。以下は、引数を渡す場合の例です。 vbnet Copy code ' MyClass クラスの定義 Private m_value As Integer Private Sub Class_Initialize(ByVal value As Integer) m_value = value End Sub ' クラスのインスタンス化と初期化 Dim myObj As New MyClass(123) このように、Class_Initialize イベントプロシージャの引数に渡したい値を指定し、クラスのインスタンス化時に引数を渡すことができます。ただし、注意点としては、クラスのインスタンス化時に引数を渡す場合は、必ず Class_Initialize イベントプロシージャの引数として宣言する必要があります。 と、サンプル付きで返してきますが、いまいち理解できていないのかうまくいきません。 実際のところ、クラスのイニシャライズに引数は設定できるのでしょうか? < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- できないです。 コンパイルすらできないので、自分で試してください。 (稲葉) 2023/03/31(金) 17:10:10 ---- ググったり色々試しても無理だったのにChatGPTは何回聞いても明示したらできるの一点張りだったので詳しい人が多そうなここで聞いてみたしだいです。 稲葉さんご返信ありがとうございました。 (jjjjjj) 2023/03/31(金) 17:18:51 ---- 無理やり参照させることはできるけど・・・ 'ThisWorkBookモジュール Public con As String 'Class1モジュール Private Sub Class_Initialize() MsgBox ThisWorkbook.con End Sub '標準モジュール Sub test() ThisWorkbook.con = "test" Dim mycls As Class1 Set mycls = New Class1 End Sub ChatGPTに限らず、自分の知識がないとAIって使いこなせないですよね。 (稲葉) 2023/03/31(金) 17:29:58 ---- 「エクセルVBAで、あるクラスをイニシャライズするとき、引数を渡せますか?」 と EdgeのBingで興味本位に聞いてみたら、こんなのが返ってきました。 According to a Stack Overflow post, it is not possible to pass parameters to a class at initialization time in VBA. However, you can use a workaround by creating a public method that takes arguments and then call it after creating an instance of the class. Here is an example of how you can do this: ' Class module Private m_Name As String Public Sub Init(ByVal Name As String) m_Name = Name End Sub ' Standard module Sub Test() Dim obj As New MyClass obj.Init "John" End Sub ※Stack Overflowと言うQ&Aサイトに9年前に上がった質問と同趣旨だったので、 そこの回答をまんま拝借してきたらしい。 (初めはAIがコードを創作したのかと思ってビックリした。) (まぁ、多かれ少なかれ、やっていることはそんな類のもんなのかもです) (半平太) 2023/03/31(金) 23:52:59 ---- そういえばBingもopen ai導入してましたね なんだかんだここの回答者がやってる事を検証吹っ飛ばしてやってるようなもんなんですかね (稲葉) 2023/04/01(土) 06:02:52 ---- それにしても、ChatGPTの回答が「結論としては」お粗末すぎますよね。 そこで、そっちにも同じ質問をしてみましたが、やはり 「はい、Excel VBAのクラスには引数を渡すことができます。」 と返してきました。そこで、 「According to a Stack Overflow post、it is not possible to pass parameters to a class at initialization time in VBA. Do you insist the comment is incorrect ?」 と訊いてみた。すると 「I apologize for the confusion in my previous answer. You are correct that it is not possible to pass parameters to a class at initialization time in VBA.・・・」 と謝ってきました。 さて、彼はこの経験を学習して、今後、同種質問があった場合、正答するのかどうか? ChatGPT「3」なので、2021年9月以前の経験にないから、同じ誤答をするんですかね。 (半平太) 2023/04/01(土) 08:32:38 ---- なるほど。 みなさま検証とご意見ありがとうございました。 (jjjjjj) 2023/04/04(火) 17:27:49 ---- https://00m.in/U0HPn (A) 2023/04/04(火) 18:36:01 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202303/20230331164541.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97009 documents and 608121 words.

訪問者:カウンタValid HTML 4.01 Transitional