Access 2007 で入力フォームを作成しています。
フォームにあるコントロール(テキストボックスだったりコンボボックスだったり)をつなげてフォーム上にある非連結のテキストボックスに表示させて、入力確認を一つのセルでできるようにしようとしているのですが、MyVar = TxtFinal_Decision & TxtTagsの行でTypeMismatchのエラーが出ます。いろいろやってみたのですが、MyVar=以降を&でつなぐとうまくいきません。解決法を教えていただけますでしょうか?
以下今のコードです。
Private Sub Review_Click()
Dim MyVar As Variant
Dim TxtFinal_Decision As Variant
Dim TxtTags As Variant
Set TxtFinal_Decision = Me.Final_Decision
Set TxtTags = Me.Tags
MyVar = TxtFinal_Decision & TxtTags
Me.PreCheckBox = MyVar
No.2ベストアンサー
- 回答日時:
No.1です。
複数選択可の場合、まず、Variant型でフィールドを取得します。
何も選択されていない場合は、Nullが入り、
何か選択されている場合は、配列が入ります。
そのため、IF文でIsArray()を使用して、配列かどうかを判定し、配列ではなかった場合は何も選択されていないので、
結合しません。
For文で、配列の最初(0)から配列の最後(選択されている数なので、Ubound()を使用して取得しています)を
MyVarに結合しています。
Private Sub Review_Click()
Dim MyVar As String
Dim TxtFinal_Decision As String
Dim VarTags As Variant
Dim i As Long
TxtFinal_Decision = Me.Final_Decision.Value
VarTags = Me.Tags
MyVar = TxtFinal_Decision
'1つでも選択されている場合
If IsArray(VarTags) Then
'選択されている分だけループ
For i = 0 To UBound(VarTags)
MyVar = MyVar & VarTags(i)
Next
End If
Me.PreCheckBox.Value = MyVar
End Sub
No.1
- 回答日時:
テキストボックスでもコンボボックスでも、Me.フィールド名.ValueでString型かVariant型の変数に
入れ、それを結合することでエラーが解消されます。
Private Sub Review_Click()
Dim MyVar As String
Dim TxtFinal_Decision As String
Dim TxtTags As String
TxtFinal_Decision = Me.Final_Decision.Value
TxtTags = Me.Tags.Value
MyVar = TxtFinal_Decision & TxtTags
Me.PreCheckBox.Value = MyVar
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
for each の現在の配列ポインタ...
-
特定のセル範囲で4文字以上入力...
-
MATLABにて場合分け関数を定義...
-
配列変数の添字が範囲外ですと...
-
subの配列引数をoptionalで使う...
-
ListViewで、非表示列って作れ...
-
VB6 配列を初期化したい
-
verilogで配列の任意の8bitを取...
-
エクセルで最小値から0を除く方法
-
VBAで多次元配列のインデックス...
-
VBA 1次元配列を2次元に追加する
-
Dim は何の略ですか?
-
Excel-VBAで内臓のMINVERSE,MM...
-
《エクセル2000》A列・B列の商...
-
二次配列のqsortですが
-
[VB.net] StringからByte配列へ...
-
2次元動的配列の第一引数のみを...
-
配列内の内容を全て表示する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
特定のセル範囲で4文字以上入力...
-
VB6 配列を初期化したい
-
subの配列引数をoptionalで使う...
-
VBA 1次元配列を2次元に追加する
-
ListViewで、非表示列って作れ...
-
for each の現在の配列ポインタ...
-
配列変数の添字が範囲外ですと...
-
エクセルで最小値から0を除く方法
-
2次元動的配列の第一引数のみを...
-
VBのFunctionで、配列を引数...
-
配列を任意の数値で埋める方法
-
《エクセル2000》A列・B列の商...
-
Excel VBA配列をFunctionに渡す
-
VBA Match関数の限界
-
AES暗号にて、AES_set_encrypt_...
-
VBAで近似曲線の係数取得
-
Array配列の末尾に追加したい。
-
配列内の内容を全て表示する方法
おすすめ情報
mike32さま、回答ありがとうございました。
いろいろ検証してみた結果、普通のComboBoxならValueすらなくともうまくいくのですが、ルックアップ列を参照する複数選択可のComboBoxの場合はTypeMismatchのエラーが出ていることが分かりました。このタイプのComboBoxの場合には&でつなげてもValueをつけてもAs StringでもTypeMismatchエラーが出ます。この場合のトラブルシュートはネットでどこにも見当たりません。さらにmike32さまのお知恵を拝借できれば大変助かります。宜しくお願いします。