Shape の Typeプロパティについては
次のページを参照してください。
参:
MsoShapeType 列挙型
Typeプロパティ が msoAutoShape の場合は
AutoShapeType プロパティを使ってさらに区別できます。
参:
AutoShapeType プロパティ
まず、
まとめて扱いたいTypeを持つ
Shapeの名前を入れた配列を作ります。
そして、この配列を
Shapes.Range プロパティの引数に使うことで
指定したTypeのShapeを
同時にプロパティを変更するなど、
まとめて扱えます。
macro111030aは、
アクティブシートのテキストボックスすべての
高さと幅を変更します。
macro111030bは、
アクティブシートのオートシェイプで四角すべての
Typeプロパティ が msoAutoShape の場合は
高さと幅を変更します。
変更できるプロパティは、
TypeやAutoShapeTypeで異なると思います。
コードはこちら
ShapeをTypeごとに扱うコード:
Sub macro111030a() 'Option Base 1で実行 'シェイプのTypeごとにオブジェクトに入れる 'Typeごと
Dim i As Integer Dim num As Integer Dim strName() As Variant num = 0 For i = 1 To ActiveSheet.Shapes.Count If ActiveSheet.Shapes(i).Type = msoTextBox Then ReDim Preserve strName(num + 1) strName(num + 1) = ActiveSheet.Shapes(i).Name num = num + 1 End If Next i 'ActiveSheetのすべてのテキストボックスの高さを幅を変更 With ActiveSheet.Shapes.Range(strName) .Height = 100 '高さ .Width = 180 '幅 End With
End Sub
Sub macro111030b() 'Option Base 1で実行 'シェイプのTypeごとにオブジェクトに入れる 'Type = msoAutoShapeの場合 'AutoShapeTypeごと
Dim i As Integer Dim num As Integer Dim strName() As Variant num = 0 For i = 1 To ActiveSheet.Shapes.Count If ActiveSheet.Shapes(i).Type = msoAutoShape Then If ActiveSheet.Shapes(i).AutoShapeType = _ msoShapeRectangle Then ReDim Preserve strName(num + 1) strName(num + 1) = ActiveSheet.Shapes(i).Name num = num + 1 End If End If Next i 'ActiveSheetのすべてのmsoShapeRectangleの高さを幅を変更 With ActiveSheet.Shapes.Range(strName) .Height = 100 '高さ .Width = 180 '幅 End With
End Sub
|
実際のところ
シェイプの種類の全部はまだ把握していないので
勉強中です。
コメント