【问题标题】:How to do code loop until last sheet in another workbook using VBA code Excel?如何使用 VBA 代码 Excel 进行代码循环,直到另一个工作簿中的最后一张工作表?
【发布时间】:2020-10-20 15:14:16
【问题描述】:

好人,我希望你有一个美好的一天。我是 Excel 宏 VBA 的新手。我需要为特定的数据处理构建 Excel 启用宏的工作簿。

背景:我正在尝试将数据作为值从“源”工作簿中的每个工作表复制到我的主工作簿中的表中,然后当每个工作表上的每个数据都被复制时,我需要从我的主工作簿中的该表中删除重复项。

问题:“源”工作簿中的工作表数量不确定。

目标:从“源”工作簿中的每个工作表复制,堆叠在我的主工作簿中,然后删除我的主工作簿中的重复项。

我为单页“源”工作簿提供了一组代码,请帮助我实现目标。我尝试使用 do while 循环,直到循环,但他们未能执行我的代码

Sub Copy_SourceToMaster()

    Dim FileToOpen As Variant
    Dim OpenBook As Workbook
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range")
    If FileToOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FileToOpen)
        OpenBook.Sheets(1).Activate
        Range("C6").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        ThisWorkbook.Activate
        ActiveSheet.Range("B4").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        OpenBook.Close False
    
    End If
    Application.ScreenUpdating = True
Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range

Set sht = ActiveSheet
Set StartCell = Range("B5")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'Select Range
  sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
  Selection.RemoveDuplicates Columns:=2, Header:= _
        xlYes
    Range("B5").Select
    Selection.End(xlDown).Select
End Sub

【问题讨论】:

    标签: excel vba loops if-statement copy-paste


    【解决方案1】:

    为了计算工作簿中的工作表,您可以简单地使用:

    Whatever_Workbook.Sheets.Count
    

    最重要的是,在您的代码中,您正在执行一些复制粘贴操作,您可以在 for 循环中使用 destination_range.Value = source_range.Value 大大简化此操作。 (更多信息请参见How to avoid using Select in Excel VBA

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2021-01-11
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多