2013-03-19 4 views
0

제 문제는 VBA에서 어떤 함수 (C++) 또는 Java (Java)를 호출했는지 모르는 사실입니다.이 for 루프를 함수로 변환하려고합니다.

둘 다 존재하므로 잠수정을 찾았습니까? 내가 평행하다고 생각하는 것은,하지만 그들은 내가 이해하는 것을 돌려주지 않는다.

저는 VBA에서 공식 교육을받지 못했기 때문에이 점이 좋지 않습니다. 내가 루프에 대한이 무엇을하고 있는지 않는 함수 (또는 메소드 또는 하위)를 만들려면 :

useInput = titles.Text 
useRec = rec.Text 
lastRow = 1 

For Each rngCell In rngData.Columns(1).Cells 'Traverse each row in Spreadsheet 
If useInput = rngCell.Value And LCase(useRec) = LCase(Cells(lastRow, 2)) Then 'If what the user input into the textbox matches a value in the spreadsheet 
    bothExist = True 'Set this to true, because both exist 

    otherUserForm.Show 'Call another userform created 

    titles = "" 'Set entries to null 
    rec = "" 
    Exit For 'Exit the for loop 
    End If 
    lastRow = lastRow + 1 'Counter 
Next rngCell 

그래서 루프의 요점은 단지 스프레드 시트를 탐색하고 정보를 입력 할 수있는 마지막 행을 찾을 수 있습니다, 그러나 제목과 rec가 이미 존재한다면 발견 된 내용을 수행합니다.

제 질문은 무엇을 만들어야 "lastRow?"를 반환합니까? 그 숫자가 무엇이든간에 필요하기 때문입니다.

답변

1

VBA의 기능은 바로 기능입니다. :-) return 구문은 이상합니다. Java 또는 C/C++ (예전 스타일의 Pascal)에 익숙하다면 이상합니다.

Public Function GetLastRow() 
    `Logic to determine last row here 
    GetLastRow = lastRow ` Assignment to function name sets return value 
End Function 
+0

함수를 찾았을 때 함수로 선언 한 함수는 Excel 내에서만 호출 할 수있는 것처럼 보였습니다. 이벤트 내에서이 함수를 호출하고 싶습니까? 그렇다면이 부분을 어디에 넣어야합니까? 모듈 안에 있습니까? –

+0

예, 모듈에 넣은 다음 해당 모듈에 대한 참조를 통합 문서에 추가하십시오. 시작하려면 Google에 [VBA 튜토리얼] (http://www.wiseowl.co.uk/blog/s161/online-excel-vba-training.htm)이 필요합니다. :-) 리본에서'Developer' 탭을 사용하고'Visual Basic' 버튼,'Insert-> Module' 메뉴,'Insert-> Procedure'를 차례로 클릭하십시오. 그런 다음 개인 또는 공개인지 프로 시저인지 함수인지를 결정하고 이름을 지정할 수 있습니다. VBA IDE에서 스텁을 만듭니다. –

1
Function myFunctionName() 
    ' do stuff 
    myFunctionName = "hello world" 
End Function 

함수에 반환 값을 할당하면 함수의 이름에 값을 할당 할 수 있습니다. 다음과 같이 호출 할 수 있습니다.

Sub myTest() 
theReply = myFunctionName() 
msgBox "the function returned " & theReply 
End Sub 

함수는 서브 반환 값을 반환하지 않습니다.

+0

대단히 유용합니다. 대단히 감사합니다 !!! –

관련 문제