VBA 代码检查日期范围内每个日期是否存在条目

VBA 代码检查日期范围内每个日期是否存在条目

我需要 VBA 代码来检查日期范围内每个工作日的值是否存在条目

如果要搜索的值在 C4 中,而日期范围在工作簿 A 的 B7 和 B9 中,则它应该检查工作簿 B 中“跟踪器”工作表中的范围 A:E(其中要搜索的值在 A 列中,而各个日期在 E 列中),如果日期范围内的任何星期几值存在于范围 A:E 中,则它应该返回一个消息框。

即,如果 C4 中的值为 X 且 B7 和 B9 中的日期范围为 3/1/2022 和 3/10/2022,则它应该在工作簿 B 中范围 A:E 的 A 列中查找所有“X”个条目,并检查 E 列中是否存在每个工作日的相应条目,如果找到一个匹配项,它应该返回一个 msgbox 并退出子程序

这是我尝试过的。

  Set wsDest = Workbooks.Open("G:\Manager Folder\Test\Leave Tracker Master.xlsx").Worksheets("Tracker")
  st = DateValue(wsCopy.Range("B7"))
  myrange1 = wsDest.Range("A:F")
  en = wsCopy.Range("c4")
  
  
  Do While st <= wsCopy.Range("B9").Value
    If (Application.WorksheetFunction.VLookup(en, myrange1, 5, False) = en) Then
    MsgBox "Leave Request already exists"
    Exit Sub
    End If
    st = st + 1
  Loop
  Loop

答案1

find 和 findnext 才是最佳选择。我有点太早了,还在学习!!!以下是我解决问题的方法,基本的东西,很抱歉浪费了你的时间!

Set wsDest = Workbooks.Open("G:\Manager Folder\Test\Leave Tracker Master.xlsx").Worksheets("Tracker")
    
     Set myrange1 = wsDest.Range("A:A") 'to be changed to select current range
     en = wsCopy.Range("c4").Value
     Set st = myrange1.Find(en)
     st1 = wsCopy.Range("B7").Value
     
     If st Is Nothing Then
        Resume
     Else
        Do While st1 <= wsCopy.Range("B9").Value
            If (st.Offset(0, 4) = st1) Then
                MsgBox "Leave Request already exists"
                ActiveWorkbook.Close savechanges:=False
                Exit Sub
            End If
            st1 = st1 + 1
            st = myrange1.FindNext(st)
        Loop
     End If

相关内容