Z uvedeneho neni zrejme, proc "mi makro nefunguje".
Nevylucuji, ze nebyl v procedure upraven nazev listu urceneho k redukci radku.
Proto prikladam upravenou proceduru (v editoru VBA - Alt+F11 - vloz do standardniho modulu, zavolej z nabidka Nastroje>Makro>... nebo v editoru VBA F5, zadej na vyzvu list a nasobek ponechanych radku):
Kód: Vybrat vše
Option Explicit
Sub OdstranRadky()
Dim MyArea As Range, PoslRadek As Long, Kazdy As Byte, Pocatek As Long
Dim Odstran As Range, Ofs As Long
Dim WshtCll As Range, WshtN As String, Ponechat As Integer
On Error Resume Next
Set WshtCll = Application.InputBox("Vyber list a klikni na libovolnou bunku, pak OK", , , , , , , 8)
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
WshtN = WshtCll.Parent.Name
Ponechat = Application.InputBox("Zadej cislo vyjadrujici nasobek ponechanych radku" _
& " (ponechat kazdy n-ty radek v rozmezi 2 - 1000)", , , , , , , 1)
If Ponechat < 2 Or Ponechat > 1000 Then
MsgBox "nutno zadat cislo v rozmezi 2 - 1000"
Exit Sub
End If
Set MyArea = Worksheets(WshtN).UsedRange
If IsEmpty(MyArea) Then End
PoslRadek = MyArea.Rows.Count
Application.ScreenUpdating = False
Set Odstran = Worksheets(WshtN).Range("1:" & Ponechat - 1).Rows
Ofs = Ponechat
Ponechat = Ponechat - 1
Do While Ofs < PoslRadek
Odstran.Offset(Ofs, 0).EntireRow.Delete
Ofs = Ofs + 1
PoslRadek = PoslRadek - Ponechat
Loop
Odstran.EntireRow.Delete
Range("a1").Select
Application.ScreenUpdating = True
Set MyArea = Nothing
Set Odstran = Nothing
End Sub
Overeno na listu se 65536 radky a libovolnym (v rozmezi 2 - 1000) nasobkem cisla ponechanych radku.
Testuj na kopii souboru.PS.: Pro castejsi pouziti si muzes proceduru vlozit do osobniho sesitu maker nebo do noveho sesitu a pak ve stejne instanci Excelu volat proceduru na aktivnim sesitu urcenem k redukci radku.