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

VBA: Probleme mit Selection.Address

Forumthread: VBA: Probleme mit Selection.Address

VBA: Probleme mit Selection.Address
17.11.2004 14:31:19
Heiko
Hallo Leute,
ich möchte ein Makro schreiben das in markierten Bereichen bestimmte Wertveränderungen ausführt. (Siehe unten z.B. Eins hochzählen)
Dieser Quellcode tut das. Aber leider auch dann, wenn ich das Arbeitsblatt verlassen habe wieder aufrufe und für mich kein Bereich ersichtlich mehr markiert ist. (Der Bereich ist nicht mehr farblich markiert.)
Zellen = ActiveWindow.Selection.Address
MsgBox Zellen
For Each Wert In Range(Zellen)
Wert.Value = Wert.Value + 1
Next Wert
End Sub
Gibt es eine Möglichkeit nur für "wirklich" markierte Bereiche (Zellen sind im Arbeitsblatt farblich markiert) eine Range Objekt zurückzubekommen, wenn aber kein Bereich sichtbar markiert ist auch keine (oder leeres) Range Objekt zurückzubekommen.
Danke schon mal vorab für alle Antworten,
Gruß Heiko
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Probleme mit Selection.Address
harry
hi,
ist das ganze ein worsheet change ereignis oder so etwas ähnliches?
du könntest das durch if bedingungen herausfiltern, z.b.
zellen = ActiveWindow.Selection.Address
If Range(zellen).Cells.Count > 1 Then
For Each acell In Range(zellen)
If acell.Value = "" Then
a = a + 1
End If
Next
If a For Each Wert In Range(zellen)
Wert.Value = Wert.Value + 1
Next Wert
End If
End If
liebe grüße,
harry
Anzeige
AW: VBA: Probleme mit Selection.Address
Heiko
Moin Harry,
das ist keine Worksheet change, sondern von mir so gedacht das ich einen bestimmten Bereich (immer wieder andere) per Maus markiere und dann auf Knopfdruck (Button im Arbeitsblatt) die Aktion ausführe.
Dein Code funktioniert übrigens in dem Sinne wie ich mir das denke, dafür schon mal besten Dank.
Trotzdem nochmal die Frage, gibt es keine VBA Funktion kein VBA Objekt das einen Range Bereich für nur "wirklich" markierte (also sichtbar farblich hinterlegte) Zellen zurückgibt.
Würde die Sache in Zukunft halt vereinfachen.
Danke und Gruß,
Heiko
Anzeige
AW: VBA: Probleme mit Selection.Address
harry
was meinst du mit
"wirklich" markierte (also sichtbar farblich hinterlegte) Zellen ?
zellen, die mit maus oder cursor markiert wurden, oder zellen, die eine andere hintergrundfarbe haben?
AW: VBA: Probleme mit Selection.Address
Heiko
Moin Harry,
ist immer blöd so Problem in Worte zu fassen.
Also nochmal ein Versuch:
Ich habe eine Tabelle mit ca. 1500 Zeilen und 40 Spalten.
Einige der Spalten enthalten Text, einige Zahlen.
Nun habe ich das Problem das einige Zahlen verändert werden müssen.
Diese Zahlen markiere ich mit der Maus (z.B. Zellen E14 bis F27), dann sieht man in der Tabelle das diese Zellen markiert sind. (Excel macht eine schwarzen Rahmen drum und hinterlegt die Zellen grau.)
Wenn ich nun die Aktion starte indem ich auf meinen Button dafür drücke läuft das ja auch wunderbar, die gewünschte Veränderung wird durchgeführt.
Danach ist dann aber die Kennzeichnung das die Zellen markiert nicht mehr sichtbar.
Drücke ich wieder auf den Button dann läuft die Aktion wieder ab obwohl für mich keine Zellen mehr sichtbar markiert sind.
Das scheint aber ein Problem zu sein das mit dem Button zu tun hat, denn wenn ich die Aktion mit dem Button starte ist die Markierung weg.
Dein Code von gestern hat übrigens leider doch nicht die gewünschte Eigenschaft gehabt.
Habe mal eine Tabelle beigefügt in ich gerade mit dem Problem rumprobiere. Schau da doch auch mal rein dann wird mein Problem vielleicht klarer.
https://www.herber.de/bbs/user/13606.xls
Danke und Gruß
Heiko
Anzeige
AW: VBA: Probleme mit Selection.Address
Heiko
Moin Harry,
habe nochmal ein bisschen rumprobiert und nun eine Lösung gefunden die mir nach der Aktion wieder den markierten Bereich anzeigt. Siehe letzte Zeile im Code.
Zellen = ActiveWindow.Selection.Address
MsgBox Zellen
For Each Wert In Range(Zellen)
Wert.Value = Wert.Value + 1
Next Wert
ActiveWindow.ActiveCell.Activate
Also Danke für deine Bemühungen,
Gruß Heiko
Anzeige
AW: VBA: Probleme mit Selection.Address
Ulf
Gib den farblich gekennzeichneten Zellen einen Namen.
Ulf
;
Anzeige

