zellinhalt löschen wenn andere zelle leer

2 Antworten

Ja ich denke schon. Das geht zum Beispiel mit einem VBA-Makro, dazu in Excel mit Alt-F11 den VBA-Editor aufrufen (alternativ unter Datei/Optionen/Menuband anpassen die Entwicklertools anzeigen lassen und dort Code anzeigen wählen). Im VBA-Editor links oben unter VBAProject DieseArbeitsmappe und im Editorfenster links oben das Objekt Workbook und rechts oben das Ereignis auswählen. Ich habe zur Demo mal das Ereignis Workbook_SheetChange ausgewählt. Den Code wie folgt ausfüllen, dabei habe ich hier einfach die Zellen A1, B1 und C1 verwendet, die Zelle A1 musst Du zum Testen beliebig editieren oder leeren, B1 enthält die Wenn-Formel, und C1 die Anzeige:

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

'Zum Beispiel in Zelle B1 steht die Formel: =WENN(ISTLEER(A1);"";"nichtleer")

Dim r1 As Range, r2 As Range

Set r1 = Range("B1")

Set r2 = Range("C1")

If r1.Value = "" Then

r2.Value = "B1 ist leer"

Else

r2.Value = "B1 ist nicht leer" 'Wenn das nichts machen soll, den Else-Zweig einfach weglassen.

End If

End Sub


thommi12  05.08.2013, 00:07

Gerade lade ich die Excel-Testdatei von heute wieder und denke, ich wollte das noch einmal überprüfen wegen der Auswahl mit dem korrekten Worksheet, die ich in der Antwort geflissentlich ignoriert habe, und schon funktioniert nichts. Nicht einmal der Makrocode wird mehr aufgerufen. Mein Gott, bin ich eig. der Einzige, dem es immer so geht?

Also zunächst (hier zur Einfachheit): Im Excel-Menü Datei/Excel-Optionen/Sicherheitscenter/Einstellungen für das Sicherheitscenter: Einstellungen für Makros ändern auf: Alle Makros aktivieren, mit OK bestätigen. Danach muss aber Excel neu gestartet werden! Dann werden Makros auch ausgeführt, wenn die Datei neu geladen wird. Zuerst ging es wohl nur, weil ich alles selbst editiert und neu angelegt habe ...

Dann zur Worksheet-Auswahl (Da unten gibt es standardmäßig anfangs z.B. 3 Tabellen, Tabelle 1 bis 3, das sind die so genannten Worksheets). Mit dem Code in meiner Antwort oben wird das Makro natürlich in jeder Tabelle ausgeführt und schreibt das Ergebnis immer in die Zelle C1 der jeweils aktuellen Tabelle. Das ist sicherlich nicht gewünscht.

Deshalb sollte eine Änderung gemacht werden. Ich empfehle folgenden Umbau, der dazu den Vorteil hat, dass nach dem Laden der Datei die Zelle bereits korrekt initialisiert angezeigt wird:

Verlagerung des Codes im VBAProject-Projektfenster von DieseArbeitsmappe zu Tabelle1 und dort Verwendung des Ereignisses SelectionChange, das bereits bei einer Änderung der Selektion aufgerufen wird und damit auch automatisch zu Beginn einmal:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

[… Alten Code-Block von der Antwort oben hier einfügen ...]

End Sub

reicht hier nicht:

R6: =WENN(C6="";"";"Mach hier was rein")

oder muss der Inhalt von Zelle R6 physisch gelöscht werden?

Was soll in Zelle R6 stehen wenn in C6 deine WENN-Funktion <> "" ausgibt?

Soll sich dann der Text der vorher drin stand gemerkt werden oder reicht dir die irreversible Variante: sobald C6 einmalig "" ist dann lösche R6?