VBA (Visual Basic for Applications) je programovací jazyk používaný v Microsoft Office, včetně Excelu. S ním můžete automatizovat a zlepšit svou práci s tabulkami, včetně kopírování excelových buněk se zachováním formátování.
Když zkopírujete buňku v Excelu pomocí standardních nástrojů, formátování buňky se neukládá. Pomocí VBA však můžete buňku zkopírovat tak, aby zachovala všechny formátování: barvu pozadí, ohraničení, podmíněné formátování atd. To může být užitečné, když chcete zkopírovat data se zachováním jejich vzhledu.
VBA ke kopírování buňky s uložením formátování používá metodu Copy a metodu PasteSpecial. Nejprve musíte buňku zkopírovat pomocí metody Copy a poté ji vložit uložením formátování pomocí metody PasteSpecial. Pomocí možnosti Paste můžete přesně určit, které atributy buňky chcete zkopírovat (například hodnoty, formátování, vzorce).
Příklad kódu VBA:
Sub CopyWithFormatting()
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteAll
End Sub
V tomto příkladu kódu je buňka A1 zkopírována do buňky B1 pomocí metod Copy a PasteSpecial s hodnotou parametru Paste rovnající se xlpasteall. Hodnota xlPasteAll znamená, že jsou vloženy všechny atributy buňky, včetně hodnot, formátování, vzorců atd. Pokud chcete kopírovat pouze některé atributy buňky, můžete použít jiné hodnoty parametru Paste, jako jsou xlPasteValues, xlPasteFormats atd.
VBA Excel: kopírování buňky ve stylu
Kopírování buněk do Excelu s uložením jejich formátování může být náročné. Nicméně, s VBA v Excelu můžete snadno zkopírovat buňku a uložit její styl.
Jedním ze způsobů, jak to udělat, je použít vlastnost Range.PasteSpecial. Tato vlastnost umožňuje kopírovat pouze určité atributy buňky, včetně stylů.
Níže jsou uvedeny příklady kódu VBA, které ukazují, jak zkopírovat buňku ve stylu:
'Zkopírovat buňku A1
'Vložit hodnotu a styl do buňky B1
'Vymazat schránku
V uvedeném příkladu je buňka A1 zkopírována pomocí metody Copy a poté vložena do buňky B1 pomocí metody PasteSpecial a parametru xlpasteall, který naznačuje, že je třeba zkopírovat všechny atributy buňky, včetně stylu.
Po spuštění kódu je nutné vyprázdnit schránku pomocí vlastnosti aplikace.CutCopyMode.
Nyní buňka B1 přesně kopíruje obsah a styl buňky A1.
Na závěr, VBA v Excelu poskytuje pohodlné nástroje pro kopírování buněk s jejich uložením na formátování. Metoda PasteSpecial s možností xlpasteall umožňuje kopírovat nejen hodnotu buňky, ale také její styl.
Metody kopírování buněk VBA Excel
V aplikaci VBA Excel existuje několik způsobů kopírování buněk, které vám umožňují uložit formátování a další vlastnosti. Níže jsou uvedeny nejběžnější metody kopírování buněk:
-
Použití metody Copy a metody PasteSpecial: Tato metoda umožňuje zkopírovat obsah a formátování buňky a další vlastnosti, jako jsou vzorce a hodnoty. Příklad kódu:
Range("A1").CopyRange("B1").PasteSpecial xlPasteAll
Range("A1").Value = Range("B1").Value
Range("A1").Copy Destination:=Range("B1")
Range("A1").CopyRange("B1").PasteSpecial xlPasteFormats
Výběr metody kopírování buněk závisí na požadovaném výsledku. Pokud je nutné zachovat formátování a další vlastnosti, měla by být použita metoda Copy a Metoda PasteSpecial. Pokud je požadována pouze hodnota buňky, stačí použít vlastnost Value. Metoda Copy a Metoda PasteSpecial s možností Formats umožňují kopírovat pouze formátování bez ostatních vlastností.
Kopírování buňky bez formátování
Šablonový kód VBA v Excelu usnadňuje kopírování dat z jedné buňky do druhé, ale často se kopíruje i formátování, což může vést k nevhodnému zobrazení dat. Existuje však způsob, jak zkopírovat pouze hodnotu bez formátování.
K tomu lze použít následující kód:
- Vyberte ječmen, který chcete zkopírovat bez formátování.
- Otevřete Editor VBA stisknutím Alt + F11.
- Vložte následující kód do okna editoru VBA, které se otevře:
Sub Копирование_без_форматирования()' Копирование значения без форматирования из активной ячейкиSelection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseApplication.CutCopyMode = FalseEnd Sub
4. Stisknutím Ctrl + S uložíte změny v kódu.
Nyní zkopírujte hodnotu z vybrané buňky bez formátování podle následujících kroků:
- Vyberte buňku, do které chcete vložit data bez formátování.
- Vyberte kartu Vývojář a klikněte na tlačítko makra (nebo použijte klávesovou zkratku ALT + F8).
- Vyberte makro " Kopírování_bez_formátování "a klikněte na tlačítko"Spustit".
Nyní bude hodnota zkopírována do vybrané buňky bez formátování, což vám umožní získat stejné zobrazení dat v různých buňkách.
Kopírování buňky s uložením pouze hodnoty
V aplikaci VBA Excel lze buňku snadno zkopírovat a zachovat pouze její hodnotu, bez formátování. K tomu lze použít metodu Value objektu range .
Sub КопированиеЗначения()Dim ячейка1 As RangeDim ячейка2 As Range' Указываем ячейку, которую хотим скопироватьSet ячейка1 = Range("A1")' Указываем ячейку, в которую хотим вставить значениеSet ячейка2 = Range("B1")' Копируем значение из одной ячейки в другуюячейка2.Value = ячейка1.ValueEnd Sub
V tomto příkladu bude hodnota z buňky A1 zkopírována do buňky B1 , přičemž formátování nebude uloženo.
Pomocí metody Value můžete také kopírovat hodnoty z jedné oblasti buněk do druhé:
Sub КопированиеОбласти()Dim область1 As RangeDim область2 As Range' Указываем область ячеек, которую хотим скопироватьSet область1 = Range("A1:C3")' Указываем область ячеек, в которую хотим вставить значенияSet область2 = Range("D1:F3")' Копируем значения из одной области ячеек в другуюобласть2.Value = область1.ValueEnd Sub
V tomto příkladu budou hodnoty z oblasti buněk A1:C3 zkopírovány do oblasti buněk D1: F3 .
Pomocí metody Value tedy můžete kopírovat hodnoty beze změny formátování, což může být užitečné při zpracování dat VBA Excel.
Kopírování buňky s uložením formátování
Při kopírování buňky v Excelu pomocí VBA je ve výchozím nastavení zkopírována pouze hodnota buňky bez jejího formátování. Pomocí nějakého kódu je však možné buňku zkopírovat a uložit její formátování.
Abychom mohli zkopírovat formátovanou buňku, musíme nejprve vytvořit novou buňku, do které budeme kopírovat data. Poté můžeme použít metodu Copy ke kopírování hodnoty buňky a metodu PasteSpecial ke kopírování jejího formátování.
Sub КопированиеЯчейкиСФорматированием()Dim ИсходнаяЯчейка As RangeDim НоваяЯчейка As RangeSet ИсходнаяЯчейка = Range("A1") 'задайте нужную ячейкуSet НоваяЯчейка = Range("B1") 'задайте новую ячейку для копирования значения и форматированияИсходнаяЯчейка.CopyНоваяЯчейка.PasteSpecial Paste:=xlPasteAllApplication.CutCopyMode = FalseEnd Sub
V tomto příkladu vytváříme dvě proměnné: Zdrojový a Nový Puchel, který představuje původní buňku, kterou chceme zkopírovat, a novou buňku, do které budeme kopírovat data. Poté použijeme metodu Copy ke kopírování hodnoty buňky zdrojový. Poté použijeme metodu PasteSpecial s možností Paste:=xlPasteAll pro kopírování formátování buňky do nového puchýře. Na konci nainstalujeme aplikaci.CutCopyMode = False pro odstranění výběru.
Nyní, když dokončíte tento kód, buňka nový Puchel bude obsahovat data a formátování buňky zdrojový Puchel.
Pomocí tohoto kódu budete moci buňku snadno zkopírovat a uložit její formátování do Excelu při použití VBA.
Kopírování buňky ve stylu pomocí VBA kódu
Chcete-li zkopírovat buňku v Excelu a zachovat její styl a formátovat, můžete použít kód VBA. Zde je příklad, který vám umožní provést tuto operaci:
Sub CopyCellWithStyle()' Задаем переменныеDim sourceCell As RangeDim targetCell As Range' Указываем ячейку-источникSet sourceCell = Range("A1")' Указываем ячейку-назначениеSet targetCell = Range("B1")' Копируем значение и формат из ячейки-источника в ячейку-назначениеsourceCell.CopytargetCell.PasteSpecial Paste:=xlPasteAllUsingSourceTheme' Очищаем буфер обменаApplication.CutCopyMode = FalseEnd Sub
V tomto příkladu nastavíme proměnné pro zdrojovou buňku (sourceCell) a cílovou buňku (targetCell). Poté použijeme metodu Copy ke zkopírování hodnoty a formátování ze zdrojové buňky do schránky. Poté použijeme metodu PasteSpecial k vložení hodnoty a formátování do buňky-účel s uložením návrhu dokumentu.
Po dokončení operace kopírování vymažeme schránku pomocí aplikace.CutCopyMode = False .
Nyní , když spustíte makro CopyCellWithStyle, bude hodnota a formátování ze zdrojové buňky zkopírováno do buňky-účel se zachováním stylu.