dポイントプレゼントキャンペーン実施中!

下記の質問をしました。
更に下の回答を頂き入力しましたが、
入力し実行すると「実行時エラー438」
オブジェクトは、このプロパティまたはメソッドをサポートしていません。となります。
色々と調べて実行したのですが解決しませんでした。

よろしくお願いします。

ここから>
エクセル2016です。
B3セルに9:00
C3セルに15:00と入力します。
するとE3セルからK3セルまで線が引かれる

B4セルに15:00
C4セルに22:30と入力します。
するとL4からR4の半分まで線が引かれる。

可能でしょうか?

よろしくお願いいたします。
Sub hiku()

ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
For i = 3 To 30

If Cells(i, 2) = "" Then Exit Sub
If Cells(i, 3) = "" Then Exit Sub

j0 = i
jm = (Cells(j0, 1).Height) / 2 + Cells(j0, 1).Top

j1 = Hour(Cells(j0, 2)) - 4
j2 = (Cells(j0, j1).Width) * Minute(Cells(j0, 2)) / 60 + Cells(j0, j1).Left

k1 = Hour(Cells(j0, 3)) - 4
k2 = (Cells(j0, k1).Width) * Minute(Cells(j0, 3)) / 60 + Cells(j0, k1).Left

With ActiveSheet.Shapes.AddLine(j2, jm, k2, jm).Line
.ForeColor.SchemeColor = 53 ' 線の色を変えました
.Weight = 3
.EndArrowheadStyle = msoArrowheadTriangle
End With
Next i
End Sub
<ここまで

A 回答 (2件)

ki-aaaさんのコードで結構です。


なお、次のコードを挟むのでもOKです。
初歩的にいい加減なコードを書いて済みませんでした。

Sub hiku()
ActiveSheet.Shapes.SelectAll
If VarType(Selection) = vbObject Then
Selection.ShapeRange.Delete
End If
For i = 3 To 30
If Cells(i, 2) = "" Then Exit Sub
If Cells(i, 3) = "" Then Exit Sub
~~~以下は同じ~~~
    • good
    • 0

下の一行を三行に変更してください。



>Selection.ShapeRange.Delete

On Error Resume Next
Selection.ShapeRange.Delete
On Error GoTo 0

修正の意図
削除しようとしたが、削除対象がないので、エラーがでた。
なので、エラーを無視するようにした。


このコードを書いた人は素晴らしい。
簡潔でわかり易い。
    • good
    • 0

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