【问题标题】:How do I inspect the name of each combobox on a worksheet fo a particular name using VBA-Excell?如何使用 VBA-Excell 检查特定名称的工作表上每个组合框的名称?
【发布时间】:2019-06-24 16:06:03
【问题描述】:

我在工作表上有几个组合框,其对象名称包含单词 Product。我想选择每个组合框以更新列表项。

我已设法识别组合框,但似乎无法具体识别名称。

dim CBO as oleboject
set ws = sheets(1)
with sheets(1)
for each cbo in ws.oleobjects
if typename(cbo.object) = "ComboBox" then
 THE CHECK HERE FAILS
end if
next cbo
end with

我无法获取识别对象名称的代码。

【问题讨论】:

  • 检查If Typename(cbo.Object) = "ComboBox" 是否失败?还是之后发生的事情?如果它失败了,你会得到什么样的错误?
  • 嗨,Alex,我的脚本中有一个类型被定义为 OLEObject,并且不会失败。我可以读取 CBO.Name 属性,但我无法选择我想要添加项目的特定 ComboBox。例如。如果 CBO.Name 像“ToP”那么(找到正确的组合框。)我似乎无法让下一步工作。使用我刚刚确定的 CBO list=array(Item1, Item2, etc.)

标签: excel vba listbox


【解决方案1】:

所以我认为您需要事先检查以确保 typename 属性存在:

Sub ComboLoop()
Dim Ws As Worksheet
Dim OleObj As OLEObject

For Each Ws In ThisWorkbook.Worksheets
   For Each OleObj In Ws.OLEObjects
      If OleObj.OLEType = xlOLEControl Then
         If TypeName(OleObj.Object) = "ComboBox" Then
             With OleObj.Object

             'SOME ACTIONS 
             End With
         End If
      End If
   Next OleObj
Next Ws
End Sub

我过去曾使用过此代码,它对我有用,所以希望它有所帮助。

【讨论】:

  • 谢谢 Earl_of_Duke,但我想我想问的问题有误。我想在电子表格中识别名称中包含特定字符串的组合框,然后将项目添加到这些组合框中。
【解决方案2】:

你快到了。而不是使用

CBO.List = array(item1,item2),

你需要使用

CBO.Object.List = array(item1,item2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2021-08-13
    • 2015-07-28
    • 2013-03-16
    • 2018-12-05
    相关资源
    最近更新 更多