2017-07-14 92 views
0

我希望它從Excel電子表格中調用的VBA函數返回多個值,但總是得到錯誤#Value!在網絡上找到vba range(「A1」)。value給出了#Value!當輸入函數

一個例子:

Sub ReturnCellValue() 
    Worksheets("Sheet1").Range("A1").Value = 3.14159 
End Function 

這個函數返回#VALUE!

Function ReturnCellValue() 
    Worksheets("Sheet1").Range("A1").Value = 3.14159 
End Function 

這一行代碼在立即的winnow中工作。

Worksheets("Sheet1").Range("A1").Value = 3.14159 

我發現的所有例子都是子類。你如何從一個函數調用一個子?

+0

代碼沒有您發佈的作品。你不能在End Function中使用'Sub'(它應該是'End Sub'),並且'Sub'不會返回一個值(在C風格的語言中,'Sub'相當於'void')。 – Dai

+2

UDF不能有副作用。寫入工作表是一個副作用。函數*返回*一個值。 –

回答

2

此功能:

Function ReturnCellValue() 
    Worksheets("Sheet1").Range("A1").Value = 3.14159 
End Function 
  • 不返回單元格的值,而是設置一個單元格的值(和VBA的=運營商形成了一個聲明,而不是一個表達式,所以你不能嵌套分配)。
  • 不返回任何值,因爲您沒有返回值(通過分配函數名稱返回VBA函數中的值)。

你可能想這樣的:

Function ReturnCellValue() As Variant 
    ReturnCellValue = Worksheets("Sheet1").Range("A1").Value 
End Function 
相關問題