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-Key: 332219

Url: https://administrator.de/contentid/332219

Printed on: April 26, 2024 at 16:04 o'clock

Mitglied: 132692
132692 Mar 15, 2017 updated at 15:13:18 (UTC)
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.
Member: emeriks
emeriks Mar 15, 2017 at 17:43:42 (UTC)
Goto Top
Hi,
vielleicht solltest Du mal die betreffenden Code-Zeilen hier posten, damit man etwas dazu schreiben kann.

E.
Member: emeriks
emeriks Mar 15, 2017, updated at Mar 16, 2017 at 13:20:43 (UTC)
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.