【问题标题】:Display all available sheets in combobox, except the hidden ones, (loop through sheets add to list) VBA在组合框中显示所有可用的工作表,除了隐藏的工作表,(循环通过工作表添加到列表)VBA
【发布时间】:2020-10-22 18:33:29
【问题描述】:

好的天才蜂巢思维,这次我做错了什么?

 'wb and ws dimmed in module level declarations...
 Set wb = ThisWorkbook
 wb.activate

Dim I As Integer, sheetCount As Integer

sheetCount = wb.Worksheets.Count
 
 Dim sheetNum As Integer
 sheetNum = 1
 With cboCopyFromSheet 'combobox
 
     For I = 0 To sheetCount - 1 
    'not sure why the capital 'I' describing an object?
    'copied from MS documentation
     
     If wb.Worksheets(sheetNum).Visible = True Then
          
       .AddItem wb.Worksheets(sheetNum).Name, I '<----Error
     End If
      sheetNum = sheetNum + 1
    
     Next I
     
   End With

奇怪的是,这只发生在 I = 9 和 sheetnum = 10 时 当前没有隐藏任何工作表(但有些会隐藏) 表 10 恰好是一张空白表... 我们很有孔子。

抛出的错误是“无效参数” 有什么线索吗?

【问题讨论】:

  • 当你谈到错误时,它必须与抛出它的代码行相关联。不需要任何 sheetNum 变量,因为您在工作表之间迭代并使用 I 代替。请检查我发布的答案...
  • .AddItem wb.Worksheets(sheetNum).Name, I 不需要最后一个参数 (I)...

标签: vba loops combobox visible


【解决方案1】:

请尝试下一个(简单)代码。养成使用组合框 List 属性的习惯,当您需要快速加载大范围(也包括多列)时会很有帮助:

Sub testLoadComboSheetsNames()
  Dim sh As Worksheet, arrSh As Variant, k As Long
  
    ReDim arrSh(1 To ThisWorkbook.Worksheets.count)
    For Each sh In ThisWorkbook.Worksheets
        If sh.Visible = True Then k = k + 1: arrSh(k) = sh.Name
    Next
    ReDim Preserve arrSh(k)
    cboCopyFromSheet.list = arrSh
End Sub

为了工作,您的代码必须如下所示:

Sub testLoadComboShbis()
 Dim i As Long, wb As Workbook
 Set wb = ThisWorkbook
 For i = 1 To wb.Worksheets.count
     If wb.Worksheets(i).Visible = True Then
         cboCopyFromSheet.AddItem wb.Worksheets(i).Name
     End If
 Next i
End Sub

【讨论】:

    【解决方案2】:

    使用For Each 语句的类似方法。

    Sub Whatever()
    
        Dim ws As Worksheet
        
        For Each ws In ThisWorkbook.Worksheets
           If ws.Visible Then combo.AddItem ws.Name
        Next
        
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2012-08-12
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多