使用 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。
我正在尝试在某些变量前面添加一个 + 号,如果它们是正数的话。 例如:
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。