【问题标题】:MsgBox (ActiveWorkbook) - "Object doesn't support this property or method"MsgBox (ActiveWorkbook) - “对象不支持这个属性或方法”
【发布时间】:2016-04-22 02:39:38
【问题描述】:

美好的一天。

这可能很简单,但我只想知道。 在我的表单的第一个 Sub 中,我在代码的最开始放置了以下行:

MsgBox (ActiveWorkbook)

这样的行通常会提示工作簿处于活动状态(正如电话所暗示的那样)。当放置在项目的其他部分时,它肯定可以工作,但在这里不行。反而出现了这个错误:

Run-time error '438':

Object doesn't support this property or method

所以,我只是想对这个主题有更多的了解。谢谢。

PS。我放置那行代码的 sub 是一个简单的 button_Click()。

再次感谢。

【问题讨论】:

  • ActiveWorkbook 是一个对象,但 MsgBox 想要一个字符串...尝试:MsgBox ActiveWorkbook.Name

标签: excel object button msgbox vba


【解决方案1】:

我不得不质疑“这样的行通常会提示工作簿处于活动状态(正如电话所暗示的那样)”断言。

MsgBoxVariant 作为参数,但可以成功转换为StringMsgBox$ 几乎总是更好的做法)。

ActiveWorkbook 返回一个Workbook 对象,而Workbook 不能转换为String。我不记得Workbook 的默认属性是什么,但我知道它不能转换为String。如果你想得到Workbook名称,你需要这个:

MsgBox$ ActiveWorkbook.Name

您在任何地方都需要它,FormClassModule、...任何地方。

更好的做法是获取活动Workbook引用,并在整个代码中使用它。见How to avoid using Select in Excel VBA macros

【讨论】:

  • 这很好解释。非常感谢你提供的信息。非常感谢。
猜你喜欢
  • 2020-05-19
  • 2019-07-05
  • 2015-04-14
  • 2020-09-03
  • 2015-04-09
  • 2014-01-12
  • 2016-08-20
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多