Infobox / Tutorial

Probleme mit Selection.Address in VBA lösen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (deinWorkbook)“ > Einfügen > Modul.

  3. Kopiere und füge den folgenden Code ein:

    Sub WerteErhoehen()
       Dim Zellen As String
       Zellen = ActiveWindow.Selection.Address
       MsgBox Zellen
       For Each Wert In Range(Zellen)
           Wert.Value = Wert.Value + 1
       Next Wert
       ActiveWindow.ActiveCell.Activate
    End Sub
  4. Führe das Makro aus, nachdem Du die gewünschten Zellen in Excel markiert hast.

  5. Klicke auf den Button, um die Aktion auszulösen. Dies erhöht die Werte der markierten Zellen um 1.


Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht, wenn keine Zellen markiert sind.

    • Lösung: Stelle sicher, dass Du vor dem Ausführen des Makros Zellen im Arbeitsblatt markierst.
  • Fehler: Die Auswahl wird zurückgesetzt, und das Makro läuft trotzdem.

    • Lösung: Füge ActiveWindow.ActiveCell.Activate am Ende des Codes hinzu, um die Auswahl wiederherzustellen.

Alternative Methoden

  • Verwendung von benannten Bereichen: Du kannst den farblich gekennzeichneten Zellen einen Namen geben. Dies vereinfacht die Handhabung und macht den Code leichter verständlich. Beispiel:

    Range("MeinBereich").Value = Range("MeinBereich").Value + 1
  • Filtern der Auswahl: Verwende If-Bedingungen, um nur Zellen mit bestimmten Eigenschaften zu bearbeiten:

    If Range(Zellen).Cells.Count > 1 Then
       ' Verarbeitung hier
    End If

Praktische Beispiele

Wenn Du Zellen mit bestimmten Eigenschaften farblich kennzeichnen möchtest, kannst Du den folgenden Code verwenden:

Sub ZellenFarbeAendern()
    Dim Zelle As Range
    For Each Zelle In Selection
        If Zelle.Value > 10 Then
            Zelle.Interior.Color = RGB(255, 0, 0) ' Rot
        End If
    Next Zelle
End Sub

Dieser Code färbt alle Zellen in Deiner Auswahl rot, die einen Wert über 10 haben.


Tipps für Profis

  • Nutze With-Anweisungen: Dies verbessert die Lesbarkeit und Effizienz Deines Codes. Beispiel:

    With Selection
       .Value = .Value + 1
    End With
  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um unerwartete Fehler während der Ausführung zu vermeiden.

  • Dokumentiere Deinen Code: Verwende Kommentare, um die Funktionsweise Deines Codes zu erklären. Dies ist besonders hilfreich, wenn Du oder andere den Code später erneut verwenden oder anpassen möchten.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur sichtbare Zellen bearbeitet werden?
Du kannst die SpecialCells-Methode verwenden, um nur sichtbare Zellen zu bearbeiten:

For Each Wert In Selection.SpecialCells(xlCellTypeVisible)
    Wert.Value = Wert.Value + 1
Next Wert

2. Gibt es eine Möglichkeit, die Adresse der Auswahl zu speichern?
Ja, Du kannst die Adresse der Auswahl wie folgt speichern:

Dim Adresse As String
Adresse = ActiveWindow.Selection.Address

Mit diesen Tipps und Techniken bist Du gut gerüstet, um Probleme mit Selection.Address in Excel VBA zu meistern und effizientere Makros zu erstellen.

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