2015-11-11 17 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 
相关问题