出于学习和工作的目的,我需要创建仅在第一次打开工作簿时弹出的消息框。为了完成这项任务,我在其中一个旧踏板(qazxsw poi)中找到了优雅的解决方案。
我觉得sugested代码的工作原理或多或少都清楚了用Application.Names.Add创建命名的部分吗?我检查了Forlulas - >名称管理器并没有找到创建的名称,我猜它在其他地方去了吗?
二手代码:
old thread
您无法在名称管理器中看到它,因为您的第三个参数Visible:= False被设置为False。
可见 - True指定将名称定义为可见。 False指定将名称定义为隐藏。隐藏名称不会出现在“定义名称”,“粘贴名称”或“转到”对话框中。默认值是true 。
有关更多信息,请参阅Sub RunOnce()
Dim Flag As Boolean: Flag = False
For Each Item In Application.Names
If Item.Name = "FunctionHasRun" Then Flag = True
Next
If Flag = False Then
Call Application.Names.Add("FunctionHasRun", True, False)
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
Call RunOnceFunction
End If
End Sub
。
Names.Add Method只显示Formulas -> Names
和ThisWorkbook.Names
(取决于你的Worksheet.Names
的范围)。
如果您插入断点并查看Name
,您可以在View > Locals Window
找到Application.Names
。
我添加“打开”标志的首选方法是添加到Me > Application > Names
。我从来没有见过有人使用CustomDocumentProperties
。
如果您想要的是在打开工作簿时弹出消息框,则以下代码将为您执行此操作,只需将其放在Application.Names
下即可。
另外我很确定你的代码中的语法是不正确的,如果你想添加一个命名范围你会按如下方式执行:ThisWorkbook
之前不需要调用,因为它没有调用另一个子例程/功能:
Sheet1.Range("A1:Z10").Name = "MyNamedRange"
更新:
如果您只希望它在第一次打开工作簿时运行,然后再也不会再运行,则以下内容将为您实现:
Private Sub Workbook_Open()
MsgBox "This will pop up when the Workbook is opened!", vbInformation, "My MessageBox Title"
End Sub