[英]Excel vba if cell value is included in another worksheet
我有名為“ 1Q FY 18”的工作表,這是第二張工作表,名為“假日”的工作表,是第七工作表。
“ 1Q FY 18”的第12行包含從4/1到6/30的日期。 從“ B20”到“ B35”的單元格包含2018年的假期。
我想突出顯示第二張工作表中具有匹配值range(“ B20:B35”)的列。 換句話說,我想為假期設置顏色。
我的代碼是這樣的。
Sub Holiday()
lastr = Worksheets(2).UsedRange.Rows.Count
lastc = Worksheets(2).UsedRange.Columns.Count
Worksheets(2).Activate
Set ws7 = Worksheets("Holiday")
Set rng1 = ws7.Range("B20:B35")
For i = 15 To lastc
If Not IsEmpty(Application.WorksheetFunction.VLookup(Cells(12, i).Value, rng1, 1)) Then
Range(Cells(13, i), Cells(lastr - 2, i)).Interior.ColorIndex = 6
End If
Next i
End Sub
但是與此錯誤發生。 當我調試時,它突出顯示
****如果不是IsEmpty(Application.WorksheetFunction.VLookup(Cells(12,i).Value,rng1,1))然后****
我該怎么辦?
這是一個執行您描述的簡單宏。 我在其中放置了一個.select
語句,因此您可以單步執行代碼以查看其工作方式,但此后應將其刪除。 一旦了解了它的工作原理,就可以進行更改以滿足您的需求。 如果您有任何問題,請告訴我。 動畫的gif顯示工作簿的每一頁,然后顯示宏運行。 在我的示例中,我只是選擇每周放假一次,但是您可以更改它。 我還包括一個子,可以方便地重置顏色。 (您說過您想給列上色,但我只是給單元格上色。如果您真的想給整個列cell.interior
, r.interior
用Columns(cell.Column).interior
替換cell.interior
..和r.interior
...。 Columns(cell.Column).interior
...)
Sub test()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim r1 As Range, r2 As Range, cell As Range, holidayCell As Range
Set sh1 = Worksheets("1Q FY 18")
Set sh2 = Worksheets("Holiday")
Set r1 = sh1.Range("A12")
Set r1 = sh1.Range(r1, r1.End(xlToRight))
Set r2 = sh2.Range("B20:B35")
resetColor r1
For Each cell In r1
cell.Select
For Each holidayCell In r2
If cell = holidayCell Then
cell.Interior.Color = vbYellow
Exit For
End If
Next
Next cell
End Sub
Sub resetColor(r As Range)
With r.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.