[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートシェイプのグループ化』(どんまい)
選択されているシートにあるオートシェイプ(複数)を一つの グループにするマクロはどうすれば良いですか?
中途半端な内容なので、 編集 → ジャンプ → セル選択 → オブジェクト選択で、OK 図形の調整からグループ化。 をマクロ記録するとか。 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.