2015-11-11 18 views
0

我以VBA開始,我非常沮喪地發現我在本書的第一個關卡中陷入了困境。當我更改文本時,VBA字符串函數不會更新

我應該鍵入以下

Function Hello() As String 
    Hello = "Greetings" 
End Function 

這一切工作正常,但接下來我應該改變文本,並看到在Excel電子表格的功能變化。不幸的是我無法得到這個工作。有誰知道爲什麼?

Screenshot

我保存文檔作爲一個Excel啓用宏的工作簿,並試圖打開和關閉。

+0

除非重新輸入,否則函數將不會重新計算。 (只要選擇單元格,然後按f2然後輸入) – Rory

+0

嗨Rory,謝謝我已經嘗試F2的事情,並重新打字。事實上,我關閉並重新開放了整個項目。此外,現在沒有任何工作。我剛剛獲得#NAME?在單元格中:( – NIcolaHearn

+0

)如果出現'#NAME?'錯誤,您禁用了宏,或者更改了函數的名稱,或者將它移入了類模塊,或者該模塊與函數具有相同的名稱。 – Rory

回答

0

聲明你的功能權限

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 

運行我的()

0

好,我工作了,我寫的函數到文件「當前工作簿」,而不是爲我創建的模塊...

我知道這將是一些簡單!現在都在工作。

2

通常一個功能應該是在一個模塊,而不是在的ThisWorkbook。您可以將事件處理程序存儲在ThisWorkbook或Sheet模塊中。

它不重新計算,因爲它沒有範圍輸入,因爲該函數沒有任何參數,所以它被視爲常量輸出,因此更新函數不會更新單元值。

但是,如果您修改它以接受範圍輸入,並且輸入範圍有任何更改,它將重新計算。

0
Function Hello() As String 
Application.Volatile 
Hello = "Greetings" 
End Function 
相關問題