我写了一个程序,它会从vba中的一个范围中找到一个数字值并返回单元格的地址,但是程序会以绝对形式搜索不是实际值的数字。例如,当我搜索范围为0.5时,在范围内有-0.5,如果它首先出现,它将给出-0.5的位置。有没有办法让程序搜索实际的而不是绝对数字?这是该计划:
{{1}}
答案 0 :(得分:3)
好的,首先,不要使用Goto。只是谷歌,我不想写下百万分之一的原因。但是goto是非常糟糕的做法。
关于您的实际问题,请尝试将LookAt:=xlWhole
参数添加到.Find功能中。这样它只会找到整个搜索值匹配的单元格。
Set c = ActiveSheet.Cells(indicated.Row + n, Indicated.Column).Find(minvalue.Value, LookIn:=xlValues, LookAt:=xlWhole)
要避免goto,请按以下方式编写:
For n = 0 To indicated.Rows.Count - 1
Set c = ActiveSheet.Cells(indicated.Row + n, indicated.Column).Find(minvalue.Value, LookIn:=xlValues, LookAt:=xlWhole)
Next
if c is nothing then
For n = 0 To reference.Rows.Count - 1
Set c = ActiveSheet.Cells(reference.Row+n, reference.Column).Find(minvalue.Value, LookIn:=xlValues, LookAt:=xlWhole)
Next
End If
If Not c Is Nothing Then
findvalue = c.Address
findvaluerow = c.Row
findvaluecolumn = c.Column
Else
findvalue = 0
End If
更清洁,更明亮,更易于阅读和关注。是一样的,但也有效。 :)