With nGameSlide
.Shapes("Oval 23").Fill.ForeColor.RGB = RGB(255, 192, 0)
.Shapes("Oval 39").Fill.ForeColor.RGB = RGB(255, 192, 0)
.Shapes("Oval 61").Fill.ForeColor.RGB = RGB(255, 192, 0)
.Shapes("Oval 72").Fill.ForeColor.RGB = RGB(255, 192, 0)
.Shapes("Oval 98").Fill.ForeColor.RGB = RGB(255, 192, 0)
End With
i = 1 to 5 Step 1如果形狀按順序排列,我們可以使用 For ,但是在上述情況下,是否可以使用Select Case? 將如何簡化代碼?它會是類似的東西Select Case 23, 39, 61, 72, 98嗎?
uj5u.com熱心網友回復:
您使用 Select Case 的建議是完全錯誤的。
根據@Raymond Wu 的建議,最好使用回圈,但是,我會使用 for each 回圈作為其更簡單的語法。
Dim myNum as variant
For each myNum in Array(23, 39, 61, 72, 98)
nGameSlide.Shapes("Oval " & CStr(myNum)).Fill.ForeColor.RGB = RGB(255, 192, 0)
Next
更好的方法是將 for each 回圈封裝在 sub 中并傳入數字以用作引數。
Public Sub PaintSlides(byref ipArray as variant)
Dim myNum as variant
For each myNum in ipArray
nGameSlide.Shapes("Oval " & CStr(myNum)).Fill.ForeColor.RGB = RGB(255, 192, 0)
Next
end sub
uj5u.com熱心網友回復:
您可以使用 Select Case
For Each Shape in Shapes
Select Case Shape.Name
Case "Oval 23", "Oval 39", "Oval 61", "Oval 72", "Oval 98"
'Do something
Case Else
'Do nothing
End Select
Next Shape
使用此方法有一些優點,即您可以輕松添加或更改特定shape.
需要注意的是,它會遍歷 all Shapes,因此如果幻燈片中的形狀超過 5 個,則可能比使用 @Raymond 建議的 array() 方法慢一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/339455.html
下一篇:VBA空日期引數
