2016-08-30 79 views
2

我想在某些變量前添加+符號,如果它們是肯定的。 例如:使用子/函數修改變量

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單元格中顯示我的變量)。而且一個功能也不起作用。

任何想法如何創建一個子/功能來做到這一點?我可以以任何方式循環訪問變量嗎?

+1

您是否設想使用單元格格式? –

回答

3

首先,開始使用Option Explicit,它強制您顯式聲明每個變量,並在VBA編輯器中捕獲不匹配錯誤,而不是在運行時捕獲。

接下來,如果要通過在左端添加'加號'來將數值變量更改爲字符串,那麼原始變量必須是變體類型。如果你想傳遞一個參數到一個子程序中並讓子程序改變它,那麼參數必須是ByRef

或者,您可以將該變量推入一個函數並返回新值。

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

+0

非常感謝!現在你會知道如何通過函數循環不同的變量(比如告訴函數以cash1開始並停止在cashn中)? – lo1ngru

+1

如果我有一些* *變量要聲明,我會使用一個數組。 '暗淡的現金(3)作爲變量'產生4個變量變量;現金(0),現金(1),現金(2)和現金(3)。從[LBound](https://msdn.microsoft.com/en-us/library/t9a7w1ac(v = vs.90).aspx)到[UBound](https://msdn.microsoft.com/en -us /圖書館/辦公室/ gg278658.aspx)。 – Jeeped