2016-10-03 9 views
1

나는 하나의 값을 찾은 칼럼을 나에게주는 함수에서 작업하고 있었다. 나는 그것을 끝내는 데 어려움을 겪고 있었다. .. 그러나 나는 그것을 일하게했다!!Find 메서드에 작은 너비 열에 문제가 있습니까?

오류는 Find 메서드가 너비가 너무 작은 셀에서 값을 찾는 데 문제가 있다는 것입니다. 그렇게 바보 일 수 있습니까?

이 ..

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 메서드에 문제가 있습니까?

+0

사이드 노트, 'ConvertToLetter' 함수가 일부 값에 대해 실패합니다 (예 : 강력한 해결책은 53, 79, 80 ([대답 참조]) (http://stackoverflow.com/a/12797190/445425) –

답변

4

찾는 위치 : 찾기 상자의 값을 선택하면 표시되는 값만 찾습니다. 열이 숨겨져 있으면 찾지 못합니다. 열이 너무 좁아 값을 표시 할 수없고 대신 ###이 표시되면 찾지 못합니다. 값을 효과적으로 숨기기 위해 셀을 ;;;으로 포맷하더라도 값을 찾지 못합니다.

찾는 위치 : 수식을 선택하면 모든 경우에서 찾을 수 있습니다.

그러나 값을 생성하는 수식이 있고 해당 값이 수식의 텍스트에 없으면 찾을 수 없습니다. 그래서 =200+22는 셀에 당신은 222 값에

  • 검색 : 그것은 볼 수의 경우에만 그것을 발견 할 것이다
  • 이 공식에서
  • : 찾을 수 없습니다 그것은

그것은 이상한 디자인의 결정처럼 보인다 . 내 이론은 알고리즘이 Range.Text 속성을 사용한다는 것입니다. 이 속성은 .Value 또는 .Value2 대신 좁은 열에 ###와 같이 셀에 표시되는 내용을 반환합니다.