Zu "Kann man denn die Ausführung eines Makros abhängig machen von einer "Wenn-Formel" (If command) ?": Das ist hier gar nicht nötig, da das Makro selbst je nach Bedingung(en) entscheidet, ob und was es tut.
Vermutlich geht's aber nur mit VBA. Das Problem mit dem Rückgängig besteht (in Excel) darin, dass nach Ausführung von VBA-Aktionen, die Änderungen an der Arbeitsmappe durchführen, die Rückgängig-Liste nicht mehr verfügbar ist.
Du reagierst am besten mit einer Ereignisprozedur, die sich in dem Tabellenblatt befindet, wo die Änderungen (Auswahl) vorgenommen werden können. Der Zielbereich kann theoretisch in einem anderen Blatt sein. Und zwar verwendest du das Worksheet_Change-Ereignis. Probiere folgendes Mini-Bsp.:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim oRg1 As Range, oRg2 As Range
Dim oAuszublenden As Range
' Die 2 Bereiche, auf deren Änderung reagiert werden soll
Set oRg1 = ActiveSheet.Cells(1, 4)
Set oRg2 = ActiveSheet.Cells(2, 5)
' Ist die Änderung relevant? _
etwas aufwändiger, wenn Mehrfach-Markierung / Änderung, _
eine "Nicht-Zelle" betroffen, ... _
nicht getestet mit einem Formularfeld
If Target oRg1 And Target oRg2 Then Exit Sub
Set oAuszublenden = ActiveSheet.Range("F2:G10")
' Jetzt deine Bedingungen, die ich natürlich nicht nachvollziehen kann, z.B.
If oRg1.Value = "Wert 1" Or oRg1.Value = "Wert 17" Then
If oRg2.Value = "Wert 2" Then
oAuszublenden.EntireColumn.Hidden = True ' für Zeilen wäre es EntireRow
End If
Else
oAuszublenden.EntireColumn.Hidden = False
End If
End Sub