我以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