我正在尝试将sheetA中的整个列复制到Sheet B. sheetA列具有使用formuls形成的值。我只使用 xlPasteValues 复制SheetA列值。但它不会将值粘贴到另一个sheetB。 sheetB中的列为空。 我的VBA代码
Public Sub CopyrangeA()
Dim firstrowDB As Long, lastrow As Long
Dim arr1, arr2, i As Integer
firstrowDB = 1
arr1 = Array("BJ", "BK")
arr2 = Array("A", "B")
For i = LBound(arr1) To UBound(arr1)
With Sheets("SheetA")
lastrow = Application.Max(3, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row)
.Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Copy
Sheets("SheetB").Range(arr2(i) & firstrowDB).PasteSpecial xlPasteValues
End With
Next
Application.CutCopyMode = False
End Sub
答案 0 :(得分:37)
如果您只想复制整个专栏,可以通过以下方式简化代码:
Sub CopyCol()
Sheets("Sheet1").Columns(1).Copy
Sheets("Sheet2").Columns(2).PasteSpecial xlPasteValues
End Sub
或者
Sub CopyCol()
Sheets("Sheet1").Columns("A").Copy
Sheets("Sheet2").Columns("B").PasteSpecial xlPasteValues
End Sub
或者如果你想保持循环
Public Sub CopyrangeA()
Dim firstrowDB As Long, lastrow As Long
Dim arr1, arr2, i As Integer
firstrowDB = 1
arr1 = Array("BJ", "BK")
arr2 = Array("A", "B")
For i = LBound(arr1) To UBound(arr1)
Sheets("Sheet1").Columns(arr1(i)).Copy
Sheets("Sheet2").Columns(arr2(i)).PasteSpecial xlPasteValues
Next
Application.CutCopyMode = False
End Sub
答案 1 :(得分:8)
我会没有复制/粘贴
Sheets("SheetB").Range(arr2(i) & firstrowDB).Resize(lastrow, 1).Value = .Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Value
答案 2 :(得分:2)
就个人而言,如果您需要的只是列,我也会将其缩短:
For i = LBound(arr1) To UBound(arr1)
Sheets("SheetA").Columns(arr1(i)).Copy
Sheets("SheetB").Columns(arr2(i)).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next
从此代码段开始,lastrow
或firstrowDB
答案 3 :(得分:1)
你也可以使用它
Sub CopyPaste()
Sheet1.Range("A:A").Copy
Sheet2.Activate
col = 1
Do Until Sheet2.Cells(1, col) = ""
col = col + 1
Loop
Sheet2.Cells(1, col).PasteSpecial xlPasteValues
End Sub
答案 4 :(得分:1)
我以前也遇到过这个问题,我想我找到了答案。
如果您使用按钮来运行宏,则它可能链接到了另一个宏,也许是您正在使用的宏的另存为版本,您甚至可能没有意识到。尝试直接从VBA(F5)运行宏,而不是使用按钮运行宏。我的猜测是可行。您只需将按钮上的宏重新分配给您实际要运行的宏。
答案 5 :(得分:0)
你可以用这个:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
答案 6 :(得分:-1)
选择= selection.values
这会以非常快的方式做事。