質問編集履歴

2

コードの修正

2019/11/24 12:27

投稿

Yoshikun_0945
Yoshikun_0945

スコア224

test CHANGED
File without changes
test CHANGED
@@ -26,44 +26,322 @@
26
26
 
27
27
 
28
28
 
29
- ```ここに言語名を入力
30
-
31
- public TxtName(29,9) as string
32
-
33
- dim moji as integer:moji = 98
34
-
35
- for i = 0 to 29
36
-
37
- moji = 98
38
-
39
- for j = 0 to 9
40
-
41
- TxtName(i,j) = "Txt_" & chr(moji) & i + 1
42
-
43
- moji - moji + 1
44
-
45
- next
46
-
47
- next
48
-
49
-
50
-
51
- for i = 0 to 29
52
-
53
- for j = 0 to 9
54
-
55
- with FormName.Controls(TxtName(i,j))
56
-
57
- .enabled = true
58
-
59
- .locked = false
60
-
61
- .visible = true
62
-
63
- end with
64
-
65
- next
66
-
67
- next
29
+ ```VBA
30
+
31
+ '『Module_Hiragana』という標準モジュールに記述しています。
32
+
33
+ Public Sub Hiragana_Load()
34
+
35
+ Call Txt_Name
36
+
37
+ '整数型の変数を宣言し、初期値を格納する
38
+
39
+ Dim i, j, k, ken, a As Integer: ken = 0
40
+
41
+ 'フォーム名用の変数を宣言し、フォーム名を格納する
42
+
43
+ Dim FormName(1) As Form: Set FormName(0) = Forms!F02_メイン!F02_1_サブ.Form
44
+
45
+ Set FormName(1) = Forms!F02_1_サブ.Form
46
+
47
+ 'コントロール名用の変数を宣言する
48
+
49
+ Dim TxtName, SubForm, LaName, TxtName2 As String
50
+
51
+ 'サブフォーム名を設定する
52
+
53
+ SubForm = "F02_1_入力画面"
54
+
55
+ '現在押されたボタンの文字コードを変数に格納する
56
+
57
+ Now(0) = Asc(Hiragana(0))
58
+
59
+
60
+
61
+ '押されたボタンが『あ』~『の』の場合
62
+
63
+ If Now(0) <= -32052 Then
64
+
65
+ '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する
66
+
67
+ Hiragana(1) = 0: Hiragana(2) = No
68
+
69
+ '押されたボタンが『は』~『わ』の場合
70
+
71
+ Else
72
+
73
+ '検索開始のレコード(行)番号と検索終了のレコード(行)番号を変数に格納する
74
+
75
+ Hiragana(1) = Ha: Hiragana(2) = Wa
76
+
77
+ '分岐処理を終了する
78
+
79
+ End If
80
+
81
+
82
+
83
+ '処理開始行と処理終了行の初期値を-1とする
84
+
85
+ Hiragana(3) = -1: Hiragana(4) = -1
86
+
87
+ '処理開始行と処理終了行を検索する
88
+
89
+ For i = Hiragana(1) To Hiragana(2)
90
+
91
+ '押されたボタンと最初に一致した場合
92
+
93
+ If Now(0) <> Asc(Stock(i, 3)) And Now(0) = Asc(Stock(i, 3)) Then
94
+
95
+ '現在参照中の行番号を変数に格納する(処理開始行番号)
96
+
97
+ Hiragana(3) = i
98
+
99
+ '押されたボタンと最後に一致した場合
100
+
101
+ ElseIf Now(0) = Asc(Stock(i, 3)) And Now(0) <> Asc(Stock(i + 1, 3)) Then
102
+
103
+ '現在参照中の行番号を変数に格納する(処理終了行番号)
104
+
105
+ Hiragana(4) = i
106
+
107
+ '繰り返し処理から強制離脱する
108
+
109
+ Exit For
110
+
111
+ '分岐処理を終了する
112
+
113
+ End If
114
+
115
+ '繰り返し処理に戻る
116
+
117
+ Next
118
+
119
+
120
+
121
+ '処理を実施する行のあいだ繰り返す
122
+
123
+ For i = Hiragana(3) To Hiragana(4)
124
+
125
+ '処理を実施する列のあいだ繰り返す
126
+
127
+ For j = 0 To 9
128
+
129
+ '省略記述を開始する
130
+
131
+    'この行で型不一致のエラーが出ます。
132
+
133
+ With FormName(0).Controls(TxtName(ken, j))
134
+
135
+ 'テキストボックスを画面に表示し、編集可能状態にする
136
+
137
+ .Visible = True: .Enabled = True: Locked = False
138
+
139
+ '貯蔵品配列の列番号が3 ・ 5以外の場合
140
+
141
+ If j <> 2 And j <> 4 Then
142
+
143
+ '貯蔵品配列の情報をテキストボックスに出力する
144
+
145
+ .Visible = Stock(i, j + 1)
146
+
147
+ '貯蔵品配列の列番号が3 ・ 5の場合
148
+
149
+ Else
150
+
151
+ .Visible = ""
152
+
153
+ End If
154
+
155
+ '省略記述を終了する
156
+
157
+ End With
158
+
159
+ '繰り返し処理に戻る
160
+
161
+ Next
162
+
163
+ '繰り返し処理に戻る
164
+
165
+ Next
166
+
167
+ '親フォームの水平と垂直のスクロールバーを表示する
168
+
169
+ FormName(1).ScrollBars = 3
170
+
171
+ '現在の行数を変数に格納する
172
+
173
+ TxtVisible = i - 1
174
+
175
+ '現在の画面に表示している行が30行未満の場合
176
+
177
+ If TxtVisible < 30 Then
178
+
179
+ '現在の画面に表示している行が10行未満の場合
180
+
181
+ If TxtVisible <= 10 Then
182
+
183
+ '親フォームのスクロールバーを水平方向だけにする
184
+
185
+ FormName(1).ScrollBars = 1
186
+
187
+ '分岐処理を終了する
188
+
189
+ End If
190
+
191
+ '30行目まで繰り返す
192
+
193
+ For i = TxtVisible + 1 To 30
194
+
195
+ '10列分繰り返す
196
+
197
+ For j = 0 To 9
198
+
199
+ 'テキストボックスを非表示にする
200
+
201
+ FormName(0).Controls(TxtName(i, j)).Visible = False
202
+
203
+ '繰り返し処理に戻る
204
+
205
+ Next
206
+
207
+ '繰り返し処理に戻る
208
+
209
+ Next
210
+
211
+ '分岐処理を終了する
212
+
213
+ End If
214
+
215
+ End Sub
68
216
 
