|
カド さん、皆さん、こんにちは。
>命名の方法を知りません。
>このようなことが出来るのであれば、教えてください。
皆さんのご意見をコードにしてみました。
Excel2000で確認しました。
'=======================================================
Sub main()
Dim shpnm()
shpnm = get_shp_name(Range("a1:c10"))
If VarType(shpnm) <> vbBoolean Then
If UBound(shpnm) > 1 Then ActiveSheet.Shapes.Range(shpnm).Group
End If
End Sub
'=======================================================
Function get_shp_name(rng As Range)
Dim shp As Shape
Dim shpnm()
Dim sht As Worksheet
Set sht = rng.Parent
idx = 1
With rng
For Each shp In sht.Shapes
If shp.Top >= .Top And shp.Top + shp.Height <= .Top + .Height _
And shp.Left >= .Left And shp.Left + shp.Width <= .Left + .Width Then
ReDim Preserve shpnm(1 To idx)
shpnm(idx) = shp.Name
idx = idx + 1
End If
Next
End With
If idx > 1 Then
get_shp_name = shpnm()
Else
get_shp_name = False
End If
End Function
上記は、A1:C10の範囲内のShapeオブジォクトをグループ化するコードです。
後は、Typeを調べて特定のShapeオブジェクトのみグループ化するということも
考えられますね!!それは、上記のコードに追加して下さい。
|
|