在Excel Vba中select最后8行

我想selectx行的最后8行(每个月的数量改变),这里有一个线程,但只有一列。 我需要它的几个列,并尝试了两种不同的方式,但都不工作,由于语法。

Sheets("Sheet2").Select LastRow = Range("D" & Rows.Count).End(xlUp).Row Set Last8Rows = Range("A" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8aRows = Range("B" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8bRows = Range("C" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8cRows = Range("D" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8dRows = Range("E" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8eRows = Range("F" & LastRow).Offset(-7, 0).Resize(8, 1) Set Last8fRows = Range("G" & LastRow).Offset(-7, 0).Resize(8, 1) LastxRows = Last8Rows + Last8aRows + Last8bRows + Last8cRows + Last8dRows + Last8eRows + Last8fRows LastxRows.Copy 

我第二次尝试

 Sheets("Sheet2").Select LastRow = Range("D" & Rows.Count).End(xlUp).Row Set Last8Rows = Range("A:D" & LastRow).Offset(-7, 0).Resize(8, 1) Last8Rows.Copy 

尝试下面的代码(没有必要Select表来复制它):

 Option Explicit Sub Copy_LastEight_Rows() Dim Sht2 As Worksheet Dim LastRow As Long Dim Last8Rows As Range Set Sht2 = ThisWorkbook.Sheets("Sheet2") LastRow = Sht2.Range("D" & Sht2.Rows.Count).End(xlUp).Row ' modify Column D to your need Set Last8Rows = Sht2.Range("A" & LastRow - 7 & ":D" & LastRow) Last8Rows.Copy End Sub 

当你不确定你的范围,即你不知道你最后一列是什么,那么试试这个:)它使用。find最后一行和最后一列。

 Sub Sample() Dim ws As Worksheet Dim sRow As Long, lRow As Long, lCol As Long Dim LastCol As String Dim rng As Range Set ws = Sheet1 '<~~ Change as applicable With ws '~~> Find last row lRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row '~~> Find last column lCol = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column '~~> Get column letter of last column LastCol = Split(.Cells(, lCol).Address, "$")(1) sRow = lRow - 7 Set rng = .Range("A" & sRow & ":" & LastCol & lRow) Debug.Print rng.Address End With End Sub 
 Sheets("Sheet2").Select LastRow = Range("D" & Rows.Count).End(xlUp).Row Set Last8Rows = Range("A" & LastRow - 7, "D" & LastRow) Last8Rows.Copy 

使用你最后的代码,这是它:

 Option Explicit Sub Main() Call SelectLastRows End Sub Sub SelectLastRows(Optional str_start As String = "A", _ Optional str_end As String = "D") Dim l_last_row As Long Dim last_8_rows As Range l_last_row = Range(str_start & Rows.Count).End(xlUp).Row Set last_8_rows = Range(str_start & l_last_row & ":" & str_end & l_last_row).Offset(-7, 0).Resize(8, 1) last_8_rows.Copy End Sub