使用 sub/function 修改变量

Modify variable using a sub/function

我正在尝试在某些变量前面添加一个 + 号,如果它们是正数的话。 例如:

Sub mySub()
    Dim cash As Variant 
End Sub

如果我这样做效果很好:

Dim plus As String
plus = "+"


If cash > 0 Then
  cash = plus & cash
  Else
  cash= cash
End If

但我一直在寻找一个子函数或函数,它可以接受我所有的变量,并在它们前面添加一个 + 号(如果它们是正数)。

sub NewSub(i As Variant)
    If i > 0 Then
       i = plus & i
       Else
       i = i
    End If
End sub

但它似乎不起作用,因为它没有显示任何内容(然后我在 excel 的单元格中显示我的变量)。还有一个功能也不行。

关于如何创建 sub/function 来做到这一点有什么想法吗?我可以以任何方式遍历我的变量吗?

首先,开始使用 Option Explicit,它会强制您显式声明每个变量,并且会在 VBA 编辑器中捕获不匹配错误,而不是在运行时。

接下来,如果您要通过在左端添加 'plus' 符号将数值变量更改为字符串,那么原始变量必须是变体类型。如果要将参数传递给子过程并让子过程更改它,则参数必须为 ByRef.

或者,您可以将变量推送到函数中,然后 return 新值。

Option Explicit

Sub main()
    Dim cash As Variant, cash2 As Variant

    cash = 10
    Debug.Print cash    '10 (as number)

    AddPlus cash
    Debug.Print cash    '+10 (as string)

    cash = 10
    Debug.Print cash    '10 (as number)

    cash = udfAddPlus(cash)
    Debug.Print cash    '+10 (as string)

End Sub

Sub AddPlus(ByRef i As Variant)
    If i > 0 Then
       i = "+" & i
    Else
       i = i
    End If
End Sub

Function udfAddPlus(i As Variant)
    If i > 0 Then
       udfAddPlus = "+" & i
    Else
       udfAddPlus = i
    End If
End Function

Debug.Print 命令将输出发送到 VBE 的 Immediate window