将VBA变量设置为函数的结果,即String

问题描述 投票:1回答:2

我今天读了很多关于功能的内容,他们似乎都在处理数学/数字。我正在尝试使用一个返回字符串并将其作为“主要子”中的变量捕获的函数,但我无法使其工作。谁能指出我做错了什么?

例如:

功能:

Public Function Test(var) As Variant
 Bar = var & "World"
 MsgBox Bar
End Function

子:

Public Bar As Variant
Public Z As Variant
Sub testing()
 Call Test("Hello") ' This displays "HelloWorld" from MsgBox in Function 
 Test ("Hello")     ' This displays "HelloWorld" from MsgBox in Function 
 Z = Test("Hello")  ' This displays "HelloWorld" from MsgBox in Function 
 MsgBox Z           ' This displays an empty MsgBox :*(
End Sub
excel vba function
2个回答
4
投票

如果希望函数返回一个值,请填充函数变量并在main子函数中返回,如下所示

Public Function Test(var As String) As String
    Test = var & " World"
End Function

Sub testing()
    returnstr  = Test("Hello")
    MsgBox returnstr
End Sub

2
投票

您没有从函数返回值。此外,函数应仅用于返回值,而不是用于执行更改事物(变量除外)或显示弹出窗口的操作。使用全局变量并将变量传递给函数也会让人感到困惑。您通常将局部变量传递给函数。这是一个更清晰的例子(首先是你的主要功能,正常惯例):

Sub Testing()
    Dim Z As String
    Z = Test("Hello")
    MsgBox Z
    MsgBox Test("Hello")
End Sub

Public Function Test(ByRef var As String) As String
    Test = var & "World"
End Function
© www.soinside.com 2019 - 2024. All rights reserved.