Excel VBA a kopírování skrytých buněk

Ve verzích Excelu se může lišit způsob kopírování buněk v oblasti se skrytými buňkami. Zde je přehled rozdílů:

Verze před Excel 2010:

– Pokud v oblasti se skrytými buňkami vyberete určitou oblast buněk a provedete standardní kopírování a vložení, budou zkopírovány všechny buňky včetně těch skrytých.

– Tento přístup může být nepříjemný, protože skryté buňky jsou zahrnuty do kopírovaného obsahu a mohou ovlivnit výsledek operace.

Excel 2010 a novější verze:

– Od verze 2010 Excel přinesl změnu ve způsobu kopírování buněk v oblasti se skrytými buňkami.

– Pokud vyberete oblast se skrytými buňkami a provedete standardní kopírování a vložení, skryté buňky nebudou zahrnuty v kopírovaném obsahu.

– Tento nový přístup usnadňuje manipulaci s oblastmi, které obsahují skryté buňky, protože se kopírují pouze viditelné buňky.

Je důležité poznamenat, že chování může být upraveno pomocí nastavení možností kopírování ve volbách Excelu. Pokud chcete mít kontrolu nad tím, zda jsou skryté buňky zahrnuty při kopírování, můžete zkontrolovat tyto možnosti a přizpůsobit je svým potřebám.


Zde je upravený kód, který pracuje se zdrojovým listem „zdroj“ a kopíruje do cílového listu „cil“ do buňky A2. Po dokončení kopírování je list „cil“ aktivní:



 Sub KopirovatSkrytouOblast()

    Dim zdrojList As Worksheet

    Dim cilList As Worksheet


    ' Nastavení zdrojového a cílového listu

    Set zdrojList = ThisWorkbook.Sheets("zdroj")

    Set cilList = ThisWorkbook.Sheets("cil")

   

    ' Uložte referenci na oblast A1:F1 v zdrojovém listu

    Dim sourceRange As Range

    Set sourceRange = zdrojList.Range("A1:F1")

   

    ' Uložte referenci na skryté sloupce v oblasti

    Dim hiddenColumns As Range

    Set hiddenColumns = Nothing

 

    Dim cell As Range

    For Each cell In sourceRange

        If cell.EntireColumn.Hidden = True Then

            If hiddenColumns Is Nothing Then

                Set hiddenColumns = cell.EntireColumn

            Else

                Set hiddenColumns = Union(hiddenColumns, cell.EntireColumn)

            End If

        End If

    Next cell

   

    ' Zobrazte skryté sloupce

    If Not hiddenColumns Is Nothing Then

        hiddenColumns.Hidden = False

    End If

   

    ' Zkopírujte oblast A1:F1 ze zdrojového listu

    sourceRange.Copy

   

    ' Vložte zkopírovanou oblast na cílový list do buňky A2

    cilList.Range("A2").PasteSpecial Paste:=xlPasteAll

   

    ' Skryjte sloupce B:D (nebo skryté sloupce)

    If Not hiddenColumns Is Nothing Then

        hiddenColumns.Hidden = True

    End If

   

    ' Vypnutí kopírovacího módu

    Application.CutCopyMode = False

   

    ' Aktivace cílového listu "cil"

    cilList.Activate

End Sub

Tento upravený kód předpokládá, že zdrojový list se jmenuje „zdroj“ a cílový list se jmenuje „cil“. Před spuštěním kódu se ujistěte, že tyto názvy listů odpovídají vašim skutečným názvům. Po dokončení kopírování se aktivuje cílový list „cil“.Tento upravený kód předpokládá, že zdrojový list se jmenuje „zdroj“ a cílový list se jmenuje „cil“.

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít nahoru