Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro: Nichtleere Zelle suchen und markieren

Makro: Nichtleere Zelle suchen und markieren
Daniel
Guten Tag
Ich möchte ein Makro ausführen können, dass folgendes macht:
In der Arbeitsmappe "Schüler B Startkarten" die Zelle B5 kontrollieren ob etwas drinsteht. Wenn etwas drinsteht, soll das Makro die 4 Zellen obendran,
die 1 Zelle links, die 3 Zellen rechts und die 13 Zellen untendran markieren. Und zwar nicht die einzelnen Zellen, sondern gleich das ganze Rechteck dieser Zellen.
Danach soll das Makro das ganze bei B24 wiederholen. Und bei B43 usw. also immer in 19er-Schritten.
Kann mir da jemand weiterhelfen?
Vielen Dank schon im voraus.
Anzeige
AW: Makro: Nichtleere Zelle suchen und markieren
18.02.2010 11:48:41
Oberschlumpf
Moin Daniel
Eine Bsp-Datei (genau so, wie sie auch bei dir aussieht) mit Bsp-Daten könnte sehr hilfreich sein.
Ciao
Thorsten
Markieren ? und dann was machen ?
18.02.2010 14:32:34
Renee
Hi Daniel,
...1 Zelle links, die 3 Zellen rechts und die 13 Zellen untendran markieren...
D.h. dann für B5 den Bereich A1:E18, für B24 den Bereich A20:E37 etc. markieren ?
Was bedeutet für Dich markieren ? Auswählen oder einfärben, also soll was mit diesem Bereich passieren ?
GreetZ Renée
Anzeige
AW: Makro: Nichtleere Zelle suchen und markieren
18.02.2010 11:49:03
Björn
Hallo,
Kann mir da jemand weiterhelfen?

Ja, ich kann Dir weiterhelfen, aber dazu muss ich wissen, was Du bisher schon hast.
Wie sieht denn dein Makro aus?
Wo hast Du Probleme?
Gruß
Björn B.
AW: Makro: Nichtleere Zelle suchen und markieren
22.02.2010 11:48:28
Daniel
Hallo
die Datei kann ich leider nicht hochladen, weil sie 1.1Mb gross ist.
Der Bereich soll markiert werden, so dass ich über "Markierung drucken" nur diese Zellen ausgedruckt bekomme.
Mir fehlt leider schon die Grundidee,wie ich die einzelnen Zellen abfragen kann, deshalb habe ich noch nichts geschrieben.
Ich steh momentan total auf der Leitung.
Anzeige
AW: Makro: Nichtleere Zelle suchen und markieren
22.02.2010 12:48:52
Renee
ah... den Bereich drucken!
Warum sagst du das nicht gleich ?, Daniel
Code in ein Modul:
Sub StartKartenDrucken()
Const cLngStep As Long = 19
Dim lngCnt As Long
With Worksheets("Schüler B Startkarten")
For lngCnt = 5 To .Cells(.Rows.Count, 2).End(xlUp).Row Step cLngStep
If .Cells(lngCnt, 2)  "" Then
.Range(.Cells(lngCnt - 4, 1), .Cells(lngCnt + 13, 5)).PrintOut
End If
Next lngCnt
End With
End Sub

GreetZ Renée
Anzeige
AW: Makro: Nichtleere Zelle suchen und markieren
22.02.2010 13:49:12
Daniel
Ja genau so! Super! Vielen vielen Dank.
Nur nach dem die richtigen Bereiche gedruckt wurden, werden endlos Bereiche gedruckt, die nichts in den Zellen enthalten.
Ich glaube ich weiss auch warum. In diesen Zellen sind Formeln drin. Geht das dann überhaupt, dass es die als leer erkennt?
Gruss
Daniel
Anzeige
Formeln ? Was für Formeln bitte! owT
22.02.2010 13:57:46
Renee

AW: Formeln ? Was für Formeln bitte! owT
22.02.2010 14:38:53
Daniel
Sorry!
=INDIREKT("'Schüler B Liste'!B2")
Die Schüler werden in separate Listen geleitet und von dort dann in den Bereich, den ich drucken möchte.
Warum mit INDIREKT?
22.02.2010 14:47:10
Björn
Hallo,
diese Formel ist völlig umständlich. Warum schreibst du die Verknüpfung nicht gleicht so:
=Schüler B Liste!B2
Zuwas hast Du hier das INDIREKT?
_________________________
Was ist denn in den Zellen mit Verknüpfung enthalten? Also was steht in "Schüler B Liste!B2"?
Wirklich nichts? Dann müsste die Prüfung von Renee auf "" funktionieren!
Kann es sein, dass dort z.B. ein Leerzeichen steht oder sonst was?
Gruß
Björn B.
Gruß
Björn B.
Anzeige
AW: Warum mit INDIREKT?
22.02.2010 15:46:02
Daniel
INDIREKT darum, weil von oben ständig neue Zeilen mit einem anderen Makro eingefügt werden.
Und da sonst der Fehler #Bezug erscheint.
Also da steht nur die Formel drin. Sonst nichts. Könnte das Endlos-Drucken denn eine andere Ursache haben?
AW: Warum mit INDIREKT?
22.02.2010 16:02:52
Renee
Hi Daniel,
Probier mal statt:
 If .Cells(lngCnt, 2)  "" Then

