根据一部分数据的标题find一个单元格,然后select该部分的最后一行

我试图find一个标题行的文本,根据单元格的值相对于被单击的单元格。我试图做到这一点的方式如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim var1 As Variant Dim var2 As Variant Dim var3 As Variant Dim FormName As String FormName = "New Form" Static NewFormCell As Range Application.ScreenUpdating = False If Not Intersect(Target, Range("G16:X80")) Is Nothing Then If Target.Cells.Count = 1 Then var1 = Cells(Target.Row, 2).Value var2 = Cells(15, Target.Column).Value If Not (IsEmpty(var1)) And Not (IsEmpty(var2)) And var2 <> "+" And Target.Interior.ColorIndex <> 2 And Target.Borders(xlEdgeLeft).LineStyle <> xlNone Then If IsEmpty(Target) Then Target.Value = "X" Target.HorizontalAlignment = xlCenter Target.VerticalAlignment = xlCenter Target.Font.Bold = True Dim Header As Range Set Header = Range("A54:E160").Find(var2, LookIn:=xlValues) Header.Offset(1, 1).End(xlDown).EntireRow.Select Dim CopyCell As Range 'Header.End(xlDown).EntireRow.Insert 'Set CopyCell = Header.End(xlDown). [offset?] 'CopyCell.Value = var1 Else Target.ClearContents End If Else Exit Sub End If End If End If Application.ScreenUpdating = True End Sub 

问题是VBA抛出运行时错误91(“对象variables或With块variables未设置”)。 然后突出显示该部分代码的最后一行。 由于我在前一行中设置了这个variables,所以我不确定为什么我会收到这个错误,或者如果我正在以正确的方式去做。

任何投入将不胜感激!

编辑:我通过在更广泛的范围search清除上述问题。 我想要select的单元格已合并,但我仍然认为该值存储在列A中。但是,此代码仍然没有完成我想要的内容:

我想select该部分中的最后一行(不是表格中的最后一行数据,而是列B中最后一个连续的数据),但是现在我的代码一直跳到表单的底部。

问题是你的.Find没有find价值。 在这种情况下,你可以添加一些代码来处理。

 ... Dim Header As Range Set Header = Range("A59:A159").Find(var2, LookIn:=xlFormulas) If Header Is Nothing Then ' There's no value found, so do something... msgbox(var2 & " was not found in the range, will exit sub now." Exit Sub End If MsgBox Header ... 

当然,有很多方法可以处理这个问题。 如果你还想执行其他的代码,那么把所有的东西都包含在If Header is Nothing Then // 'do something // Else // 'other code // End IFtypes的东西。

这实际上只取决于你想要做什么。 同样,你的错误是由于没有findvar2的事实而引起的,所以在这种情况下只需find其他的东西。