我写了一个VBA" Sub"这创建了一个按钮,该按钮可以完成多个工作(我只为第一个工作写下了代码,其他工作不相关)。
第一个作业应该找到包含字符串" Country"的单元格的位置。因此,它将找到包含字符串" Country"的单元格,然后它将找到该单元格的列号(bc)和行号(br)。
值为" Country"的单元格是在" I7"单元格,或数字格式单元格(7,9)。它没有错误,但我得到了不同的结果,如bc = 7和br = 1(" G1")。有趣的是,单元格" G1"是空的。
现在它给出的结果类似于" I4",它也是空的,如下所示。
有没有人对这个bug有任何想法?
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
答案 0 :(得分:1)
如果您希望目标单元格处于活动状态,请添加激活:
If Not b1 Is Nothing Then
b1.activate
...
您的代码可能会继续使用activecell
,因此可以快速修复。
答案 1 :(得分:1)
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
顺便说一句,您可能想要考虑使用更有意义的变量名称。在一个月左右的时间里,变量b1
对你回到代码时可能没什么意义......