« SheetsとWorksheets | トップページ | 1/10秒や1/100秒の時間計算 »

2013年2月17日 (日)

ShapeをTypeごとに扱う

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

実際のところ
シェイプの種類の全部はまだ把握していないので
勉強中です。

|

« SheetsとWorksheets | トップページ | 1/10秒や1/100秒の時間計算 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ShapeをTypeごとに扱う:

« SheetsとWorksheets | トップページ | 1/10秒や1/100秒の時間計算 »