我正在嘗試創建一個函式,該函式保留所有形狀的顏色和形狀格式,除了正在選擇的單個形狀。之后,如果我選擇其他,則應將其轉換為與之前相同的顏色和格式。
但是我的函式更改了所有形狀的顏色和格式。
我有這種格式。

當我運行該代碼時,它會更改所有顏色。

我不知道如何實作這一點,您的幫助將不勝感激。
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
uj5u.com熱心網友回復:
使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391132.html
上一篇:使用vlookup公式自動填充“B”列中每個單元格的結果
下一篇:物件變數或未設定用于復制的變數
