在Excel 2010中使用带有相交的VBA VLOOKUP

我有一个用于input仪器数据和相关读数的电子表格。 有多个工具从validation列表进入“All_Inst”的命名范围。 当仪器更改时,我需要清除与不再适用的条目相关联的行中的数据。 在这个数据不同的仪器,我存储在一个简单的2列表“Delete_Data_TBL”的各种组合。 从那里我试图用一个VLookup来提供一个case语句来清除可用的单元格。

我已经成功地使用查询值的硬编码值testing了交叉之外的vlookup。 我认为问题是在vlookup中使用c.value,但我找不到什么语法使用。 我尝试将c.value分配给一个variables,并将variables传递给vlookup,但无法使其工作,尽pipe我不确定语法。

我试过的有点简化的版本如下:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Dim d As Integer '***Check if any ALL_Inst cells have been changed If Not Intersect(Target, Range("All_Inst")) Is Nothing Then 'Evaluate the cell that has changed to determine what should be set to "" For Each c In Intersect(Target, Range("All_Inst")).Cells d = Application.WorksheetFunction.VLookup(c.Value, Sheets("Inst_Tables").Range("Delete_Data_TBL"), 2, False) Select Case d Case 0, 5 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" c.Offset(0, 11).Value = "" c.Offset(0, 13).Value = "" c.Offset(0, 15).Value = "" c.Offset(0, 17).Value = "" Case 3 c.Offset(0, 15).Value = "" c.Offset(0, 17).Value = "" Case 4 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" c.Offset(0, 11).Value = "" c.Offset(0, 13).Value = "" Case 6, 7 c.Offset(0, 4).Value = "" Case 9 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" Case Else 'Do Nothing End Select Next End If End Sub 

我很抱歉cl.value ,我没有足够的声誉发表评论,但我认为你的问题是当cl.value没有在范围内find。 你可以添加一些error handling,如下所示:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Dim d As Integer` '***Check if any ALL_Inst cells have been changed If Not Intersect(Target, Range("All_Inst")) Is Nothing Then 'Evaluate the cell that has changed to determine what should be set to "" For Each c In Intersect(Target, Range("All_Inst")).Cells on error resume next d = Application.WorksheetFunction.VLookup(c.Value,Sheets("Inst_Tables").Range("Delete_Data_TBL"), 2, False) if isempty(d) = false then Select Case d Case 0, 5 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" c.Offset(0, 11).Value = "" c.Offset(0, 13).Value = "" c.Offset(0, 15).Value = "" c.Offset(0, 17).Value = "" Case 3 c.Offset(0, 15).Value = "" c.Offset(0, 17).Value = "" Case 4 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" c.Offset(0, 11).Value = "" c.Offset(0, 13).Value = "" Case 6, 7 c.Offset(0, 4).Value = "" Case 9 c.Offset(0, 1).Value = "" c.Offset(0, 4).Value = "" c.Offset(0, 7).Value = "" Case Else 'Do Nothing End Select end if Next End Sub