質問編集履歴
2
ミスタイプを修正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
If Cntl1 <> 1 Then GoTo Fin01 '「印刷」ボタン(Cntl1=1)ではなく
|
90
90
|
|
91
|
-
' 「
|
91
|
+
' 「終了」ボタン(Cntl1=2)が押されると終了
|
92
92
|
|
93
93
|
|
94
94
|
|
@@ -158,7 +158,7 @@
|
|
158
158
|
|
159
159
|
|
160
160
|
|
161
|
-
' 次回印刷の最初の番号を Lst + 1 とし、その最後の番号は、今回の増加分を加えた番号として
|
161
|
+
' 次回印刷の最初の番号を Lst + 1 とし、その最後の番号は、今回の増加分を加えた番号として、
|
162
162
|
|
163
163
|
' UserForm2 に表示します
|
164
164
|
|
1
ソースコードを整理して、注釈を記しました。 また、Tab でインデントを付けました。反映してくれればいいのですが・・・
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,22 +1,238 @@
|
|
1
|
+
ソースコードを整理して、注釈を記しました。
|
2
|
+
|
3
|
+
また、Tab でインデントを付けました。反映してくれればいいのですが・・・
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
問題は、以下のマクロで、Np = 2 かつ NPrt = 2 の時
|
8
|
+
|
9
|
+
If Np = NPrt Then GoTo Adr02 で、ループから抜けてくれないことです
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
### 該当のソースコード
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
ソースコード
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
Public Fst, Lst, LstP, NPrt, Cntl1 As Variant
|
22
|
+
|
23
|
+
Option Explicit
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
Sub Macro1()
|
28
|
+
|
29
|
+
'
|
30
|
+
|
31
|
+
' Macro1 Macro
|
32
|
+
|
33
|
+
'
|
34
|
+
|
35
|
+
' Keyboard Shortcut: Ctrl+z
|
36
|
+
|
37
|
+
'
|
38
|
+
|
39
|
+
Dim Np, No, INp, INo, NpM, Mesage01, Cntl2, Incr As Variant
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
Fst = 1 '印刷範囲の最初の番号
|
44
|
+
|
45
|
+
Lst = 1 '印刷範囲の最後の番号
|
46
|
+
|
47
|
+
LstP = 0 '前回印刷した範囲の最後の番号
|
48
|
+
|
49
|
+
NPrt = 2 '印刷部数
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
Adr01:
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
UserForm2.Label3.Caption = "前回印刷の最後の番号は " & LstP & " です"
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
' UserForm2 で処理に必要な値を取得します
|
64
|
+
|
65
|
+
' TextBox1~3 に、今回印刷のデフォルト値、あるいは候補値を表示して、
|
66
|
+
|
67
|
+
' それらを修正させるか、あるいはそのまま続行する(「印刷」ボタンを押す)
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
' UserForm2 では、「終了」ボタンが押されると、Cntl1 に 2 が代入され
|
72
|
+
|
73
|
+
' 「印刷」ボタンが押されると、Cntl1 に 1 が代入されます
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
UserForm2.TextBox1.Value = Fst
|
78
|
+
|
79
|
+
UserForm2.TextBox2.Value = Lst
|
80
|
+
|
81
|
+
UserForm2.TextBox3.Value = NPrt
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
UserForm2.Show
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
If Cntl1 <> 1 Then GoTo Fin01 '「印刷」ボタン(Cntl1=1)ではなく
|
90
|
+
|
91
|
+
' 「印刷」ボタン(Cntl1=2)が押されると終了
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
For Np = 1 To NPrt ' 指定された印刷部数(NPrt)まで繰り返す
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
For No = Fst To Lst ' 指定された最初の番号から最後の番号まで印刷を繰り返す
|
100
|
+
|
101
|
+
INp = Np * 7 ' ここでは、印刷の代わりに、変数の値を確認
|
102
|
+
|
103
|
+
INo = No
|
104
|
+
|
105
|
+
Cells(INo, INp) = "No = " & No ' No の値を表示
|
106
|
+
|
107
|
+
Cells(INo, INp + 1) = "Np = " & Np ' Np の値を表示
|
108
|
+
|
109
|
+
Cells(INo, INp + 2) = "NPrt = " & NPrt ' NPrt の値を表示
|
110
|
+
|
111
|
+
Next No
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
Cells(INo, INp + 3) = "Np2 = " & Np ' Np の値を再表示
|
116
|
+
|
117
|
+
Cells(INo, INp + 4) = "NPrt2 = " & NPrt ' NPrt の値を再表示
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
If Np = NPrt Then ' 必要部数を印刷したら終了(次の印刷の要否確認は不要)
|
122
|
+
|
123
|
+
GoTo Adr02 ' NPrt が 2 で、Np = 2 ならループを抜けたい
|
124
|
+
|
125
|
+
Else
|
126
|
+
|
127
|
+
Cells(INo, INp + 5) = "Np3 = " & Np ' Np の値を再々表示
|
128
|
+
|
129
|
+
End If
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
If NPrt = 1 Then ' 必要部数(NPrt)が 1 なら確認は不要(ループを抜ける)
|
136
|
+
|
137
|
+
GoTo Adr02
|
138
|
+
|
139
|
+
Else
|
140
|
+
|
141
|
+
Cells(INo, INp + 6) = "Np4 = " & Np ' Np の値を再々々表示
|
142
|
+
|
143
|
+
NpM = Np + 1
|
144
|
+
|
145
|
+
Mesage01 = NpM & " 部目の印刷を行いますか"
|
146
|
+
|
147
|
+
Cntl2 = MsgBox(Mesage01, vbOKCancel)
|
148
|
+
|
149
|
+
End If
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
If Cntl2 = vbCancel Then GoTo Adr02
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
Next Np ' 外側のループの最終行
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
' 次回印刷の最初の番号を Lst + 1 とし、その最後の番号は、今回の増加分を加えた番号として。
|
162
|
+
|
163
|
+
' UserForm2 に表示します
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
Adr02:
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
LstP = Lst
|
172
|
+
|
173
|
+
Incr = Lst - Fst
|
174
|
+
|
175
|
+
Fst = Lst + 1
|
176
|
+
|
177
|
+
Lst = Fst + Incr
|
178
|
+
|
179
|
+
GoTo Adr01
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
Fin01:
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
MsgBox "処理を終了します"
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
End Sub
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
### 試したこと
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
NPrt が2のとき、Mesage01 を表示するメッセージボックスが2回表示されます
|
202
|
+
|
203
|
+
(2回目の MsgBox の表示内容は、「3 回目の印刷を行いますか」です)
|
204
|
+
|
205
|
+
なお、上記の「Np2 =」、「Np3 =」、「Np4 =」で表示した Np の値は、いずれも、2 になっています。
|
206
|
+
|
207
|
+
つまり、If Np = NPrt Then GoTo Adr02 でも、Np のループから抜けていないようです・・・
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
### 補足情報(FW/ツールのバージョンなど)
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
ここにより詳細な情報を記載してください。
|
216
|
+
|
1
217
|
### 前提・実現したいこと
|
2
218
|
|
3
|
-
if文の誤動作について
|
4
|
-
|
5
219
|
|
6
220
|
|
7
221
|
ここに質問の内容を詳しく書いてください。
|
8
222
|
|
223
|
+
(例)PHP(CakePHP)で●●なシステムを作っています。
|
224
|
+
|
225
|
+
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
226
|
+
|
227
|
+
|
228
|
+
|
9
229
|
### 発生している問題・エラーメッセージ
|
10
230
|
|
11
231
|
|
12
232
|
|
13
|
-
簡単なマクロで、If文が正しく判断してくれません。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
233
|
```
|
18
234
|
|
19
|
-
エラーメッセージ
|
235
|
+
エラーメッセージ
|
20
236
|
|
21
237
|
```
|
22
238
|
|
@@ -26,165 +242,11 @@
|
|
26
242
|
|
27
243
|
|
28
244
|
|
245
|
+
```ここに言語名を入力
|
246
|
+
|
29
247
|
ソースコード
|
30
248
|
|
31
|
-
|
32
|
-
|
33
|
-
Public Fst, Lst, LstP, NPrt, Cntl1 As Variant
|
34
|
-
|
35
|
-
Option Explicit
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
Sub Macro1()
|
40
|
-
|
41
|
-
|
249
|
+
```
|
42
|
-
|
43
|
-
' Macro1 Macro
|
44
|
-
|
45
|
-
'
|
46
|
-
|
47
|
-
' Keyboard Shortcut: Ctrl+z
|
48
|
-
|
49
|
-
'
|
50
|
-
|
51
|
-
Dim Np, No, INp, INo, NpM, Mesage01, Cntl2, Incr As Variant
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
Fst = 1
|
56
|
-
|
57
|
-
Lst = 1
|
58
|
-
|
59
|
-
LstP = 0
|
60
|
-
|
61
|
-
NPrt = 2
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
Adr01:
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
UserForm2.Label3.Caption = "?O?????????c???????@" & LstP & "?@???"
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
UserForm2.TextBox1.Value = Fst
|
76
|
-
|
77
|
-
UserForm2.TextBox2.Value = Lst
|
78
|
-
|
79
|
-
UserForm2.TextBox3.Value = NPrt
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
UserForm2.Show
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
If Cntl1 <> 1 Then GoTo Fin01
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
For Np = 1 To NPrt
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
For No = Fst To Lst
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
Sheets("???`3????(??)").Select
|
100
|
-
|
101
|
-
Range("'???`3????(??)'!D3").Value = No
|
102
|
-
|
103
|
-
Application.Calculate
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
Sheets("????????").Select
|
108
|
-
|
109
|
-
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
|
110
|
-
|
111
|
-
' IgnorePrintAreas:=False
|
112
|
-
|
113
|
-
' Sheets("??????^").Select
|
114
|
-
|
115
|
-
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
|
116
|
-
|
117
|
-
' IgnorePrintAreas:=False
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
INp = Np * 3 + 5
|
122
|
-
|
123
|
-
INo = No
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
Cells(INo, INp) = "No = " & No
|
128
|
-
|
129
|
-
Cells(INo, INp + 1) = "Np = " & Np
|
130
|
-
|
131
|
-
Cells(INo, INp + 2) = "Pr = " & NPrt
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
Next No
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
If Np = NPrt Then Exit For
|
140
|
-
|
141
|
-
If NPrt > 1 Then
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
NpM = Np + 1
|
146
|
-
|
147
|
-
Mesage01 = NpM & " ????????????"
|
148
|
-
|
149
|
-
Cntl2 = MsgBox(Mesage01, vbOKCancel)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
If Cntl2 = vbCancel Then Exit For
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
End If
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
Next Np
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
LstP = Lst
|
166
|
-
|
167
|
-
Incr = Lst - Fst
|
168
|
-
|
169
|
-
Fst = Lst + 1
|
170
|
-
|
171
|
-
Lst = Fst + Incr
|
172
|
-
|
173
|
-
GoTo Adr01
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
Fin01:
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
MsgBox "??????I???????"
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
End Sub
|
186
|
-
|
187
|
-
|
188
250
|
|
189
251
|
|
190
252
|
|
@@ -192,9 +254,7 @@
|
|
192
254
|
|
193
255
|
|
194
256
|
|
195
|
-
一応、動作はしてくれるのですが、NPrtが2のとき、Mesage01のメッセージボックスが3回表示されます
|
196
|
-
|
197
|
-
|
257
|
+
ここに問題に対して試したことを記載してください。
|
198
258
|
|
199
259
|
|
200
260
|
|
@@ -203,53 +263,3 @@
|
|
203
263
|
|
204
264
|
|
205
265
|
ここにより詳細な情報を記載してください。
|
206
|
-
|
207
|
-
### 前提・実現したいこと
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
ここに質問の内容を詳しく書いてください。
|
212
|
-
|
213
|
-
(例)PHP(CakePHP)で●●なシステムを作っています。
|
214
|
-
|
215
|
-
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
### 発生している問題・エラーメッセージ
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
```
|
224
|
-
|
225
|
-
エラーメッセージ
|
226
|
-
|
227
|
-
```
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
### 該当のソースコード
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
```ここに言語名を入力
|
236
|
-
|
237
|
-
ソースコード
|
238
|
-
|
239
|
-
```
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
### 試したこと
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
ここに問題に対して試したことを記載してください。
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
### 補足情報(FW/ツールのバージョンなど)
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
ここにより詳細な情報を記載してください。
|