ここから本文です

VBAにて以下プログラムを実行すると、NEXTに対するFORがありません、というメッセ...

tda********さん

2018/2/1514:38:42

VBAにて以下プログラムを実行すると、NEXTに対するFORがありません、というメッセージが
出て、最後のNext i のところにカーソルが行きます。
どこに不具合があるのでしょうか。

お手数ですが、ご教授願います。

Sub kintaiC()
Dim i As Long, j As Long, lastRow As Long
Dim mycol As Long, endT As Long
Dim wScriptHost As Object
Dim Filename2 As String
Dim fl2 As Workbook
Dim c As Range

'ファイルを開く
Set wScriptHost = CreateObject("WScript.shell")
ChDir wScriptHost.specialFolders("Desktop")
Filename2 = Application.GetOpenFilename
Set fl2 = Workbooks.Open(Filename:=Filename2)
Application.ScreenUpdating = False

With Worksheets(2)
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
For j = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
With .Cells(1, j)
Select Case .Value
Case "深夜60時間超"
.Value = "振替"
.Interior.ColorIndex = 45
Case "確認者氏名"
.Interior.ColorIndex = 3
Case "勤怠項目"
mycol = j
Case "実績終業時間"
endT = j
.Columns(j).NumberFormatLocal = "hh:mm"
End Select
End With
Next j

.Range("A1").AutoFilter field:=mycol, Criteria1:="振替出勤"
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(.Cells(2, mycol), .Cells(lastRow, mycol)).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 37
End If
.Range("A1").AutoFilter field:=mycol, Criteria1:="振替休日"
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(.Cells(2, mycol), .Cells(lastRow, mycol)).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 38
End If

'//▼ココから色付け//
.AutoFilterMode = False '//フィルタを解除//
Set c = .Rows(1).Find(what:="振替", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Range("A1").AutoFilter field:=c.Column, Criteria1:="<>" '//←空白以外でフィルタを掛ける//
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(.Cells(2, c.Column), .Cells(lastRow, c.Column)).SpecialCells(xlCellTypeVisible) _
.Interior.Color = .Cells(1, c.Column).Interior.Color
End If
End If

.AutoFilterMode = False '//フィルタを解除//
Set c = .Rows(1).Find(what:="確認者氏名", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Range("A1").AutoFilter field:=c.Column, Criteria1:="<>"
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(.Cells(2, c.Column), .Cells(lastRow, c.Column)).SpecialCells(xlCellTypeVisible) _
.Interior.Color = .Cells(1, c.Column).Interior.Color
End If
End If

'//▲ココまで追加//
.AutoFilterMode = False
For i = 2 To lastRow
With .Cells(i, endT)
If .Value = TimeValue("17:30") Then
.Interior.ColorIndex = 43
Next i
End If
End With

Application.ScreenUpdating = True

End Sub

閲覧数:
33
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/2/1514:48:00

「With」と「End With」の数が一致していません。

今一度、その点に注意してマクロを調べてみてください。

質問した人からのコメント

2018/2/15 16:28:31

ありがとうございます。
解決しました。

ベストアンサー以外の回答

1〜1件/1件中

hdu********さん

2018/2/1514:42:36

Next i
End If
End With

ではなく

End If
End With
Next i

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる