首页 文章

Excel VBA - “复制/粘贴”仅粘贴所选范围的值

提问于
浏览
0

我正在编写一个宏来打开用户选择的文件,复制其中的所有数据并将其粘贴到已打开的另一个工作簿中 . 代码片段如下所示:

Windows(fileToClose).Activate
ActiveSheet.Range("A1").EntireRow.Delete
ActiveSheet.Range("A1:G1", Selection.End(xlDown)).Select
Selection.Copy
ActiveWindow.Close SaveChanges:=False
Windows(fileKeepOpen).Activate
Sheets("DATA").Select
ActiveSheet.Range("B2:H2", Selection.End(xlDown)).Clear
ActiveSheet.Range("B2").Select
ActiveSheet.Paste

它对选择的第一列起作用很好:它只获取第一个值并将其粘贴到目标列的任何位置 . 例如,如果选择的第一列中的第一个单元格包含“A”而第二个单元格包含“B”,则目标列将填充“A” . 但对于第二列,没有任何问题 .

PasteSpecial根本不起作用(每列都有不同的数据格式,看起来Excel不希望我将所有内容都粘贴为值,因为它一直给我1004错误) .

有任何想法吗 ?

1 回答

  • 0

    我不知道你有什么样的数据,但这应该可以解决问题:

    Dim RS As String
    RS = "A1:G" & Workbooks(fileToClose).ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    'MsgBox RS
    
    
    Workbooks(fileToClose).ActiveSheet.Range("A1").EntireRow.Delete
    Workbooks(fileKeepOpen).Sheets("DATA").Range("B2:H2").End(xlDown).Clear
    
    
    Workbooks(fileToClose).ActiveSheet.Range(RS).Copy Destination:=Workbooks(fileKeepOpen).Sheets("DATA").Cells(2, 2)
    
    Workbooks(fileToClose).Close SaveChanges:=False
    

    如果不能正常工作,请告诉我们原因! ;)

相关问题