Tak jsem sem dal to nejjednodušší makro, kde je problém jen s jednou proměnnou "posun", kterou musím nulovat.
Účel je tento:
Na listu "Sestava" vyhledám všechny řádky s označením "Hangers" a nakopíruji je do listu "Cil". Začínám kopírovat na řádek č. 3 (Hangers má 6 řádku, takže skončím řádku 9.).
Pak na listu "Sestava" vyhledám všechny řádky ze skupiny "Cartridges" a zase je nakopíruji do listu "Cil", a začínám je kopírovat hned na 10. řádek). A zase další.
A ta proměnná "posun" vždy zajistí, aby ty řádky na sebe navazovaly. Když ji nevynuluji, tak při druhém spuštění makra, se řádky kopírují jinam než potřebuji.
to X: však mě to také chybu nehází, jen řeším to, že po skončení makra si VBA pamatuje hodnotu proměnné, což mi dělá "neplechu" při druhém spuštění makra.
(Již na průmyslovce, když jsem na začátek kódu, napsal a=0, b=0, tak mě s tím učitel vyhodil.)
Kód: Vybrat vše
Option Explicit
Private Sk As String
Dim sl, radek_c, posun, radek, p As Integer
Sub kopiruj()
Sheets("Sestava").Select
radek_c = 3
posun = 0
Sk = "Hangers" 'skupina "Hangers"
Call Zpracuj 'zavolám makro které mi zpracuje skupinu dle proměnné "Sk"
posun = 6 'Skupina Hangers má 6 položek, takže další skupinu píšu až za 6. řádkem
Sk = "Cartridges" 'skupina "Cartridges"
Call Zpracuj
posun = 15
End Sub
Sub Zpracuj()
radek_c = radek_c + posun 'přičtu počet nakopírovaných řádků, abych si je nepřepsal
For radek = 3 To 377 'projdu všechny položky a hledám "Hangers", "Cartridges" atd.
If Cells(radek, 4) = Sk Then 'pokud naleznu "Hangers", tak překopíruji řádek
p = Cells(radek, 5) 'do p zapíšu pořadové číslo řádku, určuje pořadí v cíli
'Každou Hangers nakopíruji do cíle podle poařadí "p":
Sheets("Cil").Rows(radek_c + p) = Sheets("Sestava").Rows(radek).Value
Else
End If
Next radek
End Sub
"
Dodatečně přidáno po 32 minutách 16 vteřinách:Opravil jsem kód, byl tam špatný název listu.