看板 Office 關於我們 聯絡資訊
軟體:EXCEL 版本:2013 各位大大好 小的最近剛學VBA 以下是我寫的VBA程式碼 Sub colorize() Dim a, b, c, d, e As String a = "鼠" b = "牛" c = "虎" d = "兔" e = "龍" ActiveSheet.Range("B2:D54").NumberFormatLocal = "@" For i = 2 To 54 If Cells(2, i) <> a Or b Or c Or d Or e Then Range("B2:D54").Cells(2, i).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent2 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With 想請問各位大大 IF判斷那裡如果只有一個條件就可以順利運行 但如果像上面這樣寫就會有 Type mismatch (Error 13) 的問題 我自己猜測是or不能用在字串上面,請教各位大大有什麼方法解決 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.35.132.61 ※ 文章網址: http://www.ptt.cc/bbs/Office/M.1396466523.A.F10.html ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 03:24:35
white306:cells() <> a or cells() <> b or cells().... 04/03 04:33
white306:附帶一提,dim a, b as string 只有 b 會被分配到 string 04/03 04:34
white306:a 會被宣告為變數 04/03 04:34
soyoso: ,資料型態為Variant 04/03 10:14
謝謝white306大大 soyoso大 我之前將變數宣告為Variant也還是無法順利執行 ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 11:54:06
soyoso:錯誤為if這行,"資料型態為variant"只是補充而已 04/03 11:59
我了解了soyoso大 另外我又碰到了問題 我將程式碼訂正完畢後 使用or判斷即便變數等於該儲存格的值 還是會跳到then的地方 但改用and就不會有這樣的問題 另外想問 使用cells(2,i)只能影響一列的儲存格 若要一次影響範圍中符合條件的所有儲存格應該要怎麼寫呢? ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 12:14:46
soyoso:格式化條件試試 04/03 12:17
如果要用VB達成要怎麼寫呢? 還有為什麼or改成and才能正確判斷呢 我是想寫如果儲存格的值不等於變數A~E內的值,就直接改儲存格底色 但使用or儲存格內的值等於變數A~E內的值,他還是直接執行THEN 但用and就能成功運行,or不是任一條件符合就執行then嗎? 一次問了好多 希望各位別生氣 ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 13:06:21
soyoso:有檔案可以提供嗎? 04/03 13:11
http://goo.gl/VqYRJX 麻煩您了 ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 13:29:46
I4Lione:「不是鼠」且「不是牛」→兩個都不是,條件才會成立 04/03 13:41
I4Lione:「不是鼠」或「不是牛」→永遠成立 04/03 13:41
I4Lione 聽你這麼一說突然懂了 請問I4Lione大有沒有一次更改所有不等於條件的CELL的方法 ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 13:54:31
soyoso:http://goo.gl/oKxI9U 試試用格式化條件 04/03 13:58
soyoso:就可以一次更改所有不等於條件 04/03 14:00
謝謝soyoso大 雖然有點看不懂但我會去爬文的 原來有這麼簡潔的寫法 真的是太有趣啦 XD ※ 編輯: z44x85r (218.35.132.61), 04/03/2014 14:04:51