teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードの修正

2019/11/24 12:27

投稿

Yoshikun_0945
Yoshikun_0945

スコア224

title CHANGED
File without changes
body CHANGED
@@ -12,24 +12,163 @@
12
12
 
13
13
  ### 該当のソースコード
14
14
 
15
- ```ここに言語名を入力
15
+ ```VBA
16
+ '『Module_Hiragana』という標準モジュールに記述しています。
16
- public TxtName(29,9) as string
17
+ Public Sub Hiragana_Load()
18
+ Call Txt_Name
19
+ '整数型の変数を宣言し、初期値を格納する
17
- dim moji as integer:moji = 98
20
+ Dim i, j, k, ken, a As Integer: ken = 0
18
- for i = 0 to 29
21
+ 'フォーム名用の変数を宣言し、フォーム名を格納する
19
- moji = 98
22
+ Dim FormName(1) As Form: Set FormName(0) = Forms!F02_メイン!F02_1_サブ.Form
20
- for j = 0 to 9
23
+ Set FormName(1) = Forms!F02_1_サブ.Form
24
+ 'コントロール名用の変数を宣言する
21
- TxtName(i,j) = "Txt_" & chr(moji) & i + 1
25
+ Dim TxtName, SubForm, LaName, TxtName2 As String
26
+ 'サブフォーム名を設定する
27
+ SubForm = "F02_1_入力画面"
28
+ '現在押されたボタンの文字コードを変数に格納する
29
+ Now(0) = Asc(Hiragana(0))
30
+
31
+ '押されたボタンが『あ』~『の』の場合
32
+ If Now(0) <= -32052 Then
33
+ '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する
34
+ Hiragana(1) = 0: Hiragana(2) = No
35
+ '押されたボタンが『は』~『わ』の場合
36
+ Else
37
+ '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する
38
+ Hiragana(1) = Ha: Hiragana(2) = Wa
39
+ '分岐処理を終了する
40
+ End If
41
+
42
+ '処理開始行と処理終了行の初期値を-1とする
43
+ Hiragana(3) = -1: Hiragana(4) = -1
44
+ '処理開始行と処理終了行を検索する
45
+ For i = Hiragana(1) To Hiragana(2)
46
+ '押されたボタンと最初に一致した場合
47
+ If Now(0) <> Asc(Stock(i, 3)) And Now(0) = Asc(Stock(i, 3)) Then
48
+ '現在参照中の行番号を変数に格納する(処理開始行番号)
22
- moji - moji + 1
49
+ Hiragana(3) = i
50
+ '押されたボタンと最後に一致した場合
51
+ ElseIf Now(0) = Asc(Stock(i, 3)) And Now(0) <> Asc(Stock(i + 1, 3)) Then
52
+ '現在参照中の行番号を変数に格納する(処理終了行番号)
53
+ Hiragana(4) = i
54
+ '繰り返し処理から強制離脱する
55
+ Exit For
56
+ '分岐処理を終了する
57
+ End If
58
+ '繰り返し処理に戻る
23
- next
59
+ Next
24
- next
25
60
 
