Excel VBA: How to Copy and Paste Values Only — The Smart Way to Transfer Data

Copying data in Excel is simple — but copying values only is a professional-level technique that separates beginners from automation experts. When you copy and paste normally, Excel also brings over formulas, formatting, links, and even hidden references. That might look fine at first, but in real-world workbooks, it can cause broken links, wrong calculations, and heavy file sizes.

In VBA, copying and pasting values only is one of the most powerful tools for cleaning, exporting, and securing your data. Whether you’re creating automated reports, cleaning ERP outputs, or preparing data for RPA bots, mastering value-only copy will save time and prevent errors.

This article will walk you through everything — from the basics to advanced automation examples — showing you how to paste only what truly matters: your values.


✅ Why Copy Values Only in Excel VBA?

Copying everything with formulas often leads to:

  • Unwanted external references ([Workbook1.xlsx]Sheet1!A1)
  • Broken links when sharing files
  • Huge file sizes due to unnecessary formatting
  • Wrong numbers if the source data changes
  • Slower performance during recalculations

By copying only values, you create a “snapshot” — static data that stays accurate no matter what happens to the original formulas.

This is crucial for:

  • Monthly financial reports
  • Dashboard summaries
  • Sending data to other departments
  • RPA workflows that need fixed values

✅ Basic Syntax to Copy and Paste Values

・PasteSpecial Method (Most Common)

Range("A1:A10").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

✅ Keeps only numbers, text, or results — no formulas
✅ Removes dependency on source data

This is the easiest way to paste static values after calculations.


・Copying Values Without Clipboard (Faster)

Range("B1:B10").Value = Range("A1:A10").Value

✅ Direct assignment
✅ No Copy/Paste mode
✅ Faster and cleaner for automation

This is the best practice for professional VBA developers.


✅ Step-by-Step: Copy Values Only to Another Sheet

Let’s say you have formulas in Sheet1 and you want to paste results into Sheet2.

Sub CopyValuesToAnotherSheet()
Sheets("Sheet2").Range("A1:A20").Value = Sheets("Sheet1").Range("A1:A20").Value
End Sub

Steps:

  1. Specify the source and target sheets explicitly
  2. Use .Value = .Value to paste static results
  3. Verify output — no formulas, only numbers or text

✅ No clipboard use
✅ Works in background mode
✅ RPA-friendly


✅ Paste Values and Keep Number Format

Sometimes you need to keep number formatting (like currency, date, or percentage).

・Option 1: Use PasteSpecial with Formats

Range("A1:A10").Copy
Range("B1").PasteSpecial xlPasteValues
Range("B1").PasteSpecial xlPasteFormats
Application.CutCopyMode = False

・Option 2: Assign Value and Reapply Format

Range("B1:B10").Value = Range("A1:A10").Value
Range("B1:B10").NumberFormat = Range("A1:A10").NumberFormat

✅ You control both value and appearance
✅ Perfect for financial statements


✅ Copy Values Dynamically (Auto-Detect Range)

Instead of hardcoding, detect the last used cell automatically:

Sub CopyDynamicValues()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("B1:B" & lastRow).Value = Range("A1:A" & lastRow).Value
End Sub

✅ Automatically adapts to variable data size
✅ Ideal for daily or monthly data imports


✅ Copy Entire Columns or Rows as Values

・Copy One Column to Another

Columns("B").Value = Columns("A").Value

・Copy Entire Row

Rows("2").Value = Rows("1").Value

✅ Simple yet powerful
✅ Works even with hidden columns

Use carefully — entire-column operations can be heavy on large sheets.


✅ Copy and Paste Values Between Workbooks

Automation often involves copying from one Excel file to another.

Sub CopyValuesBetweenWorkbooks()
Workbooks("Source.xlsx").Sheets("Data").Range("A1:D20").Copy
Workbooks("Target.xlsx").Sheets("Output").Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub

✅ Suitable for data consolidation tasks
✅ Great for nightly automation jobs

Or faster, clipboard-free:

Workbooks("Target.xlsx").Sheets("Output").Range("A1:D20").Value = _
Workbooks("Source.xlsx").Sheets("Data").Range("A1:D20").Value

✅ Cleaner and faster in large-scale workflows


✅ Copy Values After Filtering

When using filters, SpecialCells ensures only visible rows are copied.

Sub CopyFilteredValuesOnly()
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Range("G1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub

✅ Only visible rows are transferred
✅ Hidden data stays untouched


✅ Advanced: Convert All Formulas on a Sheet to Values

To “freeze” an entire worksheet:

Sub ConvertSheetToValues()
With ActiveSheet.UsedRange
.Value = .Value
End With
End Sub

✅ Instantly removes all formulas
✅ Common in final reporting automation
✅ Keeps layout intact


✅ Combine with RPA Tools Like UiPath or Power Automate

In enterprise automation, RPA bots often rely on Excel files.
If formulas remain active:

❌ Bots can read wrong values
❌ Excel recalculations cause delays
❌ Shared files may crash or corrupt

By using value-only sheets:

  • RPA reads static data safely
  • Processing time drops significantly
  • Business operations become predictable

UiPath or Power Automate can trigger your VBA macro before sending the final report, ensuring all data is clean and locked in value form.


✅ Common Mistakes and How to Avoid Them

MistakeProblemSolution
Forgetting Application.CutCopyMode = FalseExcel stays in Copy ModeAlways reset
Copying formulas by accidentData changes unexpectedlyUse .Value = .Value
Copying whole columns unnecessarilySlow performanceLimit to UsedRange
Losing number formatData looks incorrectApply NumberFormat
Copying hidden cellsWrong dataUse SpecialCells for visible range

Automation should be predictable — these small precautions make it robust.


✅ Best Practices for Copying Values in VBA

  • ✔ Use .Value = .Value whenever possible
  • ✔ Always clear Copy Mode after PasteSpecial
  • ✔ Use fully qualified sheet references
  • ✔ Add error handling for missing sheets or files
  • ✔ Turn off ScreenUpdating for large loops
  • ✔ Test with sample and live data separately

These habits improve both speed and stability of your macros.


✅ Hands-On Exercise

Follow this practical scenario:

  1. Create a workbook with sales formulas
  2. Write a VBA macro that copies the results only
  3. Paste them to another sheet titled “Final Report”
  4. Remove formulas using .Value = .Value
  5. Save as a new workbook for archiving
  6. Measure execution speed
  7. Verify RPA compatibility with UiPath

You now have a process ready for daily or weekly reporting automation.


✅ Summary: Master Copying Values Only in Excel VBA

  • Copying values keeps your data stable and clean
  • Use Range.Value = Range.Value for fastest and safest results
  • Combine PasteSpecial for formats when needed
  • Dynamic and filtered copies adapt to real data size
  • Essential for reporting, automation, and RPA reliability

By copying values only, your workbooks become faster, lighter, and error-free — a hallmark of true Excel VBA mastery.
Let automation handle the rest, while your data stays exactly the way you want it.

Scroll to Top