• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBのクラスの利用)

VBのクラスを使ったTextBoxへの文字表示方法は?

このQ&Aのポイント
  • VBの初心者がクラスを使ってTextBoxに文字を表示させる方法を教えてください。
  • 具体的には、FormにTextBoxとコマンドボタンを配置し、ボタンクリックでTextBoxに文字を表示させる方法です。
  • 現在、引数の型が違うというエラーメッセージが表示されており、解決方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#5584
noname#5584
回答No.1

> obj.kakikomi (Text1) 間違えやすいところですが、引数が括弧で括られているため、上記の構文は、 Call obj.kakikomi((Text1)) と同義になり、更に、 Call obj.kakikomi(Text1.Text) と同義となります。 つまり、TextBoxへの参照が渡されているのではなく、TextBox.Text (つまり、文字列) が渡されていることになります。 このことは、以下の方法で確認できます。 WriteA.kakikomi メソッドの引数を TextA As TextBox   ↓ TextA As Variant に変更 (バリアントならどんな引数を受け入れてもエラーとならない) し、メソッドの最初の1行に Call MsgBox(TypeName(TextA)) を追加。 ( 実行すると、"String"と表示されるはずです ) という訳で、正しい記述は、 (1) obj.kakikomi Text1 (2) Call obj.kakikomi(Text1) のどちらかです。 ※ TextA を Variant に変更するのは、意図しない型をTypeName関数で検知する目的です。言うまでもなく、一般論としてはVariant型の使用は推奨されません。 テスト結果に納得されたら、元通りTextBox型に戻してください。

n4bqv
質問者

お礼

ありがとうございました。obj.kakikomi Text1でうまくいきました。この回答を見る前に、呼び出し側で引数なしにして(obj.kakikomi)メソッド内部でForm1.Text1.Text="ABC"というふうにしていました。

その他の回答 (1)

noname#5584
noname#5584
回答No.2

No.2を要約すると、「引数を ( ) で括ると値渡しになる」ということです。 対象となる引数がオブジェクトの場合、アドレス (ポインタ) のコピーではなく、デフォルトプロパティの値がコピーされて渡されるので、間違えやすいところです。