online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon andreas_3 vom 04.06.2020, 14:40 Options

VBA-Makro in Excel nur in gefilterten Zeilen ausführen

Hallo zusammen,

vielleicht mal wieder ne ganz einfache Frage...

Ich hab in einer Ecxel-Tabelle ein Makro, welches alle Zeilen durchläuft.

Hab das so programiert... vielleicht nicht elegant, aber ich wußte es nicht anders: ( x ist die laufende Zeile)

sub beispiel ()
Anfang:
x = 1
[Aktion]
x =x + 1

if x < 1000
goto Anfang
end if

end sub


Ich möchte aber nun mit dem Auto-Filter bestimmte Zeilen auswählen und das Makro dann nur in diesen Zeilen ausführen

Geht das?

Dankeschön & Gruß aus Stuttgart


Antwort schreiben

Antwort 1 von schnallgonz vom 04.06.2020, 22:12 Options

Salve,
SpecialCells heißt das Zauberwort für Dein Problem

guxu Excelhilfe oder in diesem Forum z.B. hier:

http://www.supportnet.de/threads/1631959

mfg
schnallgonz

Antwort 2 von andreas_3 vom 10.06.2020, 12:51 Options

Hallo Schnallgonz (und/oder alle anderen)

das sieht nach einem vielversprechenden Tipp aus, allerdings steh ich bei der Umstetzung (von dem Beispiel und auch mit der Excel-Hilfe) auf dem Schlauch.
Bin da ziemlicher Autodidakt-Anfänger und hab grad auch irgendwie nicht den Nerv, mich da reinzuknien. Darf ich deshalb nochmal um Hilfe bitten?

Ich hab ne Tabelle

Spalte1 Spalte2 Spalte3
A 2
B 2
A 1
C 2
A 1

und möchte nun nach "A" und " 1" filtern und dann im Makro jeweils die 3 Spalte ansteuern [ Cells (x, 3).Select ] aber eben nur die gefilteren Zeilen.
Schon klar, dass man das in dem Beispiel anders machen könnte, aber ich brauch es halt so.

Dankeschön für jede Hilfe

Gruß aus Stuttgart
Andreas

Antwort 3 von schnallgonz vom 10.06.2020, 19:29 Options

Hallo Andreas,
ganz kann ich Dir noch nicht folgen.
Das Filterkriterium ist individuell oder konstant "A1"?
Letzteres kann man natürlich voreinstellen, ansonsten klickt man
im Autofilter eben auf den gewünschten Wert.
Dann reicht zum markieren in Spalte3 die zweite Codezeile.

Sub Spalte_3_markieren()
'nach Zellinhalt "A1" filtern
Selection.AutoFilter Field:=1, Criteria1:="A1"
'im jetzt eingestellten Autofilter alle sichtbaren Zellen in Spalte3
Range("C2:C" & Range("C65536").End(xlUp).Row).SpecialCells(12).Select
End Sub

gruß
schnallgonz

Antwort 4 von andreas_3 vom 11.06.2020, 10:44 Options

Hallo Schnallgonz,

dankeschön, dass Du danbleibst :-)

Ich kann halt auch schwer erklären...

also, erstens, der Filter ist sehr variabel, die echte Tabelle hat wesentlich mehr Spalten, es wird nach verschiedenen Kriterien gefiltert, machmal nach der, manchmal nach ner anderen, kann man also nicht voreinstellen.,

Und dann muß ich mit dem Makro wirklich jede Zeile einzeln ansteuern, weil in jeder (gefilterten Zeile eine größere Aktion ausgeführt werden muß (in Verbindung mit Reflektion, wenn dir das was sagt....)

Es muß also so aussehen

x = [erste gefilterte Zeile]
cells (x,3). select
[Aktion ausführen]
x = [nächste gefilterte Zeile]
cells(x,3.select
[Aktion ausführen]
usw

Danke nochmals, würde mir wirklich sehr helfen, wenn das klappt...

LG
Andreas

Antwort 5 von schnallgonz vom 11.06.2020, 19:26 Options

Salve Andreas,
bei mir ist jetzt folgendes angekommen:
1. das Filtern erledigst Du manuell
2. im gefilterten Bereich soll in SpalteC nacheinander jede Zeile ausgewählt werden.

Hier mein Vorschlag zu 2.
Sub Zeilen_C_markieren()
Dim rngFilterCell As Range
For Each rngFilterCell In Range("C2:C" & Range("C65536").End(xlUp).Row).SpecialCells(12)
Range(rngFilterCell.Address).Select
MsgBox "SoSo"
Next
End Sub
Damit sollte jede Zeile im Filterbereich markiert werden,
dann wird eine MsgBox aufgerufen und es geht weiter zur nächsten Zeile.
Anstelle der MsgBox kommt Deine Aktion.
Wenn der Code steht, wird alles gnadenlos durchgeorgelt
Deshalb ist ein vorheriges Sichern der Datei kein Fehler...

mfg
schnallgonz

Antwort 6 von andreas_3 vom 18.06.2020, 11:21 Options

Halllo Schnallgonz,
entschuldige die späte Antowrt, konnte mich jetzt erst damit beschäftigen...

ja - es funktioniert, super -dankeschön

was ich noch selbst kombiniert habe (ist hoffentlich nicht zu unelegant ;-) ) ist

Sub Zeilen_C_markieren()
Dim rngFilterCell As Range
For Each rngFilterCell In Range("C2:C" & Range("C65536").End(xlUp).Row).SpecialCells(12)
Range(rngFilterCell.Address).Select
x = ActiveCell.Row ' damit ich verschiedene Zellen der gefilterten Zeile ansteuern kann
cells (x, 3). select [Action]
cells (x, 5).select [Action]



Next
End Sub



Also vielen Dank nochmals für Deine Hilfe!!

Gruß
Andreas

Antwort 7 von schnallgonz vom 18.06.2020, 16:25 Options

Hallo Andreas,
Danke für die Rückmeldung und Glückwunsch zur Modifizierung :-)

Deine Anfrage ist 2x gelistet und coros hat hier
http://www.supportnet.de/threads/1733902

noch eine Antwort gepostet.

mfg
schnallgonz

Ähnliche Themen

Excel Makro erscheint nicht in Makroliste
H.E.N.K  01.02.2007 - 218 Hits - 1 Antwort

Seriendruck bei aktiven Filter in Excel
Kekern  04.05.2007 - 110 Hits -

Makro
Laurentiuz  07.05.2007 - 100 Hits -

VBA Excel in unterste Zelle springen
Winniki  12.05.2008 - 75 Hits - 1 Antwort

VBA-Makro in Excel nur in gefilterten Zeilen ausführen
andreas_3  15.06.2008 - 84 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026