プロが教える店舗&オフィスのセキュリティ対策術

VBAのNEXTに対するforがありませんの対応に困ってます
自分なりに For 分のコードを考えたのですが
どうもうまくいきません教えてください
以下がコードになります
Sub 商品登録()
Dim q As String
Dim x As Integer
For x = 4 To 7

q = MsgBox("登録OK?", vbYesNo + vbQuestion)
If q = vbYes Then
Sheets("リスト").Range("B" & x) = Sheets("登録").Range("B3")
Sheets("リスト").Range("C" & x) = Sheets("登録").Range("B4")
Sheets("リスト").Range("D" & x) = Sheets("登録").Range("B5")
Sheets("リスト").Range("A" & x) = Date

Sheets("登録").Range("B3:B5").ClearContents
MsgBox "登録完了しました"
Next


Else: MsgBox ("登録中止")

End If


End Sub

A 回答 (4件)

こんばんは。



多分ですが、下記の様な事をやりたいのかな?と思いました。

Sub 商品登録()
Dim x As Long

If MsgBox("登録OK?", vbYesNo + vbQuestion) = vbYes Then
For x = 4 To 7
Sheets("リスト").Range("B" & x) = Sheets("登録").Range("B3")
Sheets("リスト").Range("C" & x) = Sheets("登録").Range("B4")
Sheets("リスト").Range("D" & x) = Sheets("登録").Range("B5")
Sheets("リスト").Range("A" & x) = Date
Next
Sheets("登録").Range("B3:B5").ClearContents
MsgBox "登録完了しました"
Else
MsgBox ("登録中止")
End If
    • good
    • 0
この回答へのお礼

ありがとうございます出来ました!

お礼日時:2022/03/01 21:20

こんばんは



直接の原因は、For ~ Next と IF ~ End IF が相互に跨がってしまっているのが原因です。
一方が他方に包含される関係になっていれば、正しく解釈されます。

実際の処理内容をどうなさりたいのか不明ですけれど、こんなことでしょうか?

Sub 商品登録()
Dim q As String
Dim x As Integer

q = MsgBox("登録OK?", vbYesNo + vbQuestion)
If q = vbYes Then
 For x = 4 To 7
  Sheets("リスト").Range("B" & x) = Sheets("登録").Range("B3")
  Sheets("リスト").Range("C" & x) = Sheets("登録").Range("B4")
  Sheets("リスト").Range("D" & x) = Sheets("登録").Range("B5")
  Sheets("リスト").Range("A" & x) = Date
  Sheets("登録").Range("B3:B5").ClearContents
  MsgBox "登録完了しました"
 Next
Else: MsgBox ("登録中止")
End If

End Sub
    • good
    • 2
この回答へのお礼

ありがとうございますm(_ _)m助かりました

お礼日時:2022/03/01 21:21

enf if の下にnextがあればできますよ。

    • good
    • 2
この回答へのお礼

ありがとうございますm(_ _)m分かり安い回答でした!

お礼日時:2022/03/01 21:22

'例えばこうすると動きますか?



Sub 商品登録()

Dim q As String
Dim x As Integer

For x = 4 To 7
q = MsgBox("登録OK?", vbYesNo + vbQuestion)
If q = vbYes Then
Sheets("リスト").Range("B" & x) = Sheets("登録").Range("B3")
Sheets("リスト").Range("C" & x) = Sheets("登録").Range("B4")
Sheets("リスト").Range("D" & x) = Sheets("登録").Range("B5")
Sheets("リスト").Range("A" & x) = Date
Sheets("登録").Range("B3:B5").ClearContents
MsgBox "登録完了しました"
Else
MsgBox ("登録中止")
End If
Next

End Sub
    • good
    • 3
この回答へのお礼

ありがとうございます、動きました!

お礼日時:2022/03/01 21:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!