查找方法有小宽度列的问题



我在一个函数中工作,它给我找到一个值的列。我在做这件事上遇到了困难……但是我成功了!!

错误,信不信由你,是发现方法有问题,在单元格的宽度太小找到值…这有这么蠢吗?

这是电话…

Private Sub CommandButton3_Click()
 Direccion = BuscarCol(2)
 MsgBox "the cell address is " & Direccion
End Sub

这是函数…

Function BuscarCol(Fecha As Integer) As String
Dim RangoFech As Range
With Sheets("REGISTRO").Range("A1:IN1")
Set RangoFech = .Find(What:=Fecha, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False)
    If Not RangoFech Is Nothing Then
        BuscarCol = ConvertToLetter(RangoFech.Column)
End If
End With
End Function

哦,我还有一个将列号转换为字母的方法,但这从来都不是问题。

Function ConvertToLetter(iCol As Integer) As String
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(iCol / 27)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
  ConvertToLetter = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
  ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function

所以…你能告诉我这是对的吗?Find方法有这个问题吗?

如果您在查找框中选择查找:值,它将只查找可见的值。如果列是隐藏的,它就找不到它。如果列太窄而不能显示该值,它将显示###,它将找不到它。即使您将单元格格式设置为;;;以有效地隐藏该值,它也不会找到它。

如果你选择查找:公式,它会在所有这些情况下找到它。

但是如果你有一个生成值的公式,而该值不存在于公式的文本中,它将找不到它。那么=200+22在单元格中你搜索222

  • 在值:只会发现它,如果它是可见的
  • 在公式中:将找不到它

这似乎是一个奇怪的设计决定。我的理论是,该算法使用Range.Text属性。该属性返回单元格中可见的内容,例如窄列的###,而不是.Value.Value2

相关内容

  • 没有找到相关文章

最新更新