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

回答編集履歴

1

コードの修正

2018/06/12 07:08

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,25 +3,26 @@
3
3
  トグルボタン名は、繰り返し処理しやすいように規則的なものに変更してます。
4
4
 
5
5
  コマンドボタン「cmdCSVOutput」をクリックしたら、
6
- トグルボタン「tgl1」 が押されているとき、「クエリA」 を出力
6
+ トグルボタン「tgl1」 が押されているとき、「クエリA」 を出力、ファイル名は「クエリA.csv」
7
- トグルボタン「tgl2」 が押されているとき、「クエリB」 を出力
7
+ トグルボタン「tgl2」 が押されているとき、「クエリB」 を出力、ファイル名は「クエリB.csv」
8
- トグルボタン「tgl3」 が押されているとき、「クエリC」 を出力
8
+ トグルボタン「tgl3」 が押されているとき、「クエリC」 を出力、ファイル名は「クエリC.csv」
9
9
  最後に出力されたクエリ名の一覧をメッセージボックスで表示する。
10
10
 
11
+ トグルボタンの標題(Caption)は出力したいクエリ名とします。
12
+
11
13
  ```vba
12
14
  Private Sub cmdCSVOutput_Click()
13
- Dim i As Long, sMsg As String
15
+ Dim i As Long, sMsg As String
14
- Dim QNames() As String
16
+
15
- '出力したいクエリ名をカンマ区切りで列挙
16
- QNames = Split("クエリA,クエリB,クエリC", ",")
17
-
18
17
  For i = 1 To 3
19
- If Me("tgl" & i).Value Then
18
+ With Me("tgl" & i)
19
+ If .Value Then
20
- Module1.mkmkd (保存先フォルダ作成処理)
20
+ Module1.mkmkd (保存先フォルダ作成処理)
21
- DoCmd.TransferText acExportDelim, , QNames(i), _
21
+ DoCmd.TransferText acExportDelim, , .Caption, _
22
- "C:\test\" & QNames(i - 1) & ".csv"
22
+ "C:\test\" & .Caption & ".csv"
23
- sMsg = sMsg & QNames(i - 1) & vbCrLf
23
+ sMsg = sMsg & .Caption & vbCrLf
24
- End If
24
+ End If
25
+ End With
25
26
  Next
26
27
 
27
28
  If sMsg = "" Then
@@ -30,4 +31,6 @@
30
31
  MsgBox sMsg & " をCSVで出力しました。"
31
32
  End If
32
33
  End Sub
33
- ```
34
+ ```
35
+
36
+ Forループの使い方、Withステートメントの使いのご参考に。