| 
    
     |  | UO3殿 
 返信ありがとうございます。
 
 処理対象の領域について、UO3殿が記載して頂いている通りです。
 マクロ初心者で、指摘して頂いたことで、
 あ、確かに!っと思いました。
 
 正規表現が使えることを知りませんでした。
 今後、マクロを作成する際に参考とさせて頂きます。
 
 ありがとうございました。
 
 
 ▼UO3 さん:
 >▼コンソール さん:
 >
 >おはようございます
 >
 >本題の前に。
 >処理対象の領域について
 >
 >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
 
 
 |  |