例えばこうでしょうか。
Sub test()
Dim r As Range
For Each r In Range("A5:A40")
If IsDate(r.Value) Then
With r.Resize(1, 15).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
End With
ElseIf IsNumeric(r.Value) Then
With r.Resize(1, 15).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
Else
With r.Resize(1, 15).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
End If
Next r
End Sub
【メモ】
1. Withには徐々に慣れていることでよいと思います。
ネストしてまで With を使わないといけないわけではありません。
上記では、各セル r について、Withを使わずに書いています。
(その分、変数名は短くしました)
罫線のところは冗長さを避けて、Withを使ったほうがよいと思います。
2.
If
IsDate(.Value) Then
という書き方はコンパイルエラーになるはずです。
If ステートメントの書き方は、ヘルプに書かれているどおりの書き方を使ってください。
(そのあたりで余り独自性は追わないほうがよいと思います。)
3. ActiveCell.Offset(0, 14) = Selection.Borders(xlEdgeBottom)
右辺はオブジェクトで、それを左辺に入れようとしていますが、エラーになります。
詳細はコメントしません。(ご自分でも固い信念で書かれたものではないと思われるので。)
上記を参考にしてください。
4. Offset とか、Resizeなども意味をもう一度確認されるとよいでしょう。
なお、ケースを3つに分けていますが、対応は2種類です。
そこが気になりましたが、途中段階と理解しました。
引き続き、取り組んでみて下さい。