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

Forumthread: per Makro markierten Bereich auslesen

per Makro markierten Bereich auslesen
30.06.2008 09:40:10
Oliver
Hallo allerseits,
ich habe einen bestimmten Bereich in einer Excel-Tabelle markiert. Zusätzlich gibt es ein Command-Button, der Einträge in diesen markierten Bereich vornimmt. Wenn aber in diesem Bereich ein bestimmter Wert steht (z.B. "Genehmigt"), so soll dieser nicht überschrieben werden.
Hier mein bisheriger Code für den Command-Button:

Private Sub CommandButton1_Click()
' Test
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
Selection.Formula = "Antrag"
End With
End Sub


Wie kann ich aus dieser AUswahl "Selection.Interior" die Felder ausgrenzen, in denen "Genehmigt" steht.
Es würde auch vollkommen ausreichen, dass eine Fehlermeldung erscheint, falls in einer der ausgewählten Zellen "genehmigt" steht. Etwa in dieser Art:
MsgBox "Mindestens ein Feld ist bereits genehmigt - eine weitere Bearbeitung ist nicht möglich", vbCritical, "Achtung:"
Über einen Vorschlag würde ich mich sehr freuen.
Viele Grüße
Oliver

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: per Makro markierten Bereich auslesen
30.06.2008 10:02:32
Mathias
Hallo,
wie wär´s damit:
Dim cell As Range
For Each cell In Selection
If cell.value "Genehmigt" Then
' [... dein Code ...]
End If
Next cell
Viele Grüße
Mathias
http://www.teamplaner.net

AW: per Makro markierten Bereich auslesen
30.06.2008 10:25:00
Oliver
Vielen Dank für deine rasche Antwort, Mathias.
Ich hab's auch gleich ausprobiert. Es funktioniert teilweise: Wenn nur eine Zelle mit dem Inhalt "genehmigt" ausgewählt wird. Sind mehrere Zellen markiert, so werden auch diese Zellen überschrieben.

Anzeige
AW: per Makro markierten Bereich auslesen
30.06.2008 10:27:53
Matthias
Hallo Oliver,
du musst natürlich in deinem Code "Selection" durch "Cell" ersetzen.
Gruß Matthias

AW: per Makro markierten Bereich auslesen
30.06.2008 10:58:00
Oliver
Hallo Mathias,
vielen Dank nochmals........ ich zieh jetzt gleich die Schandmaske auf .... ich kenne den genauen Syntax nämlich nicht.
Bei einer einzigen Zelle funktioniert's. Bei mehreren Zellen wird richtigerweise der Color.Index und Pattern ignoriert, die Zelle aber mit "Antrag" überschrieben.
Bei mir steht nun:
Dim cell As Range
For Each cell In Selection
If cell.Value "genehmigt" Then
With cell.Interior
.ColorIndex = 4
.Pattern = xlSolid
Selection.Formula = "Antrag"
End With
End If
Next cell

Anzeige
AW: per Makro markierten Bereich auslesen
30.06.2008 11:01:47
Matthias
Hallo Oliver,
statt Selection.Formula = "Antrag" einfach
Cell = "Antrag"
(oder von mir aus auch Cells.Formula = "Antrag")
Gruß Matthias

nicht Cells.Formula sondern Cell.Formula - o.T.
30.06.2008 11:05:45
Matthias
-

Danke!!!!
30.06.2008 11:07:47
Oliver
Vielen Dank Mathias. Das wars - alles funktioniert wie gewünscht :-)))))
ich kannte den Syntax nicht.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Markierten Bereich in Excel mit VBA auslesen und modifizieren


Schritt-für-Schritt-Anleitung

Um einen markierten Bereich in Excel auszulesen und dabei bestimmte Werte zu berücksichtigen, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft, ob der Wert in den ausgewählten Zellen "Genehmigt" ist und führt nur dann eine Änderung durch, wenn dies nicht der Fall ist.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge einen neuen Modul hinzu, indem du rechtsklickst auf "VBAProject (deine Datei)" und "Einfügen" > "Modul" wählst.
  3. Kopiere den folgenden Code in das Modul:
Private Sub CommandButton1_Click()
    Dim cell As Range
    For Each cell In Selection
        If cell.Value <> "Genehmigt" Then
            With cell.Interior
                .ColorIndex = 4
                .Pattern = xlSolid
            End With
            cell.Value = "Antrag"
        Else
            MsgBox "Mindestens ein Feld ist bereits genehmigt - eine weitere Bearbeitung ist nicht möglich", vbCritical, "Achtung:"
        End If
    Next cell
End Sub
  1. Schließe den VBA-Editor und kehre zurück zu deiner Excel-Tabelle.
  2. Markiere den gewünschten Bereich und klicke auf den Command-Button, um den Code auszuführen.

Häufige Fehler und Lösungen

  • Problem: Der Code überschreibt Zellen mit "Genehmigt".

    • Lösung: Stelle sicher, dass du die Bedingung im If-Statement korrekt schreibst: If cell.Value <> "Genehmigt" Then.
  • Problem: Fehlermeldung erscheint nicht.

    • Lösung: Überprüfe, ob der Text "Genehmigt" exakt übereinstimmt (Groß-/Kleinschreibung beachten).

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion "Suchen und Ersetzen" in Excel nutzen, um Werte in einem markierten Bereich zu ersetzen. Dabei kannst du die Funktion "Suchen und Ersetzen in markiertem Bereich" verwenden, um gezielt nur die markierten Zellen zu bearbeiten.

  1. Markiere den gewünschten Bereich.
  2. Drücke STRG + H, um das Suchen-und-Ersetzen-Fenster zu öffnen.
  3. Gib den zu ersetzenden Wert ein und den neuen Wert, den du einsetzen möchtest.
  4. Klicke auf „Alle ersetzen“ oder „Ersetzen“, um die Änderungen vorzunehmen.

Praktische Beispiele

Ein häufiges Szenario ist das Ersetzen von Werten in einem markierten Bereich. Angenommen, du möchtest alle "Offen"-Einträge in "Genehmigt" umwandeln, dann könntest du den folgenden Code verwenden:

Private Sub CommandButton1_Click()
    Dim cell As Range
    For Each cell In Selection
        If cell.Value = "Offen" Then
            cell.Value = "Genehmigt"
        End If
    Next cell
End Sub

Dieses Beispiel zeigt, wie du den markierten Bereich durchsuchst und gezielt Werte ersetzt.


Tipps für Profis

  • Nutze Application.EnableEvents = False, um das Auslösen von anderen Makros zu verhindern während der Ausführung deines Codes.
  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Verarbeitung zu deaktivieren, was die Performance verbessert.
  • Schreibe Kommentare in deinen Code, um die Lesbarkeit und Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich einen bestimmten Wert in einem markierten Bereich finden? Du kannst If cell.Value = "deinWert" Then verwenden, um nach einem bestimmten Wert zu suchen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der VBA-Code sollte in allen gängigen Excel-Versionen (ab 2007) funktionieren.

3. Kann ich den Code anpassen, um mehrere Werte zu überprüfen? Ja, du kannst zusätzliche If-Bedingungen einfügen oder eine Select Case-Anweisung verwenden, um mehrere Werte zu überprüfen.

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