Přejít na hlavní obsah

Jak zkopírovat rozsah a přesunout jej jinam v aplikaci VBA Excel

Pravděpodobně jste narazili na situaci, kdy potřebujete zkopírovat určitý rozsah buněk v Excelu a přesunout jej jinam. To může být užitečné, když chcete třídit data, vytvářet sestavy nebo provádět jiné operace s vašimi tabulkami a daty.

K tomu můžete použít programovací jazyk VBA (Visual Basic for Applications) zabudovaný v Excelu k automatizaci tohoto procesu. VBA vám umožňuje vytvářet makra a skripty, které provádějí různé úkoly v Excelu, včetně kopírování a přesouvání dat.

Jedním ze způsobů, jak to udělat VBA, je použití metody "Copy" pro objekt "Range" (rozsah). Můžete zadat původní rozsah, který chcete zkopírovat, a poté určit místo, kam jej chcete přesunout, pomocí metody "Paste".

Příklad kódu:




Sub CopyAndPasteRange()


Dim sourceRange As Range


Dim targetRange As Range


'Zadejte původní rozsah, který chcete zkopírovat


Set sourceRange = Worksheets("Sheet1").Range("A1:B10")


'Zadejte místo, kam chcete zkopírovat rozsah


Set targetRange = Worksheets("Sheet2").Range("C1")


'Kopírovat rozsah


sourceRange.Copy


'Vložit zkopírovaný rozsah na cílové místo


targetRange.PasteSpecial


End Sub

V tomto příkladu uvádíme původní rozsah, který je umístěn na listu " Sheet1 "v rozsahu"A1:B10". Poté označíme místo, kam má být rozsah přesunut-na listu "Sheet2" do buňky "C1". Rozsah kopírujeme a vkládáme pomocí metod "Copy" a "PasteSpecial".

S tímto kódem můžete snadno kopírovat a přesouvat rozsahy v Excelu pomocí VBA. To může být užitečné pro automatizaci duplicitních úloh a urychlení vaší práce s daty v Excelu.

Jak zkopírovat rozsah VBA Excel

V aplikaci VBA Excel lze snadno zkopírovat datový rozsah pomocí metody Range . Tato metoda vám umožňuje vybrat požadovaný rozsah a zkopírovat jej jinam.

Chcete-li začít, musíte určit původní rozsah, který chcete zkopírovat. Můžete jej výslovně označit, například jako Range ("a1: C5"), nebo použít proměnné místo pevně zakódovaných hodnot.

Dim sourceRange As RangeSet sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5")

Poté vytvořte nový rozsah, do kterého bude zkopírován původní. Může to být rozsah stejného tvaru a velikosti, nebo můžete určit jiný rozsah. V tomto příkladu vytvoříme nový rozsah na listu " Sheet2 "v buňce"D1".

Dim destinationRange As RangeSet destinationRange = ThisWorkbook.Worksheets("Sheet2").Range("D1")

Poté pomocí metody Copy proveďte kopírování. Jako argumenty uveďte původní rozsah a jeho cíl.

sourceRange.Copy destinationRange

Úplný příklad kódu:

Sub CopyRange()Dim sourceRange As RangeDim destinationRange As Range' Исходный диапазонSet sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5")' Место назначенияSet destinationRange = ThisWorkbook.Worksheets("Sheet2").Range("D1")' КопированиеsourceRange.Copy destinationRangeEnd Sub

Po provedení tohoto kódu bude vybraný rozsah zkopírován a umístěn na určené místo.

Můžete také použít jiné metody a vlastnosti objektu Range ke změně původního rozsahu před kopírováním, například ke změně jeho velikosti nebo formátu. Pokud chcete zkopírovat pouze hodnoty nebo formátování, můžete použít příslušné metody a vlastnosti Range .

Získání rozsahu

V aplikaci VBA Excel existuje několik způsobů, jak získat rozsah dat. Podívejme se na ty nejčastěji používané.

    Pomocí metody Range zařízení Worksheet :
Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Название_листа")Dim rng As RangeSet rng = ws.Range("A1:C10")
Dim rng As RangeSet rng = ThisWorkbook.Worksheets("Название_листа").Range(Cells(1, 1), Cells(10, 3))
Dim rng As RangeSet rng = ThisWorkbook.Worksheets("Название_листа").Cells(1, 1).Resize(10, 3)

