• ベストアンサー
  • 暇なときにでも

マクロで2つの図形の内1つを透明にする記述

  • 質問No.9627824
  • 閲覧数141
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 79% (482/605)

マクロで2つの図形の内1つを透明にするにはどう記述したらいいでしょうか。
それぞれの図形の名前のつけかたも教えてください。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 62% (458/728)

Visual Basic カテゴリマスター
>透明にするには
図形の塗りつぶしをなしに、枠線を無にするには
  With ActiveSheet.Shapes("図形名")
    .Fill.Visible = msoFalse
    .Line.Visible = msoFalse
  End With
図形を非表示にするのは
  ActiveSheet.Shapes(1).Visible = False
マクロを実行する毎に図形が見えたり、消えたり
Sub Test()
  With ActiveSheet.Shapes(1) '又は図形名 .Shapes("正方形/長方形 1")
    .Visible = IIf(.Visible = True, False, True)
  End With
End Sub
お礼コメント
perogou

お礼率 79% (482/605)

ありがとうございました
投稿日時:2019/06/22 12:37

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 62% (458/728)

Visual Basic カテゴリマスター
マクロを実行する毎に図形が見えたり、消えたり
Sub Test2()
  With ActiveSheet.Shapes(1) '又は図形名 .Shapes("正方形/長方形 1")
    .Visible = Not .Visible
  End With
End Sub
お礼コメント
perogou

お礼率 79% (482/605)

ありがとう やってみますね
投稿日時:2019/06/22 12:35
  • 回答No.3

ベストアンサー率 62% (458/728)

Visual Basic カテゴリマスター
>それぞれの図形の名前のつけかたも教えてください。
参考に
図形の名前を設定/取得するには?
https://tech.nikkeibp.co.jp/it/atcl/column/15/090100207/090100084/
お礼コメント
perogou

お礼率 79% (482/605)

ありがとうございました
投稿日時:2019/06/22 12:36
  • 回答No.1

ベストアンサー率 61% (224/364)

他カテゴリのカテゴリマスター
透明にするのは面倒なので、
図の高さと幅を0にすることで見えなくする対応はいかがでしょうか?

名前を付け、区別したいとのことなので、
変数に格納する手段とNameプロパティを使う手段とを
考えてみました。前者の方が扱いやすいと思います。

以下がそのサンプルです。
Activeなシートに図が2つある前提のコードです。
よかったら参考にしてください。

Option Explicit

 Dim MyHei As Long
 Dim MyWid As Long
 Dim Zu1 As Shape
 Dim Zu2 As Shape

'Setを使う
Sub Sample1Hide()
 Set Zu1 = ActiveSheet.Shapes(1)
 Set Zu2 = ActiveSheet.Shapes(2)
 MyHei = Zu1.Height
 MyWid = Zu1.Width
 Zu1.Height = 0
 Zu1.Width = 0
 Cells(1, 1).Select
End Sub

Sub Sample1Show()
 Zu1.Height = MyHei
 Zu1.Width = MyWid
End Sub

'Nameプロパティを使う
Sub Sample2Hide()
 With ActiveSheet
  .Shapes(1).Name = "MyZu1"
  .Shapes(2).Name = "MyZu2"
  MyHei = .Shapes("MyZu1").Height
  MyWid = .Shapes("MyZu1").Width
  .Shapes("MyZu1").Height = 0
  .Shapes("MyZu1").Width = 0
  Cells(1, 1).Select
 End With
End Sub

Sub Sample2Show()
 ActiveSheet.Shapes("MyZu1").Height = MyHei
 ActiveSheet.Shapes("MyZu1").Width = MyWid
End Sub
お礼コメント
perogou

お礼率 79% (482/605)

ありがとうございました
投稿日時:2019/06/22 12:38
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