返回列表 上一主題 發帖

[發問] vba新手發問

Select Case  來替代 If else
Sub iif4()
    Dim arr, i
    arr = Range([a20], [a65536].End(3))
    For i = 1 To UBound(arr)
        Select Case arr(i, 1)
        Case Is >= 100
            arr(i, 1) = "通過"
        Case Is >= 0
            arr(i, 1) = "不通過"
        Case Else
            arr(i, 1) = ""
        End Select
    Next
    [c20].Resize(UBound(arr)) = arr
End Sub
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 11# ML089

謝謝ML089大大~
    Select Case用途有比較廣嗎?

TOP

回復 12# wayne0303


Select Case用途有比較廣嗎?
>> Select Case 和 if elseif,語法寫法不太一樣,但實際結果是一樣的,看個人喜好使用,感謝。

TOP

回復  ML089

謝謝ML089大大~
    Select Case用途有比較廣嗎?
wayne0303 發表於 2021-9-7 17:55


若是一個變數只有2~3種判斷,用 IF 比較簡單,3個以上判斷可以考慮用 Select Case
像下列範例之多項判斷用IF就很累吧!

Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

Sub iif3()
    Dim arr, i&,V,T$
    arr = Range([a20], [a65536].End(3))
    For i = 1 To UBound(arr)
         v= arr(i,1)
         t=switch(v>=100,"通過",v>=0,"不通過",v=v,"")
         arr(i, 1) = t
    Next
    [c20].Resize(UBound(arr)) = arr
End Sub

TOP

回復 13# samwang


感謝samwang大大 解答~

TOP

回復 14# ML089


了解~
謝謝ML089大大~

TOP

回復 15# 准提部林


哇~准大這個switch更簡潔~謝謝

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題