69
217
  ```
218
+
219
+
220
+
221
+ ```VBA
222
+
223
+ '『Module_Txt』という標準モジュールに記述しています。
224
+
225
+ Public Sub Txt_Name()
226
+
227
+ '『F02_1_サブ』というサブフォームのテキストボックス名を変数に格納する処理
228
+
229
+ 'カウント用変数を宣言する
230
+
231
+ Dim i, j, moji As Integer
232
+
233
+ '行数分繰り返す
234
+
235
+ For i = 0 To 29
236
+
237
+ LaName(i) = "La_a" & i + 1
238
+
239
+ '文字コードを98『b』にセットする
240
+
241
+ moji = 98
242
+
243
+ '列数分繰り返す
244
+
245
+ For j = 0 To 9
246
+
247
+ 'テキストボックス名を変数に格納する
248
+
249
+ TxtName(i, j) = "Txt_" & Chr(moji) & i + 1
250
+
251
+ '文字コードを加算する『b → c → d → e …』
252
+
253
+ moji = moji + 1
254
+
255
+ Next
256
+
257
+ Next
258
+
259
+ End Sub
260
+
261
+ ```
262
+
263
+ ```VBA
264
+
265
+ '『F02_3_ひらがなボタン』という名称のサブフォームに設置しているボタンで動作します。
266
+
267
+ Private Sub Img_A_Click()
268
+
269
+ DoCmd.OpenForm "F02_1_入力画面", acNormal, , , acFormEdit, acHidden
270
+
271
+ '『あ』ボタンが押されたことを変数に記録する
272
+
273
+ Hiragana(0) = "あ"
274
+
275
+ 'ひらがな処理に移動する
276
+
277
+ Call Hiragana_Load
278
+
279
+ End Sub
280
+
281
+
282
+
283
+ Private Sub Img_E_Click()
284
+
285
+ '『え』ボタンが押されたことを変数に記録する
286
+
287
+ Hiragana(0) = "え"
288
+
289
+ 'ひらがな処理に移動する
290
+
291
+ Call Hiragana_Load
292
+
293
+ End Sub
294
+
295
+
296
+
297
+ Private Sub Img_I_Click()
298
+
299
+ '『い』ボタンが押されたことを変数に記録する
300
+
301
+ Hiragana(0) = "い"
302
+
303
+ 'ひらがな処理に移動する
304
+
305
+ Call Hiragana_Load
306
+
307
+ End Sub
308
+
309
+
310
+
311
+ Private Sub Img_No_Click()
312
+
313
+ Hiragana(0) = "の"
314
+
315
+ Call Hiragana_Load
316
+
317
+ End Sub
318
+
319
+
320
+
321
+ Private Sub Img_O_Click()
322
+
323
+ '『お』ボタンが押されたことを変数に記録する
324
+
325
+ Hiragana(0) = "お"
326
+
327
+ 'ひらがな処理に移動する
328
+
329
+ Call Hiragana_Load
330
+
331
+ End Sub
332
+
333
+
334
+
335
+ Private Sub Img_U_Click()
336
+
337
+ '『う』ボタンが押されたことを変数に記録する
338
+
339
+ Hiragana(0) = "う"
340
+
341
+ 'ひらがな処理に移動する
342
+
343
+ Call Hiragana_Load
344
+
345
+ End Sub
346
+
347
+ ```

1

2019/11/24 12:27

投稿

Yoshikun_0945
Yoshikun_0945

スコア224

test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  for j = 0 to 9
54
54
 
55
- with FormName.Controls((TxtName(i,j))
55
+ with FormName.Controls(TxtName(i,j))
56
56
 
57
57
  .enabled = true
58
58