2013-03-19 2 views
0

Моя проблема заключается в том, что я не знаю, какие функции (в C++) или методы (в Java) вызываются в VBA.Я пытаюсь преобразовать этот цикл в функцию

Они оба существуют, и поэтому я искал подводные лодки? Я думаю, что это параллель, но они ничего не возвращают из того, что я понимаю.

У меня нет формального обучения в 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), чтобы вы начали. :-) Используйте вкладку «Разработчик» в ленте, нажмите кнопку «Visual Basic», «Вставить-> Модуль», затем «Вставить-> Процедура». Затем вы можете решить, является ли это частной или публичной, а также процедурой или функцией и назовите ее. VBA IDE создаст для вас заглушку. –

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

Вы назначаете возвращаемое значение функции, назначая ее имени функции. Вы можете называть это следующим образом:

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

Функции возвращают значения, подзадачи - нет.

+0

Удивительно, это очень полезно! Большое спасибо!!! –

Смежные вопросы