VBA“查找”function发现错误的单元格

我写了一个创buildbutton的VBA“Sub”,该button做了几个工作(我只写了第一个工作的代码,其他工作不相关)。

第一份工作应该是find包含string“Country”的单元格的位置。 所以它会find包含string“Country”的单元格,然后它会find这个单元格的列号(bc)和行号(br)。

值为“Country”的单元格位于“I7”单元格中,或以数字格式“单元格”(7,9)。 它工作没有错误,但我得到不同的结果,如bc = 7和br = 1(“G1”)。 有趣的一点是,单元格“G1”是空的。

现在它给出了像“I4”的结果,它也是空的,你可以看到下面。

目标单元格的位置与字符串“国家”

有没有人有任何关于这个错误的想法?

Private Sub Button1_Click() Dim b1 As Range Dim bc As Integer, br As Integer With Sheet5.Range("a1:z200") Set b1 = .Find(Name:="Country", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not b1 Is Nothing Then bc = ActiveCell.Column br = ActiveCell.Row MsgBox (bc) End If End With End Sub 

Find方法不会更改活动单元格。 你的代码基本上是正确的,只需要从b1范围对象中获取行和列:

 Private Sub Button1_Click() Dim b1 As Range Dim bc As Integer, br As Integer With Sheet5.Range("a1:z200") Set b1 = .Find(Name:="Country", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not b1 Is Nothing Then bc = b1.Column br = b1.Row MsgBox (bc) End If End With End Sub 

顺便说一句,你可能想考虑使用更有意义的variables名称。 在一个月左右的时间里,当你回到代码中时,variablesb1可能对你来说没有任何意义。

如果您期望目标单元格处于活动状态,请添加激活:

 If Not b1 Is Nothing Then b1.activate ... 

您的代码可能会继续使用活动activecell以便快速修复。