2014-05-14 1 views
0

이것은 위생 ​​검사 일지 모르지만 Sub 또는 Function이 정의되지는 않습니다. 워크 시트에서 이것을 사용하여 선택된 범위 내에서 가장 긴 문자열을 찾고 싶습니다.Excel 하위 또는 함수가 정의되지 않았습니다.

Public Function LongestString(searchRange) 
    Dim rCell As Range 
    Dim rRng As Range 

    Dim longText As String 
    Dim longLen As Integer 

    longText = searchRange(0, 0).Value 
    longLen = Len(searchRange(0, 0).Value) 

    For Each rCell In searchRange.Cells 
     'Debug.Print rCell.Address, rCell.Value 
     If (Len(rCell.Value) > longLen) Then 
      longText = rCell(0, 0).Value 
      longLen = Len(searchRange.Cells(0, 0).Value) 
     End If 
    Next rCell 

    LongestString = longText 
End Function 
+0

'searchRange'는 무엇입니까? 그리고'Cells()'는 1부터 시작합니다 : 0은 에러를 일으 킵니다. –

+0

@PyschoData - 이것은 오타입니까? 이 함수는'testRange' 변수를 받지만 코드에'searchRange'를 사용합니다. – Roberto

+1

참고 일반 (배열) 수식은 이렇게 할 수 있습니다. 예 : Ctrl + Shift + Enter로 입력 된'MAX (LEN (A1 : C6))'모듈 –

답변

0

이 기능을 어떻게 부르시겠습니까? 다른 함수에서 호출하고 있으며 searchRange 객체를 전달하고 있습니까?

Public Function LongestString(searchRange as Range) as string 

는 또한 "longLen = 렌 (searchRange 교체 : 예

theString = LongestString("B1:C55") 

나는 또한 SearchRange의 객체 유형과뿐만 아니라 함수에서 반환 할 데이터 유형, 예를 선언 할 것입니다. 셀 (0, 0) .Value) "FOR 루프에서 longLen = Len (rcell (0, 0) .Value) 그래서 현재보고있는 셀의 길이를 가져옵니다. 완성 된 코드는 다음과 같아야합니다. (컴파일하기 위해 컴파일해야 할 수도 있습니다)

Public Function LongestString(searchRange As Range) As String 
    Dim rCell As Range 
    Dim rRng As Range 

    Dim longText As String 
    Dim longLen As Integer 

    longText = searchRange(0, 0).Value 
    longLen = Len(searchRange(0, 0).Value) 

    For Each rCell In searchRange.Cells 
     'Debug.Print rCell.Address, rCell.Value 
     If (Len(rCell.Value) > longLen) Then 
      longText = rCell(0, 0).Value 
      longLen = Len(rCell(0, 0).Value) 
     End If 
    Next rCell 

    LongestString = longText 
End Function 
+0

나는 이것이 대답 인 방법 그러나 나는 워크 시트에 가고 타이핑 '= LongestString (* 마우스로 범위 선택 *') '* 입력 * – PsychoData

관련 문제