How to repeat actions inside a LibreOffice Writer macro

I have a movie catalogue that I am editing. I want every second “enter” to be deleted. Here is the code that successfully does it once. I obtained it through record macro:

REM  *****  BASIC  *****

    sub Main
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    dim iNumber	   as integer
    
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    rem ----------------------------------------------------------------------
    dim args1(21) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "SearchItem.StyleFamily"
    args1(0).Value = 2
    args1(1).Name = "SearchItem.CellType"
    args1(1).Value = 0
    args1(2).Name = "SearchItem.RowDirection"
    args1(2).Value = true
    args1(3).Name = "SearchItem.AllTables"
    args1(3).Value = false
    args1(4).Name = "SearchItem.SearchFiltered"
    args1(4).Value = false
    args1(5).Name = "SearchItem.Backward"
    args1(5).Value = false
    args1(6).Name = "SearchItem.Pattern"
    args1(6).Value = false
    args1(7).Name = "SearchItem.Content"
    args1(7).Value = false
    args1(8).Name = "SearchItem.AsianOptions"
    args1(8).Value = false
    args1(9).Name = "SearchItem.AlgorithmType"
    args1(9).Value = 1
    args1(10).Name = "SearchItem.SearchFlags"
    args1(10).Value = 65536
    args1(11).Name = "SearchItem.SearchString"
    args1(11).Value = "^$"
    args1(12).Name = "SearchItem.ReplaceString"
    args1(12).Value = ""
    args1(13).Name = "SearchItem.Locale"
    args1(13).Value = 255
    args1(14).Name = "SearchItem.ChangedChars"
    args1(14).Value = 2
    args1(15).Name = "SearchItem.DeletedChars"
    args1(15).Value = 2
    args1(16).Name = "SearchItem.InsertedChars"
    args1(16).Value = 2
    args1(17).Name = "SearchItem.TransliterateFlags"
    args1(17).Value = 1280
    args1(18).Name = "SearchItem.Command"
    args1(18).Value = 0
    args1(19).Name = "SearchItem.SearchFormatted"
    args1(19).Value = false
    args1(20).Name = "SearchItem.AlgorithmType2"
    args1(20).Value = 2
    args1(21).Name = "Quiet"
    args1(21).Value = true
    
    dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
    
    rem ----------------------------------------------------------------------
    dim args2(21) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "SearchItem.StyleFamily"
    args2(0).Value = 2
    args2(1).Name = "SearchItem.CellType"
    args2(1).Value = 0
    args2(2).Name = "SearchItem.RowDirection"
    args2(2).Value = true
    args2(3).Name = "SearchItem.AllTables"
    args2(3).Value = false
    args2(4).Name = "SearchItem.SearchFiltered"
    args2(4).Value = false
    args2(5).Name = "SearchItem.Backward"
    args2(5).Value = false
    args2(6).Name = "SearchItem.Pattern"
    args2(6).Value = false
    args2(7).Name = "SearchItem.Content"
    args2(7).Value = false
    args2(8).Name = "SearchItem.AsianOptions"
    args2(8).Value = false
    args2(9).Name = "SearchItem.AlgorithmType"
    args2(9).Value = 1
    args2(10).Name = "SearchItem.SearchFlags"
    args2(10).Value = 65536
    args2(11).Name = "SearchItem.SearchString"
    args2(11).Value = "^$"
    args2(12).Name = "SearchItem.ReplaceString"
    args2(12).Value = ""
    args2(13).Name = "SearchItem.Locale"
    args2(13).Value = 255
    args2(14).Name = "SearchItem.ChangedChars"
    args2(14).Value = 2
    args2(15).Name = "SearchItem.DeletedChars"
    args2(15).Value = 2
    args2(16).Name = "SearchItem.InsertedChars"
    args2(16).Value = 2
    args2(17).Name = "SearchItem.TransliterateFlags"
    args2(17).Value = 1280
    args2(18).Name = "SearchItem.Command"
    args2(18).Value = 2
    args2(19).Name = "SearchItem.SearchFormatted"
    args2(19).Value = false
    args2(20).Name = "SearchItem.AlgorithmType2"
    args2(20).Value = 2
    args2(21).Name = "Quiet"
    args2(21).Value = true
    
    dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
    end sub

How do I use a while not eof or do until eof to get this to repeat until all the desired changes are made?

Try this:

Sub DeleteEvenEmptyParagraph
Dim oText As Variant
Dim oEnum As Variant
Dim oNext As Variant
Dim isOdd As Boolean 
	oText = ThisComponent.getText()
	oEnum = oText.createEnumeration()
	isOdd = False
	Do While oEnum.hasMoreElements()
		oNext = oEnum.nextElement()
		If Trim(oNext.getString()) = "" Then
			If isOdd Then oNext.dispose()
			isOdd = Not isOdd
		EndIf 
	Loop
End Sub

Thanks. This works very well. A minor issue is I wanted every odd empty paragraph but this is easy to get around.

Cheers

Yes, it’s easy - just change False to True