| 
    
     |  | ▼コンソール さん: 
 おはようございます
 
 本題の前に。
 処理対象の領域について
 
 9 行目から Cells(4, 9).End(xlDown).Row つまり I4より下の I列 最終データまでと
 しておられますね。 もし、I列にデータが 6行目までしかなかった場合、9 To 6 となりますよ?
 
 一方、処理を行うセルは Cells(ckk, 4) これは D列ですね?
 
 もし、D列が対象なら
 For ckk = 9 To Cells(9, 4).End(xlDown).Row ではないですか?
 
 以下は Dレを対象にするとした場合のサンプルです。
 (セル記述、Cells でもいいのですが、見た目、わかりやすいと思いますのでRangeにしてあります)
 
 Sub Sample1()
 Dim s As Variant
 Dim ckk As Long
 Dim n As String
 
 For ckk = 9 To Range("D9").End(xlDown).Row
 s = Range("D" & ckk).Value
 n = Replace(s, ".", "")
 If Not IsNumeric(n) Or Len(s) <> Len(n) + 3 Then
 MsgBox ckk & "行の値にエラーがあります" & vbLf & s
 End If
 Next
 
 End Sub
 
 Sub Sample2()
 Dim s As Variant
 Dim ckk As Long
 Dim n As String
 
 For ckk = 9 To Range("D9").End(xlDown).Row
 s = Range("D" & ckk).Value
 n = Join(Split(s, "."), "")
 If Not IsNumeric(n) Or Len(s) <> Len(n) + 3 Then
 MsgBox ckk & "行の値にエラーがあります" & vbLf & s
 End If
 Next
 
 End Sub
 
 
 |  |