[[20081118104227]] 『オートシェイプのグループ化』(どんまい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートシェイプのグループ化』(どんまい)
 選択されているシートにあるオートシェイプ(複数)を一つの
 グループにするマクロはどうすれば良いですか?


 中途半端な内容なので、
 編集 → ジャンプ → セル選択 → オブジェクト選択で、OK
 図形の調整からグループ化。
 をマクロ記録するとか。
 BJ


BJさん有り難う御座います。
    ActiveSheet.DrawingObjects.Select
    Selection.ShapeRange.Group.Select
でした。(どんまい)


『シェイプのグループ化』(どんまい)
 シェイプで線を2本書いてグループ化したいのですが、
    Selection.ShapeRange.Group.Select 'グループ化する。
 で、先に表示した2本線をセレクトする方法がわかりません。
 シートには他にもシェイプがあります。
 Sub バツシェイプ()
    ActiveSheet.Shapes.AddLine(30, 15, 60, 40).Select
    ActiveSheet.Shapes.AddLine(60, 15, 30, 40).Select

    Selection.ShapeRange.Fill.Visible = msoFalse '塗り潰ししない。
    Selection.ShapeRange.ZOrder msoBringToFront '最前面に移動する。

    Selection.ShapeRange.Group.Select 'グループ化する。
 End Sub


 統合しました。
 2008/11/18 13:00

 (川野鮎太郎)


 塗りつぶしとか、最前面とかは適当にやってください。後、変数の解放とかも。
 BJ

 Dim ShpN(1 To 2) As Variant
 Set Shp1 = ActiveSheet.Shapes.AddLine(30, 15, 60, 40)
 Set Shp2 = ActiveSheet.Shapes.AddLine(60, 15, 30, 40)
 ShpN(1) = Shp1.Name
 ShpN(2) = Shp2.Name
 ActiveSheet.Shapes.Range(ShpN).Group

 BJさん有り難う御座います。出来ました。(どんまい)

 Sub バツシェイプ()
    Dim ShpN(1 To 2) As Variant
    Set Shp1 = ActiveSheet.Shapes.AddLine(30, 15, 60, 40)
    Set Shp2 = ActiveSheet.Shapes.AddLine(60, 15, 30, 40)
    ShpN(1) = Shp1.Name
    ShpN(2) = Shp2.Name
    ActiveSheet.Shapes.Range(ShpN(1)).Fill.Visible = msoFalse '塗り潰ししない。
    ActiveSheet.Shapes.Range(ShpN(2)).Fill.Visible = msoFalse '塗り潰ししない。
    ActiveSheet.Shapes.Range(ShpN(1)).ZOrder msoBringToFront '最前面に移動する。
    ActiveSheet.Shapes.Range(ShpN(2)).ZOrder msoBringToFront '最前面に移動する。
    ActiveSheet.Shapes.Range(ShpN).Group 'グループ化する。
 End Sub

 この課題と同じく
 以下の四角形グループ化を試みましたが うまくいきません。
 AddShape、Fill、のF1ヘルプなどをみて いろいろ組み合わせましたが
 理解不足です。
 よろしく 助言をおねがいします。

 このままで まず 7つの矩形がでることをご確認いただけるはずです
 おねがいします
(はんにゃ

 Sub colorTestbar() '塗りつぶし図形のグループ化
    Dim ShpN(1 To 2) As Variant
    Dim Shp1 As Shape, Shp2 As Shape, Shp3 As Shape, Shp4 As Shape
    Dim Shp5 As Shape, Shp6 As Shape, Shp7 As Shape      

      With ActiveSheet
        .Shapes.AddShape(msoShapeRectangle, 330, 30, 170, 10) _
          .Fill.ForeColor.RGB = RGB(255, 0, 0)   '赤
        .Shapes.AddShape(msoShapeRectangle, 340, 40, 170, 10) _
          .Fill.ForeColor.RGB = RGB(0, 255, 0)   '緑
        .Shapes.AddShape(msoShapeRectangle, 350, 50, 170, 10) _
          .Fill.ForeColor.RGB = RGB(0, 0, 255)  '青
        .Shapes.AddShape(msoShapeRectangle, 360, 60, 170, 10) _
          .Fill.ForeColor.RGB = RGB(255, 255, 0)  '黄色
        .Shapes.AddShape(msoShapeRectangle, 370, 70, 170, 10) _
          .Fill.ForeColor.RGB = RGB(255, 0, 255)  'マゼンタ
        .Shapes.AddShape(msoShapeRectangle, 380, 80, 170, 10) _
          .Fill.ForeColor.RGB = RGB(0, 255, 255)   'シアン
        .Shapes.AddShape(msoShapeRectangle, 390, 90, 170, 10) _
          .Fill.ForeColor.RGB = RGB(0, 0, 0)   '黒
  '        .Shapes.Range(ShpN).Group 'グループ化する。
    End With

    Set Shp1 = Nothing: Set Shp2 = Nothing: Set Shp3 = Nothing: Set Shp4 = Nothing
    Set Shp5 = Nothing: Set Shp6 = Nothing: Set Shp7 = Nothing:
 End Sub

 Sub colorTestbar() '塗りつぶし図形のグループ化
    Dim ShpN(1 To 7) As Variant
    Dim Shp1 As Shape, Shp2 As Shape, Shp3 As Shape, Shp4 As Shape
    Dim Shp5 As Shape, Shp6 As Shape, Shp7 As Shape

      With ActiveSheet
        With .Shapes.AddShape(msoShapeRectangle, 330, 30, 170, 10)
          ShpN(1) = .Name
          .Fill.ForeColor.RGB = RGB(255, 0, 0)   '赤
        End With
        With .Shapes.AddShape(msoShapeRectangle, 340, 40, 170, 10)
          ShpN(2) = .Name
          .Fill.ForeColor.RGB = RGB(0, 255, 0)   '緑
        End With
        With .Shapes.AddShape(msoShapeRectangle, 350, 50, 170, 10)
          ShpN(3) = .Name
          .Fill.ForeColor.RGB = RGB(0, 0, 255)  '青
        End With
        With .Shapes.AddShape(msoShapeRectangle, 360, 60, 170, 10)
          ShpN(4) = .Name
          .Fill.ForeColor.RGB = RGB(255, 255, 0)  '黄色
        End With
        With .Shapes.AddShape(msoShapeRectangle, 370, 70, 170, 10)
          ShpN(5) = .Name
          .Fill.ForeColor.RGB = RGB(255, 0, 255)  'マゼンタ
        End With
        With .Shapes.AddShape(msoShapeRectangle, 380, 80, 170, 10)
           ShpN(6) = .Name
          .Fill.ForeColor.RGB = RGB(0, 255, 255)   'シアン
        End With
        With .Shapes.AddShape(msoShapeRectangle, 390, 90, 170, 10)
          ShpN(7) = .Name
          .Fill.ForeColor.RGB = RGB(0, 0, 0)   '黒
        End With
        .Shapes.Range(ShpN).Group 'グループ化する。
    End With

    Set Shp1 = Nothing: Set Shp2 = Nothing: Set Shp3 = Nothing: Set Shp4 = Nothing
    Set Shp5 = Nothing: Set Shp6 = Nothing: Set Shp7 = Nothing:
 End Sub
 ichinose


     Dim ShpN(1 To 2) As Variant は(1 to 7)
 はコピミスでした。

 どうもWith〜 あるいは set の使い方がよく理解というか 知識不足です。
 これだと WithのかわりにSetをつかうような形ですが
 shpNもいらない 簡潔なコードです。

 ほんとうに はやく頂きありがとうございます。
 今日は天気のように気分が一日晴れです 先生にあっても Have a great day!
 では (はんにゃ


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.