Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen unterhalb markierter zelle markieren

Zellen unterhalb markierter zelle markieren
13.12.2016 16:40:39
Erik
Hallo zusammen !
Habe folgenden VBA Code, der etwas erweitert werden müßte.
Vielleicht kann mir dabei jemand helfen.
Es wird die Zelle Menge gesucht und markiert.
Allerdings sollen alle Zellen unterhalb der (Zelle Menge) markiert werden die befüllt sind.
Das ist immer unterschiedlich.
Kann mir jemand helfen.
Vielen Dank
Gruß
Erik
hier der benutzte Code:
Sub test()
Dim c As Range
Dim firstAddress
Dim str
Dim Bereich As Range
Dim start As Double
str = "Menge"
With Worksheets("Page 1").Cells
Set c = .Find(str, LookIn:=xlValues)
If c Like str Then Set Bereich = c
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set c = .FindNext(c)
If c Like str Then Set Bereich = Union(c, Bereich)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
Bereich.Select
Debug.Print Timer - start
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen unterhalb markierter zelle markieren
13.12.2016 17:04:29
Michael
Hi,
zunächst mal der Timer: start wird nicht zugewiesen, ist nach dem Dim also 0.0; timer ist außerdem ein single, kein double.
Also:
Dim start As Single
start = Timer

sonst wird nur der aktuelle Timer-Wert ausgegeben, nicht die Differenz.
Die Zeile If c Like str Then Set Bereich = c ist etwas seltsam: ob .find ganze oder Teilbegriffe finden soll, läßt sich als Parameter mit einstellen, nach dem lookin dann noch: LookAt:=xlPart oder xlWhole. Von der Logik her fehlt hier noch ein "Else": was soll denn passieren, wenn das c Like str nicht zutrifft? Wenn überhaupt, dann gehört diese Zeile unter das if not c is nothing, sonst bricht das Makro ab, falls gar kein Treffer vorhanden ist.
Die eigentliche Frage ist etwas unklar, ohne die Tabelle zu kennen. Handelt es sich um mehrfach vorkommende Spaltenüberschriften?
Schöne Grüße,
Michael
P.S.: Versuch mal das hier:
Option Explicit
Sub test()
Dim c As Range, d As Range
Dim firstAddress
Dim str
Dim Bereich As Range
Dim start As Single
start = Timer
str = "Menge"
With Worksheets("Page 1").Cells
Set c = .Find(str, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
' Set Bereich = Range(c, c.End(xlDown))
' oder ist eher das erwünscht?
Set Bereich = Range(c.Offset(1), c.End(xlDown))
firstAddress = c.Address
Do
Set c = .FindNext(c)
' Set Bereich = Union(Range(c, c.End(xlDown)), Bereich)
' oder das?
Set Bereich = Union(Range(c.Offset(1), c.End(xlDown)), Bereich)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
If Not Bereich Is Nothing Then Bereich.Select Else MsgBox "nicht gefunden"
Debug.Print Timer - start
End Sub

Anzeige
AW: Zellen unterhalb markierter zelle markieren
13.12.2016 17:13:38
Erik
Hallo Michael,
"P.S.: Versuch mal das hier:"
hat prima geklappt.
Vielen Dank
Du bist der Beste !
Hast mir schon öfters geholfen.
Denke das wars jetzt mit meiner Tabelle.
Müßte fertig sein ;-)
Gruß
und frohes Fest
Erik
halt, Vorsicht...
13.12.2016 21:20:47
Michael
Hallo Erik,
das Makro hat zwei Fallstricke:
a) wenn unter der Überschrift nichts steht, wird der Bereich bis zur letzten Zeile markiert (bißchen viel) und
b) es wird nur bis zur nächsten, leeren Zelle markiert, d.h. wenn "Löcher" in den Daten sind, wird's auch kritisch.
Sollte einer der beiden Fälle vorkommen können, müßte man im Detail noch was ändern - ggf. auf Zuruf; Du kennst Deine Daten besser als ich.
Melde Dich halt bei Bedarf.
Ansonsten auch die besten Wünsche & Grüße,
Michael
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen unterhalb einer markierten Zelle in Excel markieren


