Я думаю, вам нужно обернуть все ваше тело методом CommandButton1_Click
в Do While ... Loop
.
. Преобразуйте:
Sub CommandButton1_Click()
'body
End Sub
в
Sub CommandButton1_Click()
Do While Range("D1").Value <> 0
'body
Loop
End Sub
Или вы могли бы быть более элегантным:
Sub SomeSub()
'your CommandButton1_Click current body
End Sub
Sub CommandButton1_Click()
Do While Range("D1").Value <> 0
SomeSub
Loop
End Sub