【问题标题】:vba throws "Run-time error '1004' Method 'Caption' of object 'button' failed", but only on macvba 抛出“运行时错误‘1004’对象‘按钮’的方法‘标题’失败”,但仅在 Mac 上
【发布时间】:2017-08-07 11:52:49
【问题描述】:

所以我自动化了 Excel 工作簿的某些部分。在代码中,我向某些工作表添加了一些按钮。一切似乎都很好,直到一位同事在 Mac 上工作,收到以下错误:运行时错误 '1004': Method 'Caption' of object 'Button' failed。

我检查了它,显然错误只发生在 1 个特定工作表上。我尝试删除该特定工作簿并创建一个新工作簿,但该特定工作表上仍然出现错误。

这是我的代码:

Dim btn As Button
Set btn = Sheet2.Buttons.Add(400, 5, 100, 50)
With btn
    .OnAction = "add_feature_click"
    .Caption = "ADD FEATURE"
    .name = "add_feature"
End With
Set btn = Sheet2.Buttons.Add(510, 5, 100, 50)
With btn
    .OnAction = "add_phase_click"
    .Caption = "ADD PHASE"
    .name = "add_phase"
End With
Set btn = Sheet3.Buttons.Add(400, 5, 100, 50)
With btn
    .OnAction = "Add_Feature_click"
    .Caption = "ADD FEATURE" '<--
    .name = "add_feature"
End With
Set btn = Sheet3.Buttons.Add(510, 5, 100, 50)
With btn
    .OnAction = "add_phase_click"
    .Caption = "ADD PHASE"
    .name = "add_phase"
End With

因此,在“Sheet2”中创建按钮可以正常工作,但在 Mac 上执行时会在“Sheet3”上引发错误。 (相同的代码用于将按钮添加到 6 个不同的工作表,并且在所有其他工作表中都可以正常工作)

编辑:错误发生在带有注释箭头的行

知道如何解决这个问题吗?

【问题讨论】:

  • 表 3 是唯一与其他表具有不同 .OnAction 的部分。我建议将其与您的其余陈述保持一致。
  • 这是一个复制问题,出于隐私原因,我缩短了名称,我将对其进行编辑
  • 好吧,由于某种原因,您的标题无效。因此,它可能与您尝试分配给它的文本有关。也许您正在使用任何特殊字符?
  • 只是猜测-如果您更改标题以使标题不重复怎么办?例如,ADD(一个空格)FEATURESheet2 和 ADD(两个空格)FEATURESheet3?
  • 对于它的价值,我假设您使用“Dim 作为按钮”,我在 2011 和 2016 Excel for Mac 的干净工作簿上运行它,添加按钮效果很好。跨度>

标签: vba macos excel


【解决方案1】:

如果你在错误处停止代码,然后转到创建的按钮,右键单击和属性,当你尝试手动设置 Caption 时会发生什么?

【讨论】:

  • 我无法手动设置。当我点击“编辑文本”时没有任何反应
  • 如果您在右键单击它时获得“编辑文本”选项,我认为您正在创建一个表单按钮而不是 ActiveX 按钮,并且我认为表单按钮的属性与此类方式不同作为标题。不知道为什么这只是第二个按钮的问题。
  • 类似下面的内容应该生成一个 ActiveX 按钮,您应该能够将属性分配给: ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, 左:=123.75, 上:=313.5, 宽度:=72, 高度:= _ 24)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
相关资源
最近更新 更多