问题描述
在我的工作簿的第 2 页中,我列出了员工的姓名、他们上班的日期、他们的工作班次以及旷工情况。在我的代码的第 1 表中,我有一个查找表,我打算在其中将员工的姓名输入到一个单元格中,并显示所有日期和此人工作的日期,以及轮班和旷工到查找表中。我尝试了很多东西,但这是我当前的代码:
Private Sub worksheet_change(ByVal Target As Range)
Dim Lookup As Worksheet
Dim Data As Worksheet
Dim LastRow As Long
Dim V As Range
Set Lookup = ThisWorkbook.Worksheets("Lookup")
Set Data = ThisWorkbook.Worksheets("Data")
Set V = Lookup.Range("A1:A2")
LastRow = Data.Cells(Rows.Count,"A").End(xlUp).Row
LookupCounter = 2
For i = 2 To LastRow
If Intersect(V,Target) Is nothing Then
Lookup.Range("B2:C2000").Delete
ElseIf Lookup.Range("A2") = Data.Cells(i,2) Then
Lookup.Cells(LookupCounter,2).Value = Data.Cells(i,1)
Lookup.Range("B2:B2000").NumberFormat = "mm/dd/yyyy"
Lookup.Cells(LookupCounter,3).Value = Data.Cells(i,9)
LookupCounter = LookupCounter + 1
End If
Next i
End Sub
我的目的是当输入新名称时,这会清除查找页面列中的信息,并输入新名称的新数据。我将名称与日期匹配的代码的第二部分有效,但我正在努力使用清除功能。我能做些什么来修复它?
解决方法
Option Explicit
Private Sub worksheet_change(ByVal Target As Range)
Dim Lookup As Worksheet,Data As Worksheet
Dim LastRow As Long,LookupCounter As Long,i As Long
With ThisWorkbook
Set Lookup = .Worksheets("Lookup")
Set Data = .Worksheets("Data")
End With
If Intersect(Lookup.Range("A1:A2"),Target) Is Nothing Then
Exit Sub
Else
' clear sheet
Lookup.Range("B2:C2000").Delete
LastRow = Data.Cells(Rows.Count,"A").End(xlUp).Row
LookupCounter = 2
' get data
For i = 2 To LastRow
If Data.Cells(i,2) = Lookup.Range("A2") Then
Lookup.Cells(LookupCounter,2).Value = Data.Cells(i,1)
Lookup.Cells(LookupCounter,3).Value = Data.Cells(i,9)
LookupCounter = LookupCounter + 1
End If
Next
Lookup.Range("B2:B2000").NumberFormat = "mm/dd/yyyy"
End If
End Sub