das hier
If Not(.Cells(lngCnt, 2) = "" Or .Cells(lngCnt,2) = 0)  Then
GreetZ Renée
Anzeige
AW: Warum mit INDIREKT?
22.02.2010 17:58:33
Daniel
Das geht leider auch nicht.
Da muss ich das Excel per Task- Manager schliessen, weil es nur noch drucken will.
In der Schüler Liste B2 stehen die Formeln mit denen die Daten selektiert werden.
=WENN(UND(Liste!$D:$D1998;Liste!$E:$E="M");Liste!A:A;" ")
Wie kann man auch...
22.02.2010 18:43:36
Renee
statt "" ein (unnötiges) Leerzeichen in die Zelle schreiben, Daniel ?
Also entweder brauchst du meinen Originalcode und änderst die Formel(n), wie es üblich ist, auf:
=WENN(UND(Liste!$D:$D1998;Liste!$E:$E="M");Liste!A:A;"")

oder du änderst die Zeile in meinem Orignalcode auf:
 If .Cells(lngCnt, 2)  " " Then
GreetZ Renée
Anzeige
Aha, wusste ich es doch...
23.02.2010 07:22:07
Björn
Hallo,
nur so nebenbei, ich habe gestern schon um 14:47h gefragt, was in der Zelle steht, weil ich schon vermutet habe, dass damit was nicht stimmt.
Wie Renee schon geschrieben hat, das Leerzeichen kannst Du Dir sparen. Das Leerzeichen ist wie der Name schon sagt ein leeres Zeichen und damit ist es definitiv ein Zeichen!
Bei der Abfrage, ob in der Zelle was drin steht, muss logischerweise als Antwort JA bzw. WAHR kommen!
Nur weil Du es nicht siehst, heißt es ja nicht, dass es nicht da ist... sonst würde ja auch weiße Schrift auf weißem Hintergrund "leer" bedeuten (war jetzt bewusst übertrieben...). ;-)
Gruß
Björn B.
Anzeige
Das war nicht meine Frage...
22.02.2010 16:05:45
Björn
Hallo,
ich will wissen:
Also was steht in "Schüler B Liste!B2"?

Das war die Frage.
Gruß
Björn B.
;
Anzeige
Anzeige

Infobox / Tutorial

Makro zur Suche und Markierung nicht leerer Zellen in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das nicht leere Zellen in deiner Excel-Arbeitsmappe "Schüler B Startkarten" sucht und markiert, gehe wie folgt vor:

  1. Öffne Excel und lade die Arbeitsmappe "Schüler B Startkarten".

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11.
  3. Füge ein neues Modul hinzu:

    • Klicke im Menü auf "Einfügen" und wähle "Modul".
  4. Kopiere den folgenden Code in das Modul:

    Sub StartKartenDrucken()
       Const cLngStep As Long = 19
       Dim lngCnt As Long
       With Worksheets("Schüler B Startkarten")
           For lngCnt = 5 To .Cells(.Rows.Count, 2).End(xlUp).Row Step cLngStep
               If Not (.Cells(lngCnt, 2) = "" Or .Cells(lngCnt, 2) = 0) Then
                   .Range(.Cells(lngCnt - 4, 1), .Cells(lngCnt + 13, 5)).PrintOut
               End If
           Next lngCnt
       End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle StartKartenDrucken und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Problem: Endloses Drucken, auch wenn Zellen leer erscheinen.

    • Lösung: Überprüfe, ob die Zellen Formeln enthalten, die möglicherweise Leerzeichen zurückgeben. Ändere die Abfrage im Code zu:
      If Not (.Cells(lngCnt, 2) = "" Or .Cells(lngCnt, 2) = " ") Then
  • Problem: Fehlermeldung beim Drucken.

    • Lösung: Stelle sicher, dass der Drucker korrekt konfiguriert ist und dass keine anderen Druckaufträge ausstehen.

Alternative Methoden

Eine alternative Methode, um die nicht leeren Zellen zu markieren, könnte die Verwendung von bedingten Formatierungen sein. Du kannst Regeln erstellen, die bestimmte Zellen einfärben, basierend auf ihrem Inhalt. So kannst du visuell erkennen, welche Zellen du drucken möchtest, ohne ein Makro verwenden zu müssen.


Praktische Beispiele

Angenommen, in deiner Tabelle sind die Zellen B5, B24 und B43 relevant. Mit dem oben genannten Makro werden die Bereiche A1:E18, A20:E37 usw. für die nicht leeren Zellen automatisch gedruckt.

Wenn du die Bereiche zuerst farblich markieren möchtest, kannst du den Code anpassen, indem du statt PrintOut eine Formatierungsanweisung hinzufügst, wie zum Beispiel:

.Range(.Cells(lngCnt - 4, 1), .Cells(lngCnt + 13, 5)).Interior.Color = RGB(255, 255, 0) ' Gelb

Tipps für Profis

  • Verwende Variablen: Um den Code flexibler zu gestalten, könntest du Variablen für die Zeilen- und Spaltenanzahlen einführen.
  • Debugging: Nutze Debug.Print innerhalb der Schleife, um die Werte der Zellen während der Ausführung zu überprüfen.
  • Code optimieren: Reduziere die Anzahl der Aufrufe an Excel-Objekte, indem du die Werte in ein Array lädst, bevor du sie bearbeitest.

FAQ: Häufige Fragen

1. Warum erkennt das Makro leere Zellen nicht?
Das Makro erkennt leere Zellen möglicherweise nicht, wenn diese Formeln oder unsichtbare Zeichen enthalten. Überprüfe die Zellinhalte sorgfältig.

2. Wie kann ich das Makro anpassen, um andere Bereiche zu drucken?
Du kannst die Werte in den Cells-Methoden anpassen, um andere Bereiche gemäß deinen Anforderungen zu drucken.

3. Funktioniert dieses Makro in allen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten Excel-Versionen funktionieren, solange die grundlegenden VBA-Funktionen unterstützt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige