前提・実現したいこと
編集で使用するテキストボックス名を配列に代入し、
繰り返し処理にて、配列の値を使用したテキストボックスのプロパティ指定を実行しようとしています。
発生している問題・エラーメッセージ
繰り返し処理中に、withを使用して配列に代入したテキストボックスのプロパティ設定を行いたかったのですが、型が異なるそうです。
どのように修正すればWithが使用できますか?
VBA
1実行時エラー'13'型が一致しません。
該当のソースコード
VBA
1'『Module_Hiragana』という標準モジュールに記述しています。 2Public Sub Hiragana_Load() 3 Call Txt_Name 4 '整数型の変数を宣言し、初期値を格納する 5 Dim i, j, k, ken, a As Integer: ken = 0 6 'フォーム名用の変数を宣言し、フォーム名を格納する 7 Dim FormName(1) As Form: Set FormName(0) = Forms!F02_メイン!F02_1_サブ.Form 8 Set FormName(1) = Forms!F02_1_サブ.Form 9 'コントロール名用の変数を宣言する 10 Dim TxtName, SubForm, LaName, TxtName2 As String 11 'サブフォーム名を設定する 12 SubForm = "F02_1_入力画面" 13 '現在押されたボタンの文字コードを変数に格納する 14 Now(0) = Asc(Hiragana(0)) 15 16 '押されたボタンが『あ』~『の』の場合 17 If Now(0) <= -32052 Then 18 '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する 19 Hiragana(1) = 0: Hiragana(2) = No 20 '押されたボタンが『は』~『わ』の場合 21 Else 22 '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する 23 Hiragana(1) = Ha: Hiragana(2) = Wa 24 '分岐処理を終了する 25 End If 26 27 '処理開始行と処理終了行の初期値を-1とする 28 Hiragana(3) = -1: Hiragana(4) = -1 29 '処理開始行と処理終了行を検索する 30 For i = Hiragana(1) To Hiragana(2) 31 '押されたボタンと最初に一致した場合 32 If Now(0) <> Asc(Stock(i, 3)) And Now(0) = Asc(Stock(i, 3)) Then 33 '現在参照中の行番号を変数に格納する(処理開始行番号) 34 Hiragana(3) = i 35 '押されたボタンと最後に一致した場合 36 ElseIf Now(0) = Asc(Stock(i, 3)) And Now(0) <> Asc(Stock(i + 1, 3)) Then 37 '現在参照中の行番号を変数に格納する(処理終了行番号) 38 Hiragana(4) = i 39 '繰り返し処理から強制離脱する 40 Exit For 41 '分岐処理を終了する 42 End If 43 '繰り返し処理に戻る 44 Next 45 46 '処理を実施する行のあいだ繰り返す 47 For i = Hiragana(3) To Hiragana(4) 48 '処理を実施する列のあいだ繰り返す 49 For j = 0 To 9 50 '省略記述を開始する 51 'この行で型不一致のエラーが出ます。 52 With FormName(0).Controls(TxtName(ken, j)) 53 'テキストボックスを画面に表示し、編集可能状態にする 54 .Visible = True: .Enabled = True: Locked = False 55 '貯蔵品配列の列番号が3 ・ 5以外の場合 56 If j <> 2 And j <> 4 Then 57 '貯蔵品配列の情報をテキストボックスに出力する 58 .Visible = Stock(i, j + 1) 59 '貯蔵品配列の列番号が3 ・ 5の場合 60 Else 61 .Visible = "" 62 End If 63 '省略記述を終了する 64 End With 65 '繰り返し処理に戻る 66 Next 67 '繰り返し処理に戻る 68 Next 69 '親フォームの水平と垂直のスクロールバーを表示する 70 FormName(1).ScrollBars = 3 71 '現在の行数を変数に格納する 72 TxtVisible = i - 1 73 '現在の画面に表示している行が30行未満の場合 74 If TxtVisible < 30 Then 75 '現在の画面に表示している行が10行未満の場合 76 If TxtVisible <= 10 Then 77 '親フォームのスクロールバーを水平方向だけにする 78 FormName(1).ScrollBars = 1 79 '分岐処理を終了する 80 End If 81 '30行目まで繰り返す 82 For i = TxtVisible + 1 To 30 83 '10列分繰り返す 84 For j = 0 To 9 85 'テキストボックスを非表示にする 86 FormName(0).Controls(TxtName(i, j)).Visible = False 87 '繰り返し処理に戻る 88 Next 89 '繰り返し処理に戻る 90 Next 91 '分岐処理を終了する 92 End If 93End Sub
VBA
1'『Module_Txt』という標準モジュールに記述しています。 2Public Sub Txt_Name() 3'『F02_1_サブ』というサブフォームのテキストボックス名を変数に格納する処理 4 'カウント用変数を宣言する 5 Dim i, j, moji As Integer 6 '行数分繰り返す 7 For i = 0 To 29 8 LaName(i) = "La_a" & i + 1 9 '文字コードを98『b』にセットする 10 moji = 98 11 '列数分繰り返す 12 For j = 0 To 9 13 'テキストボックス名を変数に格納する 14 TxtName(i, j) = "Txt_" & Chr(moji) & i + 1 15 '文字コードを加算する『b → c → d → e …』 16 moji = moji + 1 17 Next 18 Next 19End Sub
VBA
1'『F02_3_ひらがなボタン』という名称のサブフォームに設置しているボタンで動作します。 2Private Sub Img_A_Click() 3 DoCmd.OpenForm "F02_1_入力画面", acNormal, , , acFormEdit, acHidden 4 '『あ』ボタンが押されたことを変数に記録する 5 Hiragana(0) = "あ" 6 'ひらがな処理に移動する 7 Call Hiragana_Load 8End Sub 9 10Private Sub Img_E_Click() 11 '『え』ボタンが押されたことを変数に記録する 12 Hiragana(0) = "え" 13 'ひらがな処理に移動する 14 Call Hiragana_Load 15End Sub 16 17Private Sub Img_I_Click() 18 '『い』ボタンが押されたことを変数に記録する 19 Hiragana(0) = "い" 20 'ひらがな処理に移動する 21 Call Hiragana_Load 22End Sub 23 24Private Sub Img_No_Click() 25 Hiragana(0) = "の" 26 Call Hiragana_Load 27End Sub 28 29Private Sub Img_O_Click() 30 '『お』ボタンが押されたことを変数に記録する 31 Hiragana(0) = "お" 32 'ひらがな処理に移動する 33 Call Hiragana_Load 34End Sub 35 36Private Sub Img_U_Click() 37 '『う』ボタンが押されたことを変数に記録する 38 Hiragana(0) = "う" 39 'ひらがな処理に移動する 40 Call Hiragana_Load 41End Sub
「FormName.Controls((TxtName(i,j))」にてカッコの数が不一致のように見えますが。コピペミスでしょうか??
回答2件
あなたの回答
tips
プレビュー