簡體   English   中英

如果單元格值包含在另一個工作表中,則為Excel vba

[英]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.interiorr.interiorColumns(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM