返回列表 上一主題 發帖

select case 的用法

謝謝-stillfish00 ,ok了!
不過,可以再追加一個問題嗎?
怎麼把第二個迴圈與第一個一起寫進去,我搞好 ...
eric093 發表於 2013-7-29 16:55

如果 Case 只會選擇到一個條件, 建議直接用 if 來實現:
Select Case True
       Case aa Like "*成交*"
...                  
End Select
可改成
If aa Like "*成交*" Then
...
Edn If
一方面程式看起來較簡潔,
一方面若執行次數非常多時也可節省些執行時間.

TOP

本帖最後由 luhpro 於 2013-7-30 00:55 編輯
了解,那麼Case aa Like "*成交*"可以有2個條件以上嗎?
Case aa Like "*成交*" or "*未成交*",像這樣嗎
eric093 發表於 2013-7-29 23:40

你應該要用 Case aa Like "*成交*" Or aa Like "*未成交*" (在 Or 的左右邊都應該要放完整的條件式)
其實 aa Like "*成交*" 就已經有包含 aa Like "*未成交*" 了. (因為 "未成交" 此值對於 Like "*成交*" 是 True)

Select Case 較常用於 "同一變數(或標的)" 於不同值下需有不同的處理方式(即非單純藉由公式或程式就能實現其目的)時使用,(有依某標的的條件或值來做 "分流" 的意味)
而 If 則較常用於具有排它性條件的需求下使用.(有層層篩選的意味)

Select Case 指出要比對的標的, 而 Case 則指出該標的應判斷的條件(可用類似 Case Is > 5 之類的條件式)或值 ,也因皆為相同標的,故Case不需指明標的.
除非你用 Select Case True, 那麼所有 Case 的條件標的都應該是相同的,
否則即便非該摽的的第1個條件式成立, 也不會執行其下的程序,而是會繼續跑去判斷下一個Case是否成立(一旦不成立立刻結束),總之容易發生非預期結果.

其形式為 :
With Target ' 標的儲存格
  Select Case .Row ' 儲存格列號
    Case 1 ' 若該儲存格位於第 1 列
   ...
    Case 9 ' 若該儲存格位於第 3 列, 此處第 2 ~ 8 列不處理, 故不適用 For ...Next
    ...
    Case 13 ' 第 13 列
   ...
    Case Else ' 若列號非上述情形時於此處理
    ...
  End Select
Edn With
若上式改用 If 來表示,則為
With Target ' 標的儲存格
   If .Row=1 Then  ' 若該儲存格位於第 1 列
   ...
    ElseIf .Row= 9 Then ' 若該儲存格位於第 9 列, (若儲存格位於第 2 ~ 8 列則不會處理, 故不適用 For ...Next, 或公式)
    ...
    Elseif .Row=13 Then ' 若該儲存格位於第 13 列
   ...
    Else ' 若列號非上述情形時於此處理
    ...
  End If
Edn With

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題