Môžete použiť aj následujúci postup:
1. na koniec makra pridajte
Sub VlozRadek(SH As String)
Dim H(), R As Long, i As Long, MIN As Date, DNES As Date
With Worksheets(SH)
R = .Cells(.Rows.Count, 7).End(xlUp).Row
If R > 1 Then
H = .Cells(2, 7).Resize(R - 1).Value
DNES = Date: MIN = DateSerial(9999, 9, 9)
For i = 1 To UBound(H, 1)
If H(i, 1) > DNES And H(i, 1) < MIN Then MIN = H(i, 1): R = i
Next i
If Year(MIN) <> 9999 Then
.Rows(R + 1).Insert
End If
End If
End With
End Sub
2. Na miestach v kóde, kde chcete vyvolať prehľadanie stĺpca G v práve aktívnom liste, a nájsť najbližší dátum väčší ako DNES a pred neho vložiť riadok (máte to tam tuším na 4 miestach), tak tam dajte
Call VlozRadek(ActiveSheet.Name) 'Meno listu na ktorom sa má vyhľadávať dátum a vkladať riadok
Ale ešte raz vravím, že implementácia čohokoľvek do takéhoto makra plného Selectov, kde nič nieje isté ani len názov listu, či pozícia dátumov, a nevieme o štruktúre nič, napr. či je to tabuľka alebo Tabuľka (ListObject), od ktorého po ktorý riadok sú dátumy, či má tabuľka hlavičky ... je obtiažne. Toto čo Vám popisujem funguje aj na nezotriedených dátumoch, a počíta to s hlavičkou tabuľky na 1. riadku, a s dátumami začínajúcimi na 2. riadku, a s tým, že pod tabuľkou s dátumami v stĺpci G nie sú ďalšie/iné dáta, a že dátumy sú vždy v stĺpci G.
citovat