我试图将此for循环转换为函数

时间:2013-03-19 23:58:33

标签: excel-vba vba excel

我的问题是我不知道在VBA中调用了什么函数(在C ++中)或方法(在Java中)。

他们都存在,所以我查了一下?我认为这是平行的,但它们不会从我理解的内容中返回任何内容。

我没有接受VBA的正式培训,所以我对此很不满意。我想创建一个函数(或方法或子),它执行for循环正在做的事情:

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?”因为我需要这个数字。

2 个答案:

答案 0 :(得分:1)

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

通过将函数指定给函数名称,可以为函数指定返回值。你可以这样称呼它:

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

函数返回值,不要

答案 1 :(得分: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