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

我正在一个函数,它给我的专栏,它至less有一个价值。 我很难做到这一点…但是我做到了!

错误,不pipe你信不信,Find方法在查找宽度太小的单元格中的值时会遇到问题…可能是如此愚蠢?

这是电话

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

这是function…

 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方法有这个问题?

如果在“查找”框中select“查找范围:值”,则只会查找可见的值。 如果该列被隐藏,则不会find它。 如果列太窄而不能显示值,而是显示###,则不会find它。 即使你把单元格格式化为;;; 要有效地隐藏价值,就不会find它。

如果你selectLook in:Formulas,它会在所有这些情况下find它。

但是如果你有一个产生一个值的公式,并且这个值在公式的文本中不存在,它就不会find它。 所以=200+22在一个单元格中,你search222

  • 在值中:只有在可见的情况下才能find它
  • 在公式中:不会find它

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