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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 空白のセルを変更しようとした時(アクティブセル)に インプットボックスを5回出す インプットボックス 1 2023/03/14 11:01
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
エクセルで最小値から0を除く方法
-
えfor文とか使っちゃう時点で時...
-
ArrayListの初期値に二次元配列...
-
VBA 1次元配列を2次元に追加する
-
VBAで配列をまるごとコピー
-
for each の現在の配列ポインタ...
-
順列の作成
-
excel2010 VBAの修正をご指導い...
-
VBA:配列の中で文字列が何番目...
-
配列変数の添字が範囲外ですと...
-
Excel2003 条件付き中央値
-
VB6.0の配列に使用する「=」の意味
-
2つ以上の変数を比較して最大数...
-
《エクセル2000》A列・B列の商...
-
FORTRANのCOMMON文
-
Excel-VBAの配列「Public Const...
-
fortranのwrite文について
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
ListViewで、非表示列って作れ...
-
for each の現在の配列ポインタ...
-
配列変数の添字が範囲外ですと...
-
VBのFunctionで、配列を引数...
-
VB6 配列を初期化したい
-
2次元動的配列の第一引数のみを...
-
Excel-VBAの配列「Public Const...
-
配列内の内容を全て表示する方法
-
Dim は何の略ですか?
-
配列を任意の数値で埋める方法
-
VLOOKUP関数で、一番下...
-
アルゴリズム、配列のフローチ...
-
verilogで配列の任意の8bitを取...
-
えfor文とか使っちゃう時点で時...
-
VBA Match関数の限界
おすすめ情報
mike32さま、回答ありがとうございました。
いろいろ検証してみた結果、普通のComboBoxならValueすらなくともうまくいくのですが、ルックアップ列を参照する複数選択可のComboBoxの場合はTypeMismatchのエラーが出ていることが分かりました。このタイプのComboBoxの場合には&でつなげてもValueをつけてもAs StringでもTypeMismatchエラーが出ます。この場合のトラブルシュートはネットでどこにも見当たりません。さらにmike32さまのお知恵を拝借できれば大変助かります。宜しくお願いします。