更改文本时,VBA字符串函数不会更新

时间:2015-11-11 09:36:17

标签: vba excel-vba excel

我' M开头的VBA和I' M很苦恼地发现我在这本书中我下面的第一道关卡已经下降。

我应该输入以下内容

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

这一切都很好但接下来我应该更改文本并在Excel电子表格中查看功能更改。不幸的是,我无法让它发挥作用。有谁知道为什么?

Screenshot

我已将文档保存为启用Excel宏的工作簿,并尝试打开和关闭。

5 个答案:

答案 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