繁体   English   中英

如何让我的 VBA 代码循环遍历工作簿中的所有工作表?

[英]How do I get my VBA Code to loop through all sheets in workbook?

我目前正在使用以下代码删除我的表中不需要的分类:

Sub RemoveOldPlatforms()
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("RAW")

    ws.Range("$A$1:$J$100000").AutoFilter Field:=2, Criteria1:=Array("Coniferous", "Broafleaf", "Mixedwood", "Water", "Exposed Land / Barren", "Urban / Developed", "Greenhouses", "Shrubland", "Wetland", "Grassland"), Operator:=xlFilterValues

    ws.Range("$A$2:$J$100000").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ws.Range("$A$1:$J$100000").AutoFilter

End Sub

按原样,我指定了一个已识别的工作表,但如何在我的工作簿 (20+) 中的所有工作表中循环它?

你应该做这样的事情:

Sub EnteringAllSheetsOneByOne()
    For Each ws In Excel.Workbooks("YourWorkbook.xlsx").Worksheets
        ws.Select
        Call RemoveOldPlatforms(ws) 'must to be called here and use ws as parameter
    Next ws
    MsgBox "Done!"
End Sub

' Just add the "ws" parameter to your current sub
Sub RemoveOldPlatforms(ws As Object)
   'Dim ws As Worksheet

   'Set ws = ThisWorkbook.Worksheets("RAW")

    ws.Range("$A$1:$J$100000").AutoFilter Field:=2, Criteria1:=Array("Coniferous", "Broafleaf", "Mixedwood", "Water", "Exposed Land / Barren", "Urban / Developed", "Greenhouses", "Shrubland", "Wetland", "Grassland"), Operator:=xlFilterValues

    ws.Range("$A$2:$J$100000").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ws.Range("$A$1:$J$100000").AutoFilter

End Sub

注意:注意我评论的所有内容,在这种情况下不需要DimSet

嗨,非常简单的代码来检查工作簿中的每个工作表,

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    'called once per worsheet
Next ws

在这里,我遍历所有工作表以查找另一个工作簿中可用的所有表格并将其显示在 ComboBox 中

Private Sub UpdateTablesFromFile()

Dim wb As Workbook
Dim ws As Worksheet
Dim tbl As ListObject
Dim text As String
Dim I As Integer
Dim FileToOpen As String

FolderPath = Application.ActiveWorkbook.Path
FilePath = FolderPath & "\" & ComboBox1.Value 

Application.ScreenUpdating = False
Workbooks.Open Filename:=FilePath

For Each ws In Workbooks(ComboBox1.Value).Worksheets
    For Each tbl In ws.ListObjects

        text = ws.Name & "\" & tbl.Name
        ImportForm1.ComboBox2.AddItem text 'add every tables in my entire workbook inside the ComboBox2

    Next tbl
Next ws

Workbooks(ComboBox1.Value).Close SaveChanges:=False
    Application.ScreenUpdating = True

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM