VBA EXCEL复制范围

我刚才发表了同样的问题,被告知我拼写错误。 我把这个问题解决了。 因为我以为我明白我正在试图调用一个方法..那是我的范围(是的,表单被拼写成sheeet)。 我想我还是不明白。 我试图通过列“D”的最后一个单元格从列表“TEXT”复制列“A2”到Sheet3

Dim TotalRows As Integer Dim CurrentWorkbook As Workbook ' macro workbook Dim RangeToCopy As Range Dim ColumnLetterNumber As String Set CurrentWorkbook = ThisWorkbook TotalRows = Sheets("TEXT").UsedRange.Rows.Count ColumnLetterNumber = "D" & TotalRows Set RangeToCopy = Range("A2", ColumnLetterNumber) ' Group Last Observed within the first three columns ' Last Observed start in column N ' After Insert end up in column ) Columns("D:D").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Move the Last observed (now column O) to Column D so that they can be fitered together Sheets("TEXT").Range(Range("O1"), Range("O1").End(xlDown)).Copy Sheets("TEXT").Range("D1") With Sheets("TEXT") .AutoFilterMode = False .Range("A1:D1").AutoFilter End With ' 'Copy Columns to the POAM sheet Set RangeToCopy = Range("A2", ColumnLetterNumber) 'top left, bottom right RangeToCopy.Select CurrentWorkbook.Sheets("Sheet3").Activate CurrentWorkbook.Sheets("TEXT").Range(RangeToCopy).Copy Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True End Sub 

我回答了你更详细的问题。 这是行不通的,因为这条线不起作用至less有两个原因:

 CurrentWorkbook.Sheets("TEXT").Range(RangeToCopy).Copy Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True 

首先,“RangeToCopy”不是页面上定义的范围,所以不能以这种方式引用它。 这是你VBA代码中的一个variables,所以你只需要在这个范围内使用复制函数。 其次,范围类的复制function不具有所有这些参数。 你要:

 RangeToCopy.Copy Destination:=Sheets("Sheet3").Range("A1") 

如果你真的试着得到唯一的值,那么你需要使用“AdvancedFilter”function。

 RangeToCopy.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True, criteriarange:= <Insert range that you wish to get unique values from here> 

另外,您应该根据图纸名称定义RangeToCopy,如下所示:

 Set RangeToCopy = Sheets("TEXT").Range("A2", ColumnLetterNumber) 

你不是这样做吗?

 Sub Macro() Dim dEnd As Integer Sheets("Sheet1").Select Range("D1").Select dEnd = Selection.End(xlDown).Row Range("A2:" & "D" & dEnd).Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub 

(我没有打扰表名)