iT邦幫忙

0

請問vba回圈內的變數為什麼一直執行都沒法去到Then之下程式

kuen9791 7 年前8817 瀏覽

Sub Macro5()
x = 2
s範圍e3 = Worksheets("速勢榜").Cells(3, 5) - 5

For Each s回圈範圍e In Worksheets("速勢榜").Range("e3:e16")
x = x + 1
If s回圈範圍e.Value < s範圍e3 Then

s較弱馬匹 = Cells(x, 2).Value

For Each s馬匹 In Worksheets("速勢榜").Range("cd6:cd45")
y = y + 1
If s馬匹.Value Like s較弱馬匹 Then
'為什麼這行總是無法執行...一直都沒有將字串"Times New Roman"給變數s馬匹
s馬匹.Value = "Times New Roman"

End If
Next s馬匹

End If

Next s回圈範圍e

End Sub

2 個回答

8
海綿寶寶
iT邦超人 1 級 ‧ 7 年前
最佳解答

根據這裡的說明
Like是要Like「pattern」而不是like「值」

而光看程式碼的猜測
應該是拿兩個值去做比較
因而造成IF的判斷式不會成立
也就不會進入THEN之下的程式

看更多先前的回應...收起先前的回應...
kuen9791 iT邦新手 5 級 ‧ 7 年前 檢舉

謝謝....但我改為If s馬匹.Value Like TypeName(s較弱馬匹) Then都一樣不成立...真煩惱呵

海綿寶寶 iT邦超人 1 級 ‧ 7 年前 檢舉

應該也不是 TypeName
我提供的URL裡有一個例子
"[ABC大]" '名稱為A或B或C或大的工作表
表示是「A」或「B」或「C」或「大」四種值

所以你要提供的pattern
是類似
什麼字元開頭的
什麼字元結尾的
中間有幾個固定字元
....之類的

kuen9791 iT邦新手 5 級 ‧ 7 年前 檢舉

謝謝...但我改成Sub Macro4()
x = 2
s範圍e3 = Worksheets("速勢榜").Cells(3, 5) - 5 '用於比較的範圍再-5
For Each s回圈範圍e In Worksheets("速勢榜").Range("e3:e16") '在Range("e3:e14")內回圈
x = x + 1
If s回圈範圍e.Value < s範圍e3 Then '兩變數相同時Then
回圈範圍e = Cells(x, 2).Value
s較弱馬匹 = Cells(x, 2).Value
For Each s馬匹 In Worksheets("速勢榜").Range("cd6:cd45")
s馬匹 = s馬匹.Value
If s較弱馬匹 = s馬匹 Then
'我看見這裡兩個變數的型態和結果都是同一字串...但都不能執行Then..嗚嗚
Range("CD7").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Else

End If
Next s馬匹
End If
Next s回圈範圍e
End Sub

海綿寶寶 iT邦超人 1 級 ‧ 7 年前 檢舉

有沒有可能改用VLOOKUP函數?
或許可以達到你要的功能?

sunnycheck iT邦新手 1 級 ‧ 7 年前 檢舉

程式碼中用'中文'真的看不順眼..ㄎ0ㄎ~
anyway....你說
If s較弱馬匹 = s馬匹 Then
'我看見這裡兩個變數的型態和結果都是同一字串...但都不能執行Then..嗚嗚

那你有無去判斷'長度'是否一樣呢?

misadm iT邦高手 10 級 ‧ 7 年前 檢舉

進入偵錯模式,再配合監看視窗,這樣也找不出為什麼嗎?
If s馬匹.Value Like s較弱馬匹 Then
'為什麼這行總是無法執行...一直都沒有將字串"Times New Roman"給變數s馬匹
s馬匹.Value = "Times New Roman"
End If

misadm iT邦高手 10 級 ‧ 7 年前 檢舉

抱歉!不小心按到送出 ^^|||

我的意思是說,只要逐行進行偵錯,再配合監看視窗,因該很容易知道 s馬匹.Values較弱馬匹為何不成立。

misadm iT邦高手 10 級 ‧ 7 年前 檢舉

這一行:s較弱馬匹 = Cells(x, 2).Value
改成:s較弱馬匹 = Cells(x, 2).Text 不知道有沒有差??

還有,為什麼要 s馬匹 = s馬匹.Value?我如果用 .Value 會出現錯誤耶!

再提一個,你要不要事先都把變數給宣告一遍看看呀?之前我也有發生莫名奇妙的狀況,後來把所有變數都宣告過一次,就正常了耶!

kuen9791 iT邦新手 5 級 ‧ 7 年前 檢舉

感謝misadm大大...有見地...嘻嘻..執行到了...真的是要改成Text

2
shunyuan
iT邦研究生 1 級 ‧ 7 年前

確定這是 VBA 不是 VAB 嗎?

kuen9791 iT邦新手 5 級 ‧ 7 年前 檢舉

VAB 是什麼...我是玩excel2003

sunnycheck iT邦新手 1 級 ‧ 7 年前 檢舉

我是玩 excel/word 2000 VBA~
VAB是新的嗎?

外獅佬 iT邦大師 1 級 ‧ 7 年前 檢舉

我是玩NBA Live 2010說.....(拖走)...

我要發表回答

立即登入回答