Copia VBA di Excel solo valori incolla (xlPasteValues)

Sto cercando di copiare l’intera colonna nel foglio A nel foglio B. foglio Una colonna ha valori formati con i formuli. Sto copiando i valori delle colonne SheetA usando solo xlPasteValues . Ma non è incollare i valori su un altro foglioB. La colonna nel foglio B è vuota. Il mio codice 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 

Se vuoi semplicemente copiare l’intera colonna, puoi semplificare molto il codice facendo qualcosa del genere:

 Sub CopyCol() Sheets("Sheet1").Columns(1).Copy Sheets("Sheet2").Columns(2).PasteSpecial xlPasteValues End Sub 

O

 Sub CopyCol() Sheets("Sheet1").Columns("A").Copy Sheets("Sheet2").Columns("B").PasteSpecial xlPasteValues End Sub 

O se vuoi mantenere il ciclo

 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 

Vorrei andare senza copia / incolla

  Sheets("SheetB").Range(arr2(i) & firstrowDB).Resize(lastrow, 1).Value = .Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Value 

Personalmente, lo accorcerei anche se tutte le colonne sono necessarie:

 For i = LBound(arr1) To UBound(arr1) Sheets("SheetA").Columns(arr1(i)).Copy Sheets("SheetB").Columns(arr2(i)).PasteSpecial xlPasteValues Application.CutCopyMode = False Next 

come da questo snippet di codice, non c’è molto punto in lastrow o firstrowDB

Puoi usare anche questo

 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 

Ho già avuto questo problema e penso di aver trovato la risposta.

Se si utilizza un pulsante per eseguire la macro, è probabile che sia collegato a una macro diversa, forse una versione salvata di quello in cui si sta lavorando attualmente e non si potrebbe nemmeno rendersene conto. Prova a eseguire la macro direttamente da VBA (F5) invece di eseguirla con il pulsante. La mia ipotesi è che funzionerà. Devi solo riassegnare la macro sul pulsante a quella che vuoi effettivamente eseguire.

puoi usare questo:

 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

selezione = selection.values

questo fa cose molto velocemente.