我以VBA開始,我非常沮喪地發現我在本書的第一個關卡中陷入了困境。當我更改文本時,VBA字符串函數不會更新
我應該鍵入以下
Function Hello() As String
Hello = "Greetings"
End Function
這一切工作正常,但接下來我應該改變文本,並看到在Excel電子表格的功能變化。不幸的是我無法得到這個工作。有誰知道爲什麼?
我保存文檔作爲一個Excel啓用宏的工作簿,並試圖打開和關閉。
我以VBA開始,我非常沮喪地發現我在本書的第一個關卡中陷入了困境。當我更改文本時,VBA字符串函數不會更新
我應該鍵入以下
Function Hello() As String
Hello = "Greetings"
End Function
這一切工作正常,但接下來我應該改變文本,並看到在Excel電子表格的功能變化。不幸的是我無法得到這個工作。有誰知道爲什麼?
我保存文檔作爲一個Excel啓用宏的工作簿,並試圖打開和關閉。
您似乎在thisWorkbook
的代碼文件中具有此功能,但它應該在一個模塊中。在項目中添加一個模塊,將代碼放置在那裏,並設置功能Public
。另請參見:How to Call VBA Function from Excel Cells?
聲明你的功能權限
Function Hello(str As String) As String
然後使用類似
細胞(1,1).value的STR =
功能沒有工作適合你,但首先你必須調用函數(1,1).value =你好(「你好嗎」)
結果將是在單元格1,1將「你好」被寫入。 但是從這我不知道你想要完成什麼。如果你需要功能。在特定細胞所有你應該使用類似
Funtion Hello(row as integer, column as integer) as string
cells(row,column).value=inputbox("give me the input")
end function
的時間來寫,然後使用這個你編寫成代碼
result=Hello(1,2)
這個例子工程
Function Area(row As Integer, column As Integer) As String
Cells(row, column).Value = InputBox("give something here")
End Function
Sub my()
result = Area(2, 2)
End Sub
運行我的()
好,我工作了,我寫的函數到文件「當前工作簿」,而不是爲我創建的模塊...
我知道這將是一些簡單!現在都在工作。
通常一個功能應該是在一個模塊,而不是在的ThisWorkbook。您可以將事件處理程序存儲在ThisWorkbook或Sheet模塊中。
它不重新計算,因爲它沒有範圍輸入,因爲該函數沒有任何參數,所以它被視爲常量輸出,因此更新函數不會更新單元值。
但是,如果您修改它以接受範圍輸入,並且輸入範圍有任何更改,它將重新計算。
Function Hello() As String
Application.Volatile
Hello = "Greetings"
End Function
除非重新輸入,否則函數將不會重新計算。 (只要選擇單元格,然後按f2然後輸入) – Rory
嗨Rory,謝謝我已經嘗試F2的事情,並重新打字。事實上,我關閉並重新開放了整個項目。此外,現在沒有任何工作。我剛剛獲得#NAME?在單元格中:( – NIcolaHearn
)如果出現'#NAME?'錯誤,您禁用了宏,或者更改了函數的名稱,或者將它移入了類模塊,或者該模塊與函數具有相同的名稱。 – Rory