61
+ '処理を実施する行のあいだ繰り返す
62
+ For i = Hiragana(3) To Hiragana(4)
63
+ '処理を実施する列のあいだ繰り返す
64
+ For j = 0 To 9
65
+ '省略記述を開始する
66
+    'この行で型不一致のエラーが出ます。
67
+ With FormName(0).Controls(TxtName(ken, j))
68
+ 'テキストボックスを画面に表示し、編集可能状態にする
69
+ .Visible = True: .Enabled = True: Locked = False
70
+ '貯蔵品配列の列番号が3 ・ 5以外の場合
71
+ If j <> 2 And j <> 4 Then
72
+ '貯蔵品配列の情報をテキストボックスに出力する
73
+ .Visible = Stock(i, j + 1)
74
+ '貯蔵品配列の列番号が3 ・ 5の場合
75
+ Else
76
+ .Visible = ""
77
+ End If
78
+ '省略記述を終了する
79
+ End With
80
+ '繰り返し処理に戻る
81
+ Next
82
+ '繰り返し処理に戻る
83
+ Next
84
+ '親フォームの水平と垂直のスクロールバーを表示する
85
+ FormName(1).ScrollBars = 3
86
+ '現在の行数を変数に格納する
87
+ TxtVisible = i - 1
88
+ '現在の画面に表示している行が30行未満の場合
89
+ If TxtVisible < 30 Then
90
+ '現在の画面に表示している行が10行未満の場合
91
+ If TxtVisible <= 10 Then
92
+ '親フォームのスクロールバーを水平方向だけにする
93
+ FormName(1).ScrollBars = 1
94
+ '分岐処理を終了する
95
+ End If
96
+ '30行目まで繰り返す
97
+ For i = TxtVisible + 1 To 30
98
+ '10列分繰り返す
99
+ For j = 0 To 9
100
+ 'テキストボックスを非表示にする
101
+ FormName(0).Controls(TxtName(i, j)).Visible = False
102
+ '繰り返し処理に戻る
103
+ Next
104
+ '繰り返し処理に戻る
105
+ Next
106
+ '分岐処理を終了する
107
+ End If
108
+ End Sub
109
+ ```
110
+
111
+ ```VBA
112
+ '『Module_Txt』という標準モジュールに記述しています。
113
+ Public Sub Txt_Name()
114
+ '『F02_1_サブ』というサブフォームのテキストボックス名を変数に格納する処理
115
+ 'カウント用変数を宣言する
116
+ Dim i, j, moji As Integer
117
+ '行数分繰り返す
26
- for i = 0 to 29
118
+ For i = 0 To 29
119
+ LaName(i) = "La_a" & i + 1
120
+ '文字コードを98『b』にセットする
121
+ moji = 98
122
+ '列数分繰り返す
27
- for j = 0 to 9
123
+ For j = 0 To 9
124
+ 'テキストボックス名を変数に格納する
125
+ TxtName(i, j) = "Txt_" & Chr(moji) & i + 1
28
- with FormName.Controls(TxtName(i,j))
126
+ '文字コードを加算する『b → c → d → e …』
29
- .enabled = true
30
- .locked = false
127
+ moji = moji + 1
31
- .visible = true
32
- end with
33
- next
128
+ Next
34
- next
129
+ Next
130
+ End Sub
131
+ ```
132
+ ```VBA
133
+ '『F02_3_ひらがなボタン』という名称のサブフォームに設置しているボタンで動作します。
134
+ Private Sub Img_A_Click()
135
+ DoCmd.OpenForm "F02_1_入力画面", acNormal, , , acFormEdit, acHidden
136
+ '『あ』ボタンが押されたことを変数に記録する
137
+ Hiragana(0) = "あ"
138
+ 'ひらがな処理に移動する
139
+ Call Hiragana_Load
140
+ End Sub
141
+
142
+ Private Sub Img_E_Click()
143
+ '『え』ボタンが押されたことを変数に記録する
144
+ Hiragana(0) = "え"
145
+ 'ひらがな処理に移動する
146
+ Call Hiragana_Load
147
+ End Sub
148
+
149
+ Private Sub Img_I_Click()
150
+ '『い』ボタンが押されたことを変数に記録する
151
+ Hiragana(0) = "い"
152
+ 'ひらがな処理に移動する
153
+ Call Hiragana_Load
154
+ End Sub
155
+
156
+ Private Sub Img_No_Click()
157
+ Hiragana(0) = "の"
158
+ Call Hiragana_Load
159
+ End Sub
160
+
161
+ Private Sub Img_O_Click()
162
+ '『お』ボタンが押されたことを変数に記録する
163
+ Hiragana(0) = "お"
164
+ 'ひらがな処理に移動する
165
+ Call Hiragana_Load
166
+ End Sub
167
+
168
+ Private Sub Img_U_Click()
169
+ '『う』ボタンが押されたことを変数に記録する
170
+ Hiragana(0) = "う"
171
+ 'ひらがな処理に移動する
172
+ Call Hiragana_Load
173
+ End Sub
35
174
  ```

1

2019/11/24 12:27

投稿

Yoshikun_0945
Yoshikun_0945

スコア224

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  for i = 0 to 29
27
27
  for j = 0 to 9
28
- with FormName.Controls((TxtName(i,j))
28
+ with FormName.Controls(TxtName(i,j))
29
29
  .enabled = true
30
30
  .locked = false
31
31
  .visible = true