Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelle markieren: leer oder Text

Zelle markieren: leer oder Text
22.12.2013 18:38:17
Burghard
Hallo,
ich möchte Zellen per VBA markieren lassen, die entweder leer sind oder Text beinhalten. Mein Makro ist leider fehlerhaft:
Sub markieren()
On Error GoTo ERRmsg
With ActiveSheet.Columns("C:C").SpecialCells(xlCellTypeBlanks)
.Value = "" Or .Value = IsnotNumeric
.Interior.ColorIndex = 4
End With
Exit Sub
ERRmsg:
MsgBox "keine Leerzellen in Spalte C vorhanden"
End Sub
Hilfe/Lösung wäre nett.
Schönen Gruß
Burghard

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
'.Value = "" Or .Value = IsnotNumeric' ist ...
22.12.2013 18:50:05
Luc:-?
…schlicht unsinnig, Burghard,
da eine leere Zelle nicht nochmals geleert und schon gar nicht IsnotNumeric gesetzt wdn muss, was eine Variable wäre, die aber bei dir hier gar nicht zu existieren scheint. Ohne diese Zeile würden alle LeerZellen die Farbe lt Index 4 erhalten. Textenthaltende Zellen wdn so aber weder ermittelt noch gefärbt.
Gruß Luc :-?
Besser informiert mit …

Lösung und ähnliches Vorgehen mit Zeilenlöschung
22.12.2013 21:27:39
Burghard
Hallo Luc,
hab mich wohl nicht richtig ausgedrückt. Sorry! Anfängerfehler. Ich konnte jetzt die Lösung herausfinden:
Public Sub Leer_und_Text_markieren()
Dim zelle As Range
Intersect(ActiveSheet.UsedRange, Columns("C")).Select
For Each zelle In Selection
If IsEmpty(zelle.Value) Or Not IsNumeric(zelle.Value) Then
zelle.Interior.ColorIndex = 4
End If
Next zelle
End Sub
Ich suche aber noch eine Lösung für das Löschen der jeweiligen Zeile, wenn eine Zelle in Spalte C leer ist oder Text enthält. Statt "zelle.Interior.ColorIndex = 4" müsste dann stehen "Rows.Delete Shift:=xlUp". Das funktioniert aber nicht. "Rows.Delete Shift:=xlUp" löscht alle Zeilen und nicht nur die entsprechende Zeile, wenn die beiden Bedingungen für die Zelle in Spalte C zutrifft.
Hilfe/Lösung wäre nett.
Schönen Gruß
Burghard

Anzeige
SpecialCells(xlCellTypeBlanks) ist immer leer
22.12.2013 18:55:39
Matthias
Hallo
Was sagt Dir denn die Hilfe zu SpecialCells ?
xlCellTypeBlanks = Leere Zellen


Was willst Du also damit erreichen?
.Value = "" Or .Value = IsnotNumeric
mit IsnotNumeric meinst Du dann sicher auch If Not IsNumeric
und was soll .Value = ""?
SpecialCells(xlCellTypeBlanks) ist immer leer, deshalb heißt es ja auch so ;-)
Gruß Matthias

AW: Lösung
22.12.2013 21:30:15
Burghard
Hallo Matthias,
ich habe mich wohl nicht richtig ausgedrückt. Sorry! Anfängerfehler. Ich konnte jetzt die Lösung finden:
Public Sub Leer_und_Text_markieren()
Dim zelle As Range
Intersect(ActiveSheet.UsedRange, Columns("C")).Select
For Each zelle In Selection
If IsEmpty(zelle.Value) Or Not IsNumeric(zelle.Value) Then
zelle.Interior.ColorIndex = 4
End If
Next zelle
End Sub
Danke für Deine Hinweise!
Schönen Gruß
Burghard

Anzeige
lass die Schleife rückwärts laufen ...
22.12.2013 23:20:07
Matthias
Hallo
Auch das Selection ist nicht nötig
Intersect(ActiveSheet.UsedRange, Columns("C")).Select
For Each zelle In Selection

Lies dazu bitte im Archiv


Warum schreibst Du denn nicht gleich das Du Zeilen die bestimmte Markmale in Spalte(3) erfüllen, löschen willst?
Du hattest geschrieben Du willst markieren und Hintergrund einfärben.
Warum schreibst Du denn nicht gleich was Du wirklich willst?
Wenn Du Zeilen löschen willst die entweder in Spalte(3) leer sind oder keine Zahl beinhalten, empfehle ich Dir die Schleife von unten nach oben laufen zu lassen.
For Each zelle In '... 

startet aber von oben nach unten.
Das macht einen feinen Unterschied.
Suche also mal im Archiv nach letzte benutzte Zelle in Spalte
Die Zeile der letzten benutzten Zelle in Spalte schreibst Du in eine Variable z.B. LoLetzte
Nun stellst Du die Schleife so auf:

For i = LoLetzte to 1 Step -1
'hier löschst Du nun (bei Deinen Bedingungen) die entsprechende Zeile
Next
Und die Variablen immer schön deklarieren.
Gruß Matthias

Anzeige
AW: Danke!
23.12.2013 11:38:40
Burghard
Hallo Matthias,
vielen Dank für die vielen Infos und die Hilfestellungen. Da fummle ich mich in den nächsten Tagen mal durch. Denke, dass ich die Sache dann hinkriege.
Erholsame Weihnachtstage und ein gutes neues Jahr!
Grüße Burghard

Danke für die Rückmeldung ...
23.12.2013 12:02:33
Matthias
Hallo
Danke.
Auch Dir wünsche ich erholsame Weihnachtstage und ein gutes neues Jahr!
... und wenns nicht ganz klappt, einfach wieder nachfragen ;-)
Gruß Matthias

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige