Excel 我需要限制从工作表复制到工作簿的行数

Excel 我需要限制从工作表复制到工作簿的行数,excel,vba,Excel,Vba,我有ExcelVBA代码。这可以100%工作,但效果很好,因为它复制了整个工作表,而不仅仅是包含数据的单元格。大约有3000排。那么,如何将副本限制为5000行和bz列 Private Sub CommandButton1_Click() Application.CopyObjectsWithCells = False Dim newBook As Excel.Workbook Dim rng As Excel.Range Set newBook = Workbooks.Ad

我有ExcelVBA代码。这可以100%工作,但效果很好,因为它复制了整个工作表,而不仅仅是包含数据的单元格。大约有3000排。那么,如何将副本限制为5000行和bz列

Private Sub CommandButton1_Click()
Application.CopyObjectsWithCells = False
 Dim newBook As Excel.Workbook
    Dim rng As Excel.Range

    Set newBook = Workbooks.Add

    Set rng = ThisWorkbook.Worksheets("Accounts Full").Cells.SpecialCells(xlCellTypeVisible)

    rng.Copy newBook.Worksheets("Sheet1").Range("A1")
Application.CopyObjectsWithCells = True 'reset
End Sub

有两种方法可以做到这一点,最简单的方法是简单地设置范围:

Set rng = ThisWorkbook.Worksheets("Accounts Full").Range("A1:BZ5000").SpecialCells(xlCellTypeVisible)
或者,您可以获得
UsedRange
(注意,您的里程数可能会因数据的实际结构而异):

或者,对最后一列和最后一行进行更具体的说明(假设第1行有标题):


开始。回答错误,但谢谢。事实上,我得到了一个正确的答案——你得到的建议答案会找到最后一列和最后一行,这正是该链接向你展示的方法:-)
Set rng = ThisWorkbook.Worksheets("AccountsFull").UsedRange
Dim lastCol as Range, lastCel as Range
Set lastCol = ThisWorkbook.Worksheets("x").Cells(1, Columns.Count).End(xlToLeft)
Set lastCel = ThisWorkbook.Worksheets("x").Cells(rows.count,lastCol.Column).End(xlUp)
Set rng = ThisWorkbook.Worksheets("x").Range("A1",lastCel)