Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7033 / 13644 ツリー ←次へ | 前へ→

【41614】シート上の図形の存在確認について うくれれ 06/8/17(木) 9:31 質問[未読]
【41619】Re:シート上の図形の存在確認について ichinose 06/8/17(木) 10:15 発言[未読]
【41621】Re:シート上の図形の存在確認について うくれれ 06/8/17(木) 11:03 質問[未読]
【41622】Re:シート上の図形の存在確認について Blue 06/8/17(木) 11:14 回答[未読]
【41623】Re:シート上の図形の存在確認について うくれれ 06/8/17(木) 11:14 お礼[未読]

【41614】シート上の図形の存在確認について
質問  うくれれ  - 06/8/17(木) 9:31 -

引用なし
パスワード
   お世話になります。
あるシート上に図形を描いてその書式を変更するマクロを作っています。
以下が図形を選択して書式を変更するマクロです。

  Worksheets("AAA").Activate
   ActiveSheet.Shapes.SelectAll     '---全ての図形を選択
   Set 設定 = Selection.ShapeRange '---選択図形範囲を変数に格納
      Selection.ShapeRange.Fill.Visible = msoFalse
      Selection.ShapeRange.Fill.Solid
      Selection.ShapeRange.Fill.Transparency = 1#
      Selection.ShapeRange.Line.Weight = 1#
      Selection.ShapeRange.Line.DashStyle = msoLineSolid
      Selection.ShapeRange.Line.Style = msoLineSingle
      Selection.ShapeRange.Line.Transparency = 0#
      Selection.ShapeRange.Line.Visible = msoTrue
      Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
      Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)

その際、シート上に図形があれば正常に処理されるのですが、図形がない場合

「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」

と3行目でエラーになってしまいます。
シート上に図形があれば処理、なければ終了、のようにIF文で作るのかなとも思いますが、シート上に図形があるかどうかを確認するコードがどうしても分かりません。
どなたかよろしくお願いします。

【41619】Re:シート上の図形の存在確認について
発言  ichinose  - 06/8/17(木) 10:15 -

引用なし
パスワード
   ▼うくれれ さん:
おはようございます。
Countプロパティで図があるかないかチェックしましょうか!!


Sub testtest()
   Dim 設定 As ShapeRange
   With ActiveSheet
     If .DrawingObjects.Count > 0 Then
      Set 設定 = ActiveSheet.DrawingObjects.ShapeRange '---選択図形範囲を変数に格納
        With 設定
         .Fill.Visible = msoFalse
         .Fill.Solid
         .Fill.Transparency = 1#
         .Line.Weight = 1#
         .Line.DashStyle = msoLineSolid
         .Line.Style = msoLineSingle
         .Line.Transparency = 0#
         .Line.Visible = msoTrue
         .Line.ForeColor.SchemeColor = 64
         .Line.BackColor.RGB = RGB(255, 255, 255)
         End With
      End If
     End With
End Sub


Selectionを使わないで書き直してみましたが、
Selectionを使用しても基本的には同じです。

【41621】Re:シート上の図形の存在確認について
質問  うくれれ  - 06/8/17(木) 11:03 -

引用なし
パスワード
   さっそくありがとうございます。
以下のとおりやってみましたが、4行目のIF文で「変数が定義されていません。」
となってしまいます。
なにかおかしいところがあるのでしょうか。

DIM 丸設定 As ShapeRange
Worksheets("AAA").Activate
   ActiveSheet.Shapes.SelectAll '---全ての図形を選択
   If DrawingObjects.Count > 0 Then
    Set 丸設定 = Selection.ShapeRange '---選択図形範囲を変数に格納
     With 丸設定
      .Fill.Visible = msoFalse
      .Fill.Solid
      .Fill.Transparency = 1#
      .Line.Weight = 1#
      .Line.DashStyle = msoLineSolid
      .Line.Style = msoLineSingle
      .Line.Transparency = 0#
      .Line.Visible = msoTrue
      .Line.ForeColor.SchemeColor = 64
      .Line.BackColor.RGB = RGB(255, 255, 255)
     End With
    End If

【41622】Re:シート上の図形の存在確認について
回答  Blue  - 06/8/17(木) 11:14 -

引用なし
パスワード
   >   With ActiveSheet
>     If .DrawingObjects.Count > 0 Then
DrawingObjects の前に . がついていることに注意してください。

DrawingObjects は ActiveSheet のプロパティ です。

ですので

> If DrawingObjects.Count > 0 Then

If ActiveSheet.DrawingObjects.Count > 0 Then
としてみてください。

【41623】Re:シート上の図形の存在確認について
お礼  うくれれ  - 06/8/17(木) 11:14 -

引用なし
パスワード
   やってみましたら見事できました。
素早いお返事どうもありがとうございました。

7033 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free