用“Application.Names.Add”创建的名称去哪里?

问题描述 投票:0回答:3

出于学习和工作的目的,我需要创建仅在第一次打开工作簿时弹出的消息框。为了完成这项任务,我在其中一个旧踏板(qazxsw poi)中找到了优雅的解决方案。

我觉得sugested代码的工作原理或多或少都清楚了用Application.Names.Add创建命名的部分吗?我检查了Forlulas - >名称管理器并没有找到创建的名称,我猜它在其他地方去了吗?

二手代码:

old thread
excel vba excel-vba
3个回答
0
投票

您无法在名称管理器中看到它,因为您的第三个参数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


1
投票

Names.Add Method只显示Formulas -> NamesThisWorkbook.Names(取决于你的Worksheet.Names的范围)。

如果您插入断点并查看Name,您可以在View > Locals Window找到Application.Names

我添加“打开”标志的首选方法是添加到Me > Application > Names。我从来没有见过有人使用CustomDocumentProperties


1
投票

如果您想要的是在打开工作簿时弹出消息框,则以下代码将为您执行此操作,只需将其放在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
© www.soinside.com 2019 - 2024. All rights reserved.