2015-06-22 126 views
0

我試圖運行此代碼,但它不斷給我一個錯誤信息,而編譯錯誤時運行VBA代碼

參數不可選

我使用的是調用的函數csvRange

Sub CS() 
csvRange() 
End Sub 
Function csvRange(FirstNum, SecondNum) As Double 
    i As Integer 
    For i = FirstNum.Value To SecondNum.Value 
      csvRange = csvRange & i & "+" 
      Next   
End Function 

任何人都可以幫忙。

+1

你到底想幹什麼?如果提供數字3和9,'csvRange'只輸出一個字符串,如'3 + 4 + 5 + 6 + 7 + 8 + 9'。那麼你需要什麼樣的字符串? –

+0

您錯過了'FirstNum'和'SeconNum'的參數。你會得到返回值類型的下一個錯誤。函數返回double,但返回值是字符串。 –

+0

嗨@afeefkhateeb,你覺得有用嗎?提供反饋/評分答案總是很好的。 –

回答

0

你想調用csvRange()但是csvRange需要2個參數才能通過。 你忘了保存返回值。

例如

Sub CS() 
var first = 1 
var second = 50 
var result 
result = csvRange(first, second) 
End Sub 
Function csvRange(FirstNum, SecondNum) As Double 
    i As Integer 
    For i = FirstNum.Value To SecondNum.Value 
      csvRange = csvRange & i & "+" 
      Next   
End Function 
0

一對夫婦的言論: - 你調用函數csvrange沒有這些你沒有定義爲可選的parameterValues。 - 你對函數返回的值什麼都不做 - - 我是一個整數,結果是double。在您的for-next循環中混合它們是不好的做法

0

您的代碼需要一些修正: 1)使用csvRange的適當參數。 2)將返回值csvRange用於某些事情(這不是強制性的,但通常在設計良好的代碼中是必需的)。 3)聲明csvRange的參數類型。 4)你似乎在用csvRange來得到String。相應地更改代碼。

你會使用類似

Sub CS() 
    Dim rng1 As Range, rng2 As Range 
    Set rng1 = ... 
    Set rng2 = ... 
    Set retval As String 
    retval = csvRange(rng1, rng2) 
End Sub 

Function csvRange(FirstNum As Range, SecondNum As Range) As String 
    i As Integer 
    csvRange = "" 
    For i = FirstNum.Value To SecondNum.Value 
     csvRange = csvRange & Cstr(i) & "+" 
    Next i 
End Function 

PS1:你的輸出將尾隨 「+」 結束。也許這不是你想要的。

PS2:我沒有一個系統來測試這段代碼。