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

Forumthread: per VBA bestimmten Zell-Bereich markieren

per VBA bestimmten Zell-Bereich markieren
09.06.2005 13:03:33
Floh
Hi,
suche nach einer Lösung für folgendes Problem:
In einer Excel-Liste muss ich in allen Zellen z.B. nach "Hase" suchen. Irgendwo weiter unten steht der Begriff "Hase" noch mehrmals. Nun muss der Bereich (alle Spalten und alle Zeilen) bis zu diesem 2."Hase" markiert werden und es müssen Bereichsmarken gesetzt werden, so dass man für die weiteren Bearbeitungen den Bereich abfragen kann. Ist das alles für den 1.Bereich abgeschlossen, muss der Bereich ab dem 2."Hase" bis zum nächsten "Hase" gesetzt werden u.s.w.
Ist das lösber?
Danke Gruß Floh
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
per VBA bestimmten Zell-Bereich markieren
09.06.2005 14:27:39
Floh
Hallo Fritz,
danke für die schnelle Antwort. Im Grunde genommen, ist es schon so wie ich es möchte. Aber leider kommt immer ein Fehler. An der Stelle, wo der Bereich zugewiesen wird, geht das macro ins debugging.
Set Bereich = Range(Erster, Zweiter)
Dort kommt der Fehler "Laufzeitfehler:1004" Die Methode für das Objekt '_Global' ist fehlgeschlagen
Was mache ich falsch?
Gruß Floh
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 17:32:26
EffHa
Hallo Floh,
merkwürdig, wenn ich die Datei aus dem Formum starte, bekomme ich auch diesen Fehler.
Wenn ich sie runterlade, dann öffne und starte, klappts
Gruß
Fritz
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 17:44:28
Floh
Hallo Fritz,
habe mittlerweile die Lösung zum suchen gefunden und habe auch Variablen, in denen die Adresse der Zelle steht. Vielleicht kannst Du mir helfen, dass ich aus z.B. C2 nur die Zeile herauslese und dann die Zeile von. z.B. F174 und dann die Reie von 2 bis 172 markiere und kopiere.
Vielen Dank.
Gruß Floh
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 17:53:12
EffHa
Das verstehe ich nicht.
vielleicht eine kleine beispieldatei?
Gruß
Fritz
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 19:31:53
Floh
Hallo Fritz,
das mit der Beispieldatei ist nicht so einfach, weil das Macro ja noch nicht fertig ist. Ich habe es geschafft, in einer Tabelle nach einem Wort zu suchen. Dort wo das Wort steht, habe ich mir in einer Variable die Adresse gemerkt - z.B. C2
Dann habe ich wieder nach dem gleichen Wort gesucht und auch weiter unten in der Tabelle gefunden und auch diese Adresse der Zelle in einer 2.Variable gemerkt - z.B. G172
Nun muss ich von der Zeile des ersten Findens bis zur Zeile des 2.Findens die Zeilen wissen und als If-Anweisung in weiteren Abfragen behandeln. Somit muss ich aus den gefundenen Adressen die Zeilennummer herauslesen.
Beispiel: 1.gefundene Zelle C2 - Spalte C, Zeile 2
2.gefundene Zelle G172 - Spalte G, Zeile 172
Ich benötige dann Zeile2 und Zeile172 , um in diesem Bereich weitere Abfragen zu machen.
Ich hoffe, man kann mein Problem nun verstehen. Danke
Gruß Floh
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 20:54:27
Ralf
Hallo Floh,
in dem Makro, dass dir Fritz gemacht hat, hast du doch mit den Variablen "Erster" und "Zweiter" schon die Zeilennummern like "$A$1". Wenn du nur die Zahl haben willst, dann füge mal folgende zwei Zeilen ans Ende des Makros von Fritz ein:
MsgBox Selection.Row 'erste Zeile
MsgBox Selection.Rows.Count + Selection.Row - 1 'letzte Zeile
Gruß
Ralf
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
10.06.2005 08:10:31
Floh
Hallo an alle, die mir geholfen haben,
vielen Dank, es funktioniert jetzt.
Viel Erfolg weiterhin noch.
Gruß Floh
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 17:41:51
EffHa
Hallo Floh,
merkwürdig, wenn ich die Datei aus dem Formum starte, bekomme ich auch diesen Fehler.
Wenn ich sie runterlade, dann öffne und starte, klappts
Gruß
Fritz
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 13:43:36
IngGi
Hallo Floh,
das folgende Makro durchsucht das aktive Tabellenblatt nach "Hase" und liest alle gefundenen Zellen in das Datenfeld rng(). Damit kannst du dann den Bereich zwischen zwei Hasen markieren, z.B. mit "Range(rng(1), rng(2)).Select" für den Bereich zwischen dem 1. und dem 2. Hasen.

