Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excell, po vyplnění buňky se řádek přesune na druhý list

Ahoj mám dotaz: chtěl bych v nastíněné tabulce provést operaci, aby po vyplnění buňky v sloupci E písmenem A (Ano) byl celý řádek přesunut z listu "Sortiment" na list "Prodáno" a řádky pod přesunutým řádkem se automaticky posunou nahoru (nezůstane prázdný řádek). Na listu "Prodáno" se přesunuté řádky budou řadit pod sebe. Tato operace se může provést klidně až po uzavření sešitu. Je možné vytvořit takové makro nebo je to řešitelné nějakou funkcí? Díky všem za radu.

Předmět Autor Datum
Private Sub Worksheet_Change(ByVal Target As Range) Dim aRange As Range Dim aRow As Range Set aRange…
los 27.05.2014 21:12
los
Eh nějak mi to nechodí - vytvořil jsem Makro(pojmenoval jsem ho aa) a vložil do něj tento text a po…
vasekpetr1 28.05.2014 18:11
vasekpetr1
Losův kód v souboru :-)
Siki83 28.05.2014 19:31
Siki83
Tak zajímavé, doma na notesu to funguje. V práci mám možná bloknutá makra, stahovaná v souboru z net…
vasekpetr1 29.05.2014 19:09
vasekpetr1
Perfektní, kód funguje (to mně taky máte nakopnout, že ho mám hledat v Zobrazení kódu na oušku listu…
vasekpetr1 31.05.2014 11:17
vasekpetr1
Presuň kód z List1 do ThisWorkbook a takto ho uprav: Private Sub Workbook_BeforeSave(ByVal SaveAsUI…
los 31.05.2014 11:23
los
Osobně bych to řešil spíš filtrem.
Chocholoušek 28.05.2014 19:10
Chocholoušek
Áno, filtrovanie je na toto vhodnejšie.
los 31.05.2014 11:28
los
Teď už to funguje k mé naprosté spokojenosti:-). Potřeboval jsem to naimplementovat do podobného sou… poslední
vasekpetr1 31.05.2014 15:56
vasekpetr1
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim aRange As Range
    Dim aRow As Range
    
    Set aRange = Intersect(Target, Range("E:E"))
    If Not aRange Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        For Each aRow In aRange.Rows
            If aRow = "A" Then
                aRow.EntireRow.Copy
                Worksheets("Prodáno").Range("A1").End(xlDown).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                aRow.EntireRow.Delete
            End If
        Next aRow
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub

Perfektní, kód funguje (to mně taky máte nakopnout, že ho mám hledat v Zobrazení kódu na oušku listu:-), ale ještě bych poprosil o úpravu, aby dané přesunutí řádku proběhlo až po uložení respektive zavření stránky. Takto mi to řádek přenese na další list ihned po přesunutí kurzoru na další buňku, do které bych rád dopsal nějaké doplňující údaje. Děkuji

Presuň kód z List1 do ThisWorkbook a takto ho uprav:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim aRow As Range
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For Each aRow In Worksheets("Sortiment").Range("E:E").Rows
        If aRow = "A" Then
            aRow.EntireRow.Copy
            Worksheets("Prodáno").Range("A1").End(xlDown).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
            aRow.EntireRow.Delete
        End If
    Next aRow
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Zpět do poradny Odpovědět na původní otázku Nahoru