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ů:
- Definovat objekty SourceRange (původní rozsah) a DestinationRange (cílový rozsah), které představují kopírovatelné a pohyblivé rozsahy.
- Kopírovat hodnoty, vzorce nebo formátování pomocí metody Copy a vlastnosti Value , Formula nebo format objektu Range .
- 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:
- Otevřít Visual Basic Pro aplikace kliknutím Alt+F11.
- V okně, které se otevře, vyberte " Tabulka1 "ze seznamu"Oblast projektu-VBAProject".
- 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:
- Otevřete pracovní sešit s tabulkami.
- Stisknout Alt+F8 pro otevření okna makra.
- Vyberte v seznamu Makro " CopyAndMove "a klikněte na"Spustit".
Nyní bude rozsah hodnot z " Tabulka1 "zkopírován a přesunut do"Tabulka2".