標題: select case 的用法 [打印本頁] 作者: eric093 時間: 2013-7-29 14:38 標題: select case 的用法
請問使用select case 後若為字串,是否可以抓"含有"特定字串?
Select Case Sheets(1).Cells(i, 3).Value
Case "aa"
'''''''''''''''''''''''''''''''''''''作者: stillfish00 時間: 2013-7-29 15:26
謝謝-stillfish00 ,ok了!
不過,可以再追加一個問題嗎?
怎麼把第二個迴圈與第一個一起寫進去,我搞好久了
Dim aa As String
Dim row1, row2, row3, i, o, k, j As Integer
row1 = Sheets("1").Range("a65536").End(xlUp).Row
row2 = Sheets("2").Range("a65536").End(xlUp).Row
For i = 2 To row2
aa = Sheets("2").Cells(i, 3).Value
Select Case True
Case aa Like "*成交*"
Sheets("3").Select
row3 = Range("a65536").End(xlUp).Row
k = row3 + 1
Sheets("3").Cells(k, 1).Value = Sheets("2").Cells(i, 3)
Sheets("3").Cells(k, 2).Value = Sheets("2").Cells(i, 11)
Sheets("3").Cells(k, 3).Value = Sheets("2").Cells(i, 10)
Sheets("3").Cells(k, 4).Value = Sheets("2").Cells(i, 25)
End Select
Next
----------------------------------------------------------
row1 = Sheets("1").Range("a65536").End(xlUp).Row
row2 = Sheets("2").Range("a65536").End(xlUp).Row
For j = 2 To row2
For i = 2 To row1
If Sheets("3").Cells(j, 4) = Sheets("1").Cells(i, 2) _
And Sheets("3").Cells(j, 2) = Sheets("1").Cells(i, 25) Then
Sheets("3").Cells(j, 5).Value = Sheets("1").Cells(i, 5)
Exit For
End If
Next
Next作者: stillfish00 時間: 2013-7-29 19:12
如果 Case 只會選擇到一個條件, 建議直接用 if 來實現:
Select Case True
Case aa Like "*成交*"
...
End Select
可改成
If aa Like "*成交*" Then
...
Edn If
一方面程式看起來較簡潔,
一方面若執行次數非常多時也可節省些執行時間.作者: eric093 時間: 2013-7-29 23:40
了解,那麼Case aa Like "*成交*"可以有2個條件以上嗎?
Case aa Like "*成交*" or "*未成交*",像這樣嗎作者: luhpro 時間: 2013-7-30 00:52
本帖最後由 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作者: eric093 時間: 2013-7-30 02:00