[[20111007180904]] 『VBAマクロで図形選択及び選択解除』(まこと) ページの最後に飛ぶ

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

 

『VBAマクロで図形選択及び選択解除』(まこと)

 マクロで描いた、赤色、青色、緑色の図形がそれぞれ複数個あります。
 描いた後に、Forecolor.RGBをたよりに色ごとに図形を選択しグループ化します。
 グループ化した後は、グループ名として例えば、赤、青、緑とグループの名前を付けます。
 名づけしたあとは、この名前を元に名前でグループを選択したいです。

この手法を教えてください。よろしくお願いします。

EXCEL2010、Windows7


 一例。(色番号は実際に設置したものに適宜変更)

 Sub Sample1()
    Dim vntR(), vntB(), vntG()
    Dim cntR As Long, cntB As Long, cntG As Long
    Dim n As Long
    Dim sp As Shape
    Dim myColor As Long

    n = ActiveSheet.Shapes.Count
    ReDim vntR(1 To n)
    ReDim vntB(1 To n)
    ReDim vntG(1 To n)

    For Each sp In ActiveSheet.Shapes
        myColor = sp.Fill.ForeColor.RGB
        Select Case myColor
            Case vbRed
                cntR = cntR + 1
                vntR(cntR) = sp.Name
            Case vbBlue
                cntB = cntB + 1
                vntB(cntB) = sp.Name
            Case vbGreen
                cntG = cntG + 1
                vntG(cntG) = sp.Name
        End Select
    Next

    If cntR > 0 Then ReDim Preserve vntR(1 To cntR)
    If cntB > 0 Then ReDim Preserve vntB(1 To cntB)
    If cntG > 0 Then ReDim Preserve vntG(1 To cntG)

    If cntR > 0 Then
        With ActiveSheet.Shapes.Range(vntR).Group
            .Name = "Group-Red"
        End With
    End If

    If cntB > 0 Then
        With ActiveSheet.Shapes.Range(vntB).Group
            .Name = "Group-Blue"
        End With
    End If

    If cntG > 0 Then
        With ActiveSheet.Shapes.Range(vntG).Group
            .Name = "Group-Green"
        End With
    End If

 End Sub

 (ぶらっと)

 >名づけしたあとは、この名前を元に名前でグループを選択したいです。

 みおとしてた。

 Sub SelectRed()
    ActiveSheet.Shapes("Group-Red").Select
 End Sub

 Sub SelectBlue()
    ActiveSheet.Shapes("Group-Blue").Select
 End Sub

 Sub SelectGreen()
    ActiveSheet.Shapes("Group-Green").Select
 End Sub

 (ぶらっと)

コメント返信:

[ 一覧(最新更新順) ]


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