Ve všech třech příkladech získáme datový rozsah 10 řádků na 3 sloupce. Tyto příklady můžete přizpůsobit svým potřebám uvedením požadovaného počtu řádků a sloupců.

Výsledný rozsah lze použít ke kopírování, vkládání, mazání nebo jiným datovým operacím.

Kopírování rozsahu

V VBA pro Excel lze pomocí metod a vlastností objektu Range zkopírovat rozsah buněk a přesunout jej jinam. Rozsah lze zkopírovat do stejné pracovní knihy nebo do jiné pracovní knihy.

Chcete-li zkopírovat rozsah buněk v aplikaci VBA Excel, musíte postupovat podle následujících kroků:

  1. Definovat objekty SourceRange (původní rozsah) a DestinationRange (cílový rozsah), které představují kopírovatelné a pohyblivé rozsahy.
  2. Kopírovat hodnoty, vzorce nebo formátování pomocí metody Copy a vlastnosti Value , Formula nebo format objektu Range .
  3. Vložit Zkopírované hodnoty , vzorce nebo formátování pomocí metody Paste a vlastnosti Value, Formula nebo format objektu Range .

Zde je příklad kódu, který ukazuje, jak zkopírovat rozsah a přesunout jej jinam:

Sub CopyRange()Dim SourceRange As RangeDim DestinationRange As Range' Определение исходного и целевого диапазоновSet SourceRange = ThisWorkbook.Sheets("Sheet1").Range("A1:B5")Set DestinationRange = ThisWorkbook.Sheets("Sheet2").Range("C1:D5")' Копирование значений из исходного диапазонаDestinationRange.Value = SourceRange.ValueEnd Sub

V tomto příkladu definujeme objekty SourceRange a DestinationRange pro odpovídající rozsahy v pracovních knihách. Poté zkopírujeme hodnoty z původního rozsahu do cílového rozsahu pomocí vlastnosti hodnoty .

Pomocí metody Copy a vlastnosti Value (nebo Formula nebo Format) lze tedy snadno zkopírovat a přesunout rozsah buněk do VBA Excelu.

Posunutí rozsahu

V aplikaci VBA Excel lze datový rozsah snadno přesunout jinam pomocí několika řádků kódu. K tomu se používá metoda Copy a metoda PasteSpecial.

Před přesunem rozsahu je nutné určit, odkud a kam se má přesunout. K tomu lze použít proměnné s odkazem na původní a cílové rozsahy.

Sub MoveRange()Dim sourceRange As RangeDim targetRange As Range' Указываем исходный диапазонSet sourceRange = Range("A1:C5")' Указываем целевой диапазонSet targetRange = Range("E1:G5")' Копируем и перемещаем исходный диапазон в целевойsourceRange.CopytargetRange.PasteSpecial' Очищаем буфер обменаApplication.CutCopyMode = FalseEnd Sub

V uvedeném příkladu jsou nejprve vytvořeny proměnné sourceRange a targetRange , které obsahují odkazy na původní a cílové rozsahy. Metoda Copy poté zkopíruje data z původního rozsahu do schránky a metoda PasteSpecial je vloží do cílového rozsahu. Nakonec je povolána metoda Application.CutCopyMode = False pro vymazání schránky.

Tímto způsobem je možné snadno přesunout datový rozsah do VBA Excelu pomocí metod Copy a PasteSpecial .

Příklad použití VBA Excel

Řekněme, že v sešitu máme dvě tabulky - "Tabulka1" a "Tabulka2". Musíme zkopírovat rozsah hodnot z "Tabulka1" a přesunout jej do "Tabulka2".

K tomu je třeba provést následující kroky:

  1. Otevřít Visual Basic Pro aplikace kliknutím Alt+F11.
  2. V okně, které se otevře, vyberte " Tabulka1 "ze seznamu"Oblast projektu-VBAProject".
  3. Vložit následující kód VBA:

4. Zavřít okno Visual Basic Pro aplikace kliknutím Alt+Q.

Nyní, když je třeba zkopírovat a přesunout rozsah z "Tabulka1" do "Tabulka2" , stačí provést následující kroky:

  1. Otevřete pracovní sešit s tabulkami.
  2. Stisknout Alt+F8 pro otevření okna makra.
  3. Vyberte v seznamu Makro " CopyAndMove "a klikněte na"Spustit".

Nyní bude rozsah hodnot z " Tabulka1 "zkopírován a přesunut do"Tabulka2".