在预处理器例程中使用 VBA application.statusbar 会导致编译时出现运行时错误
using VBA application.statusbar in preprocessor routine causes runtime error when compiling
我有一些使用预处理器命令的代码:#If
、#Else
和 #End If
基本上我有
#If Mac then
msgbox "Can't update the list when running on a mac"
#Else
Application.StatusBar = "updating names..."
***other code here****
Application.StatusBar = false
#End if
代码在我的机器上运行良好,但在其他机器上,当打开电子表格并编译代码时,出现错误消息:
这是在受保护的视图中打开电子表格时发生的错误。如果不在受保护的视图中,则不会显示错误。一旦子程序在打开后被调用它就可以正常工作,但是当它在打开时编译时它会失败。
如果我删除状态栏命令,则不会发生错误。
我试过添加 'On Error Resume Next' 但这并不能阻止错误。
看来我无法在预处理器例程中使用状态栏,但确定它会起作用。
我使用 Excel 2016,我在 Excel 2013 上看到了错误。两台机器都是 64 位 windows 8.1,实际上两台机器的规格完全相同 ASUS UX305F核心 M 处理器。
任何人都可以阐明可能发生的事情吗?
我无法重现问题,但假设:
Application.StatusBar
在预编译器指令之外工作正常
并且:
- 预编译器指令仅用于在 Mac 环境中禁用宏
只需稍微重新组织一下,以便在 Windows 环境 中用于 运行 的代码不会 包含在预编译器指令中:
Public Sub Macro1()
#If Mac Then
MsgBox "Can't update the list when running on a Mac"
Exit Sub
#Else
DoSomething
#End If
End Sub
然后将实际逻辑移动到 DoSomething
,使实际代码没有预编译器指令:
Private Sub DoSomething()
Application.StatusBar = "updating names..."
'***other code here****
Application.StatusBar = false
End Sub
最坏的情况是,Mac 用户点击您的按钮会出现编译错误,代码不会 运行...但它不应该 运行 无论如何,所以...
我有一些使用预处理器命令的代码:#If
、#Else
和 #End If
基本上我有
#If Mac then
msgbox "Can't update the list when running on a mac"
#Else
Application.StatusBar = "updating names..."
***other code here****
Application.StatusBar = false
#End if
代码在我的机器上运行良好,但在其他机器上,当打开电子表格并编译代码时,出现错误消息:
这是在受保护的视图中打开电子表格时发生的错误。如果不在受保护的视图中,则不会显示错误。一旦子程序在打开后被调用它就可以正常工作,但是当它在打开时编译时它会失败。
如果我删除状态栏命令,则不会发生错误。
我试过添加 'On Error Resume Next' 但这并不能阻止错误。
看来我无法在预处理器例程中使用状态栏,但确定它会起作用。
我使用 Excel 2016,我在 Excel 2013 上看到了错误。两台机器都是 64 位 windows 8.1,实际上两台机器的规格完全相同 ASUS UX305F核心 M 处理器。
任何人都可以阐明可能发生的事情吗?
我无法重现问题,但假设:
Application.StatusBar
在预编译器指令之外工作正常
并且:
- 预编译器指令仅用于在 Mac 环境中禁用宏
只需稍微重新组织一下,以便在 Windows 环境 中用于 运行 的代码不会 包含在预编译器指令中:
Public Sub Macro1()
#If Mac Then
MsgBox "Can't update the list when running on a Mac"
Exit Sub
#Else
DoSomething
#End If
End Sub
然后将实际逻辑移动到 DoSomething
,使实际代码没有预编译器指令:
Private Sub DoSomething()
Application.StatusBar = "updating names..."
'***other code here****
Application.StatusBar = false
End Sub
最坏的情况是,Mac 用户点击您的按钮会出现编译错误,代码不会 运行...但它不应该 运行 无论如何,所以...