エクセル実践塾 > エクセル実践塾2007

オートシェイプの枠線の表示と非表示を、一つのマクロで切り替えたい

 

 

 

 

 

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このマクロを実行すると、非表示になっているオートシェイプの枠線は表示され、表示されている枠線は非表示になります。