• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数に取得した値をテキストボックスやコンボボックスに表示させた)

VBA初心者のための変数表示に関するエラー解決方法

このQ&Aのポイント
  • VBA初心者の方が変数に取得した値をテキストボックスやコンボボックスに表示させるために実装したコードで、「実行時エラー'13'; 型が一致しません。」というエラーが発生しています。
  • 同じような方法で他のテキストボックスには値が表示されることが確認されていますが、特定のテキストボックスに値を表示させる際にエラーが発生します。
  • エラーの原因は型の一致しない部分があるため、変数の型を確認し、正しい型に変換することでエラーを解決できる可能性があります。

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

  • ベストアンサー
  • laputart
  • ベストアンサー率34% (288/843)
回答No.2

ID = ID(2) 名前 = 名前(1) でエラーになります ID(2)という変数を宣言しているので ID が使えないのです。 Me!ID = ID(2)という事の出来ますが 混同しやすいので Dim XID(2) とか別の変数名を使う方が わかりやすいでしょう。 別回答 変数を使わずに直接フォームモジュールで データベースの値を取得する事も可能です。 Public Db As Database Public rs As Recordset で宣言しておいてから Private Sub 実行_Click() Set Db = CurrentDb Set rs = Db.OpenRecordset("Q_クエリ", dbOpenDynaset) rs.movefirst ID = rs!ID 名前 = rs!名前 End Sub

simple-t
質問者

補足

ありがとうございますm(__)m 表示しました!!そこで追加でお聞きしたいんですが、フォームで表示する際に何件かレコードがあるので、フォームの2件目にレコード2件目を、フォームの3件目に3個目のレコードをと言う風には出来ますでしょうか?

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 配列変数の名前とテキストボックスやコンボボックスの名前が同じなのはよくないと思います。 ID = ID(1) とした場合に、左辺の「ID」は配列変数と認識されているのではないでしょうか。 その場合、左辺が配列で、右辺が単独の変数なのでエラーになるのではないでしょうか? したがって、テキストボックスやコンボボックスの名前を変更するか、 Me!ID.Value = ID(1) のようにプロパティを付ければ、いいと思います。 「名前」の方も同様です。

simple-t
質問者

補足

返答ありがとうございます。名前も変えて試してみたのですが、やはり同じエラーが出ます。標準モジュールで実行している間はきれいに配列変数に値が代入されているのですが、それをフォームで使おうとするとそこで型が一致しないというエラーになるようです。

関連するQ&A