Schritt-für-Schritt-Anleitung

Um in Excel alle Zellen unterhalb einer markierten Zelle zu markieren, kannst du den folgenden VBA-Code verwenden. Dieser Code sucht nach der Zelle mit dem Inhalt "Menge" und markiert alle befüllten Zellen darunter:

Option Explicit
Sub markiereZellenUnterhalb()
    Dim c As Range, Bereich As Range
    Dim firstAddress As String
    Dim str As String
    Dim start As Single
    start = Timer
    str = "Menge"

    With Worksheets("Page 1").Cells
        Set c = .Find(str, LookIn:=xlValues, lookat:=xlPart)
        If Not c Is Nothing Then
            Set Bereich = Range(c.Offset(1), c.End(xlDown))
            firstAddress = c.Address
            Do
                Set c = .FindNext(c)
                If Not c Is Nothing Then
                    Set Bereich = Union(Range(c.Offset(1), c.End(xlDown)), Bereich)
                End If
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With

    If Not Bereich Is Nothing Then Bereich.Select Else MsgBox "Nicht gefunden"
    Debug.Print Timer - start
End Sub

Dieser Code sorgt dafür, dass alle Zellen unterhalb der markierten Zelle "Menge" in Excel markiert werden. Achte darauf, dass sich deine Daten im Arbeitsblatt "Page 1" befinden.


Häufige Fehler und Lösungen

  • Fehler: Bereich wird nicht korrekt markiert
    Lösung: Stelle sicher, dass der gesuchte Begriff ("Menge") in der Tabelle vorhanden ist und dass du die richtige Methode zum Suchen verwendest (z. B. lookat:=xlPart).

  • Fehler: Makro läuft ohne Ergebnis
    Lösung: Überprüfe, ob sich unter der Überschrift befüllte Zellen befinden. Wenn keine Daten vorhanden sind, wird der Bereich bis zur letzten Zeile markiert, was möglicherweise nicht gewünscht ist.


Alternative Methoden

  1. Manuelle Auswahl: Du kannst die Zelle "Menge" manuell auswählen und dann die Shift-Taste gedrückt halten, während du die Pfeiltaste nach unten drückst, um alle Zellen darunter auszuwählen.

  2. Tastenkombinationen: Nutze die Kombination Strg + Shift + Pfeil nach unten, um alle befüllten Zellen unterhalb der aktiven Zelle schnell zu markieren.


Praktische Beispiele

Angenommen, du hast eine Excel-Tabelle mit Verkaufsdaten und möchtest alle Verkaufszahlen unter der Überschrift "Menge" markieren. Mit dem obigen VBA-Code kannst du dies automatisiert erreichen, sodass du Zeit sparst und Fehler vermeidest.

Ein weiteres Beispiel wäre, wenn du mehrere Spalten mit ähnlichen Überschriften hast. Der Code wird alle Zellen unter jeder Instanz der Überschrift "Menge" markieren.


Tipps für Profis

  • Verwende Option Explicit am Anfang deiner VBA-Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies verhindert Laufzeitfehler und macht deinen Code robuster.

  • Teste deinen Code in einer Kopie deiner Excel-Datei, um sicherzustellen, dass alles wie gewünscht funktioniert, bevor du ihn in wichtigen Arbeitsblättern anwendest.

  • Berücksichtige, dass leere Zellen in den Daten die Markierung beeinflussen können. Überlege, ob du das Skript so anpassen möchtest, dass es auch mit "Löchern" in den Daten umgehen kann.


FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um andere Zellen zu suchen?
Du kannst den Wert der Variable str im Code ändern. Ersetze "Menge" durch den gewünschten Suchbegriff.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der VBA-Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige