juckie
Goto Top

VBA - Welchen Inhalt hat eine Zelle die mit der Taste Enft geleert wird?

Hallo an alle,

ich habe eine Excel Tabelle, bei der u. a. Zellen weiß eingefärbt werden, sobald ein Wert eingetragen wurde und die Zelle grau eingefärbt wird, wenn kein Wert eingetragen wurde. Das klappt mit VBA soweit auch ganz gut (fast). Merkt man nun, dass der Wert, den man eingegeben hat in der falschen Zelle ist und man die Zelle dann mit der Taste Entf "leert" klappt das mit der Färbung nicht mer und ich bekomme eine "Typen Unverträglich" Fehlermeldung.

Daher die Frage: Welchen Zellinhalt hat die Zelle, wenn diese mit Entf geleert wurde?

Überprüfung auf "" --> bekomme ich die besagte Fehlermeldung
Überprüfung auf IsEmpty --> liefert false zurück
Überprüfung auf isNullString --> liefert false zurück

Kann mir jemand weiterhelfen?

Vielen Dank

Gruß

Juckie

Content-ID: 332219

Url: https://administrator.de/forum/vba-welchen-inhalt-hat-eine-zelle-die-mit-der-taste-enft-geleert-wird-332219.html

Ausgedruckt am: 22.12.2024 um 20:12 Uhr

132692
132692 15.03.2017 aktualisiert um 16:13:18 Uhr
Goto Top
Dann hast du nicht beachtet das "target" nicht nur eine Zelle sondern ein Array aus Zellen sein kann wenn der User mehrere Zellen markiert und dann entf drückt!
http://www.vbforums.com/showthread.php?504565-Excel-Cell-Deleted-event
Also spreche jede Zelle der Markierung an
for each cell in Target.cells
    ' cell.Value  
Next
oder sprech die erste Zelle direkt mit Index an
target.Cells(1).Value
p.
emeriks
emeriks 15.03.2017 um 18:43:42 Uhr
Goto Top
Hi,
vielleicht solltest Du mal die betreffenden Code-Zeilen hier posten, damit man etwas dazu schreiben kann.

E.
emeriks
emeriks 15.03.2017, aktualisiert am 16.03.2017 um 14:20:43 Uhr
Goto Top
Im Modul der betreffenden Tabelle

Private Sub Worksheet_Change(ByVal Target As Range)
  If Trim(Target.Text) = "" Then  
    'Zelle wurde geleert  
    With Target.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = vbRed
    End With
  Else
    With Target.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = vbWhite
    End With
  End If
End Sub

Das funktioniert auch, wenn mehrerer Zellen gleichzeitig markiert und geleert werden.