【问题标题】:How checkboxes are handled in VBA Excel 2011 for Mac如何在 VBA Excel 2011 for Mac 中处理复选框
【发布时间】:2015-01-20 03:42:56
【问题描述】:

我在 Internet 和 Stackoverflow 网站上进行了彻底的搜索,但没有成功。我已经被一个问题困住了一个星期,我无法弄清楚它的正面或反面。

我一直在学习 VBA,我的参考书给出了以下示例:

Private Sub CommandButtons()
Dim intcounter As Integer, xObj As OLEObject
Dim strObj As String
intcounter = 0
strObj = ""

For Each xObj In ActiveSheet.OLEObjects
If TypeName(xObj.Object) = "CheckBox" Then
If xObj.Object.Value = True Then
intcounter = intcounter + 1
strObj = strObj & xObj.Object.Caption & Chr(10)
End If
End If

Next xObj

If intcounter = 0 Then
MsgBox "There were no CheckBoxes selected", , "No Sport"
Else
MsgBox _
"you selected" & intcounter & "checkboxes:" _
& vbCrLf & vbCrLf & _
strObj, , "Here is what you checked"
End If

End Sub

很遗憾,此代码不起作用。它应该评估工作表上的每个嵌入式项目。当代码遇到 ActiveX CheckBox 时,它应该确定 CheckBox 是否被选中。在过程结束时,将出现一个 MsgBox,确认选中了多少个(如果有)CheckBox 及其标题。

谁能帮我解决这个问题?甚至是一个链接也非常受欢迎。

提前感谢您的帮助。

【问题讨论】:

  • 您好,您遇到的代码问题是什么?您能否更新您的问题以包括任何错误/它们发生在哪一行?
  • 您好,Gareth,感谢您的关注。没有错误消息。只是代码不能按预期工作。它返回一个 MsgBox,其中没有未标记的复选框,但它们实际上被标记...
  • ActiveX 控件无法在 Mac 上使用。

标签: excel macos vba checkbox


【解决方案1】:

你需要将if条件修改为:

= "CheckBox"

您之间有一个空格,这就是原因。

只是为了扩展(通过手机发布):

TypeName 函数返回对象的名称,当在 if 条件中使用时,需要以区分大小写且正确的庄园来引用。在您的情况下,您需要使用:

If TypeName(xObj.Object) = "CheckBox" Then

【讨论】:

  • 我尝试了您的更正,但它仍然给出错误的 MsgBox...这让我发疯...我检查了复选框属性,它们是复选框..
猜你喜欢
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多