我' M开头的VBA和I' M很苦恼地发现我在这本书中我下面的第一道关卡已经下降。
我应该输入以下内容
Function Hello() As String
Hello = "Greetings"
End Function
这一切都很好但接下来我应该更改文本并在Excel电子表格中查看功能更改。不幸的是,我无法让它发挥作用。有谁知道为什么?
我已将文档保存为启用Excel宏的工作簿,并尝试打开和关闭。
答案 0 :(得分:4)
您似乎在thisWorkbook
的代码文件中有此功能,但它应该在模块中。将模块添加到项目中,将代码放在那里并创建函数Public
。另见:How to Call VBA Function from Excel Cells?
答案 1 :(得分:2)
通常,功能应位于模块中,而不应位于 ThisWorkbook 中。您可以在ThisWorkbook或Sheet模块中存储事件处理程序。
它没有重新计算,因为它没有Range输入,因为该函数没有任何参数,所以它被视为常量输出,因此更新函数不会更新单元格值。
但是如果你修改它以接受Range输入,并且输入范围有任何变化,它将重新计算。
答案 2 :(得分:0)
宣布你的功能正确
Function Hello(str As String) As String
然后使用之类的东西
细胞(1,1)。价值= STR
函数为您完成工作,但首先您必须通过参数调用该函数,如此
cells(1,1).value = Hello(“你好吗”)
结果将是在单元格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
运行我的()
答案 3 :(得分:0)
好的我把它解决了,我把这个函数写入文件“This Workbook”而不是我创建的模块...
我知道这会很简单!一切正常。
答案 4 :(得分:0)
Function Hello() As String
Application.Volatile
Hello = "Greetings"
End Function