If〜Then〜Elseの構文を使えば、オートシェイプの状態に応じて、表示と非表示を一つのマクロで切り替えられます
If...Then...Else ステートメントを使うと、条件に応じて実行される、複数のコードブロックを設定できます。指定した条件が真
(True) の場合には、あるブロックが実行され、偽 (False) の場合には、別のブロックが実行されるようになります。
@Withステートメントで、処理対象となるオートシェイプを指定します。
Sub LineOnOFF()
With ActiveSheet.Shapes(1).Line
End With
End Sub
「ActiveSheet.Shapes(1).Line」は、編集中のワークシートで描かれた最初のオートシェイプの枠線を表しています。
AIfステートメントを使って、枠線が非表示の場合に、枠線を表示するようにします。
Sub LineOnOFF()
With ActiveSheet.Shapes(1).Line
If .Visible = msoFalse Then
.Visible = msoTrue
End If
End With
End Sub
ピリオ(.)ドが頭に付加された「.Visible」は、Withステートメントの効果で省略されたコードです。「ActiveSheet.Shapes(1).Line.Visible」を表しています。
B枠線が非表示でない場合、すなわち枠線がすでに表示されている場合の処理コードを、Elseステートメントで記述します。
Sub LineOnOFF()
With ActiveSheet.Shapes(1).Line
If .Visible = msoFalse Then
.Visible = msoTrue
Else
.Visible = msoFalse
End If
End With
End Sub
Cこのマクロを実行すると、非表示になっているオートシェイプの枠線は表示され、表示されている枠線は非表示になります。