Sub Hasenjagd()
Dim rng() As Range
Dim i As Integer
i = 1
Set rng(i) = ActiveSheet.Cells.Find(what:="Hase")
Do
i = i + 1
ReDim Preserve rng(i)
Set rng(i) = ActiveSheet.Cells.FindNext
If rng(i) Is Nothing Then
ReDim Preserve rng(i - 1)
Exit Do
End If
Loop
End Sub

Gruß Ingolf
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 14:38:09
Floh
Danke für die Lösung.
Leider kommt bei Set rng(i) ein laufzeitfehler 9 : Index ausserhalb des gültigen bereichs. Woran könnte das liegen?
Gruß Floh
AW: per VBA bestimmten Zell-Bereich markieren
09.06.2005 22:53:39
IngGi
Hallo Floh,
falls du nicht schon anderweitig fündig geworden bist, ich hab' den Fehler gefunden. Setze nach der Zeile "i = 1" die Zeile "ReDim rng(1)". So sollte es gehen.
Gruß Ingolf
Anzeige
AW: per VBA bestimmten Zell-Bereich markieren
10.06.2005 07:47:58
Floh
Hallo Ingolf,
habe letzte Nacht das Problem behoben. Vielen Dank nochmal für die Hilfe.
Gruß Floh
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zell-Bereich mit VBA in Excel markieren


Schritt-für-Schritt-Anleitung

Um einen bestimmten Zell-Bereich in Excel per VBA zu markieren, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden Code ein:

    Sub Hasenjagd()
       Dim rng() As Range
       Dim i As Integer
       i = 1
       ReDim rng(1) ' Initialisiere das Array
       Set rng(i) = ActiveSheet.Cells.Find(what:="Hase")
       Do
           i = i + 1
           ReDim Preserve rng(i)
           Set rng(i) = ActiveSheet.Cells.FindNext(rng(i - 1))
           If rng(i) Is Nothing Then
               ReDim Preserve rng(i - 1)
               Exit Do
           End If
       Loop
       ' Markiere den Bereich zwischen dem ersten und zweiten Fund
       If UBound(rng) > 1 Then
           Range(rng(1), rng(2)).Select
       End If
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und kehre zu Excel zurück.
    • Drücke ALT + F8, wähle das Makro Hasenjagd aus und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Wenn du diesen Fehler beim Zuweisen des Bereichs erhältst, stelle sicher, dass die Zellen existieren und du die Adresse korrekt angibst. Überprüfe die Variablen Erster und Zweiter.

  • Laufzeitfehler 9 (Index außerhalb des gültigen Bereichs): Dieser Fehler tritt auf, wenn du versuchst, auf ein Element eines Arrays zuzugreifen, das nicht existiert. Achte darauf, dass du das Array mit ReDim korrekt initialisierst.


Alternative Methoden

Eine weitere Möglichkeit, um einen Zellbereich zu markieren, besteht darin, die Find-Methode direkt in einer Schleife zu verwenden, um die Zellen zu finden und den Bereich zu markieren:

Sub BereichMarkieren()
    Dim ersteZelle As Range
    Dim zweiteZelle As Range
    Set ersteZelle = Cells.Find(What:="Hase")
    If Not ersteZelle Is Nothing Then
        Set zweiteZelle = Cells.FindNext(ersteZelle)
        If Not zweiteZelle Is Nothing Then
            Range(ersteZelle, zweiteZelle).Select
        End If
    End If
End Sub

Praktische Beispiele

Ein praktisches Beispiel könnte sein, dass du in einer Tabelle den Begriff "Hase" in Spalte A suchst und alles von der ersten bis zur zweiten Fundstelle markieren möchtest. Die oben genannten Codes ermöglichen es dir, das zu tun.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft dir, Fehler frühzeitig zu erkennen.
  • Experimentiere mit der Find-Methode, um auch mit Wildcards oder anderen Suchparametern zu arbeiten, um flexiblere Suchen zu ermöglichen.

FAQ: Häufige Fragen

1. Wie kann ich einen Bereich zwischen mehreren Funden markieren? Du kannst die FindNext-Methode in einer Schleife verwenden, um alle Fundstellen in einem Array zu speichern und dann den gewünschten Bereich zu markieren.

2. Was tun, wenn das Makro nicht funktioniert? Überprüfe die Suchkriterien und stelle sicher, dass die gesuchten Werte in der Tabelle vorhanden sind. Du kannst auch die Variablen überprüfen, um sicherzustellen, dass sie korrekt gesetzt wurden.

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