为什么在选择单个时形状格式会更改为其他形状
Why Shape Format changes for other Shapes while selecting Single
我正在尝试创建一个函数来保持所有形状的颜色和形状格式,除了正在 selected 的单个形状。之后,如果我 select 其他,那么它应该使用与之前相同的颜色和格式进行转换。
但是我的函数会更改所有形状的颜色和格式。
我有这个格式。
当我 运行 该代码时,它会改变所有颜色。
我不知道如何实现这个,将不胜感激。
Sub Shape1()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 17").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "January"
End Sub
Sub Shape2()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 18").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "February"
End Sub
Sub Shape2()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 19").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "March"
End Sub
使用 Application.Caller 你可以捕捉到被点击的形状,让你最小化你的代码。在此示例中,我重命名了选择窗格中的形状,如图所示。
Sub Months_ProcessShape()
Dim callingShape As Variant
Dim rCell As Range: Set rCell = Sheet1.Range("K5") ' Month cell
' Calling shape
callingShape = Application.Caller
' Set color
Sheet1.Shapes("shGrp_Months").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes(callingShape).ShapeStyle = msoShapeStylePreset27
' Write month in cell
Select Case callingShape
Case "shp_Jan"
rCell.Value = "January"
Case "shp_Feb"
rCell.Value = "February"
Case "shp_Mar"
rCell.Value = "March"
Case "shp_Apr"
rCell.Value = "April"
Case "shp_May"
rCell.Value = "May"
End Select
End Sub
我正在尝试创建一个函数来保持所有形状的颜色和形状格式,除了正在 selected 的单个形状。之后,如果我 select 其他,那么它应该使用与之前相同的颜色和格式进行转换。
但是我的函数会更改所有形状的颜色和格式。
我有这个格式。
当我 运行 该代码时,它会改变所有颜色。
我不知道如何实现这个,将不胜感激。
Sub Shape1()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 17").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "January"
End Sub
Sub Shape2()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 18").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "February"
End Sub
Sub Shape2()
Sheet1.Shapes("Group 16").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes("Freeform 19").ShapeStyle = msoShapeStylePreset27
Sheet1.Range("B5").Value = "March"
End Sub
使用 Application.Caller 你可以捕捉到被点击的形状,让你最小化你的代码。在此示例中,我重命名了选择窗格中的形状,如图所示。
Sub Months_ProcessShape()
Dim callingShape As Variant
Dim rCell As Range: Set rCell = Sheet1.Range("K5") ' Month cell
' Calling shape
callingShape = Application.Caller
' Set color
Sheet1.Shapes("shGrp_Months").ShapeStyle = msoShapeStylePreset41
Sheet1.Shapes(callingShape).ShapeStyle = msoShapeStylePreset27
' Write month in cell
Select Case callingShape
Case "shp_Jan"
rCell.Value = "January"
Case "shp_Feb"
rCell.Value = "February"
Case "shp_Mar"
rCell.Value = "March"
Case "shp_Apr"
rCell.Value = "April"
Case "shp_May"
rCell.Value = "May"
End Select
End Sub