2012-11-06 69 views
1

我正在嘗試在VBA中編寫數據過濾腳本,並認爲使用單獨的函數這樣做會是個不錯的主意。因此,我得到了下面的代碼:像在VBA中沒有明顯的原因返回False

Sub checkFormat() 
Dim cont As String 
cont = "21-345" 
cont = funkcja(cont) 
check = cont Like "##-###" 

Debug.Print check & " vartype: " & VarType(cont) 

End Sub 

Private Function funkcja(Param1 As String) 
If ((Left(Param1, 1) = " ") Or (Right(Param1, 1) = " ")) Then 
    Param1 = Trim(Param1) 
    Debug.Print "Cut" 
Else 
    Debug.Print "Nothing to cut" 
End If 
Debug.Print "Returned: """ & Param1 & """" & " vartype: " & VarType(Param1) 
End Function 

的問題是,check變量返回假不管我分配給它的任何值。但是,一旦我將cont=funkcja(cont)行註釋掉,Like函數就會像應該那樣開始工作。任何人都可以告訴我funkcja函數對字符串做了什麼,以便Like返回False?我檢查變量類型,但它總是被設置爲String ...

+0

哪裏的點心。檢查? – sybkar

+0

好問題。我忘了它,但添加Dim不會改變任何東西 - 像仍然返回False – MartinUKPL

回答

5

因爲funkcja總是返回「」因爲你沒有告訴它返回Param1

Private Function funkcja(Param1 As String) as string '//type it 
If ((Left(Param1, 1) = " ") Or (Right(Param1, 1) = " ")) Then 
    Param1 = Trim(Param1) 
    Debug.Print "Cut" 
Else 
    Debug.Print "Nothing to cut" 
End If 
'// 
'//set the return value 
funkcja = param1 
'// 
'// 
Debug.Print "Returned: """ & Param1 & """" & " vartype: " & VarType(Param1) 
End Function 
+0

它的工作原理!非常感謝。 函數是否可以返回多個結果? – MartinUKPL

+0

是的,使用byref語義,返回一個類型或返回一個類實例。 –

相關問題