Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mit VBA automatisch bestimmten Bereich markieren

Mit VBA automatisch bestimmten Bereich markieren
10.03.2007 14:12:48
pampel
Hallo zusammen,
für den Verein verwalte ich eine Liste, in die Anmeldungen zur Vereinsaktivitäten per Anruf oder E-Mail aufgenommen werden.
In die Spalten B bis F werden die Namen und Infos wie Telefonnummer oder E-Mail-Adresse aufgenommen. In der Spalte G baue ich daraus dann den Quellcode für die Internetseite zusammen. Die Liste wird über unsere Homepage für die anderen Organisatoren bereitgestellt. So kann ich die in Excel eingegebenen Infos leicht weiterverwenden.
Ich kopiere mir dazu die Spalten G1 bis Gx in die Zwischenablage und füge den Inhalt als neuen Quellcode in die entsprechende Seite ein. Dazu lasse ich mir mit Hilfe der bedingten Formatierung bestimmte Farben (grün = muss markiert werden, rot = muss nicht markiert werden) in den Zellen G1 bis Gx anzeigen, die mir signalisieren, bis wohin (=Gx) ich die Zellen markieren muss.
Kann man nun Excel mittels VBA dazu bringen, automatisch den erforderlichen Bereich zu markieren und in die Zwischenablage einzufügen? Eine Idee wäre es, anhand der Hintergrundfarbe die letzte zu markierende Zelle (Gx) zu ermitteln. Ich könnte aber auch die Tabelle um eine weitere Spalte erweitern, in die dann (auch wieder mit Hilfe der bedingten Formatierung) eine 1 für 'Markieren' oder eine 0 für 'Nicht Markieren' eingetragen werden könnte.
Kurzfassung: Wie bekommen ich Excel dazu, per VBA einen veränderbaren Bereich G1 bis Gx zu markieren?
Danke für Hinweise.
Gruß,
Stefan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA automatisch bestimmten Bereich markieren
10.03.2007 14:45:00
Daniel
Hallo
also bedingte Formatierung ist für dein Vorhaben nicht zu emfehlen, weil sich das Ergebnis der bedingten Formatierung nicht oder nur sehr aufwendig per VBA ermitteln lässt.
Einfacher ist es, du fügst eine Extra-Spalte ein mit einer Formel, die die zu markierenden zellen entsprechenden kennzeichnet bspw mit einem "x" oder einer 1
mit diesem Code markierst du alle Zellen in Spalte G zwischen G1 und der letzten Zeile, in in Spalte H die Markierung 1 hat:
Range(Cells(1, "G"), Columns("H").Find(what:=1, lookat:=xlWhole, after:=Cells(65536, "h"), _
searchdirection:=xlPrevious).Offset(0, _
-1)).Select
Eine andere Methode, alle gewünschten Zellen zu markieren wäre folgende: - du schreibst in Spalte "H" eine Formel, die zu kopierenden Zellen mit dem Wahrheitswert WAHR markiert. Zeilen die nicht kopiert werden dürfen, sollten ein Blank erhalten. Dann kannst mit diesem Befehl alle gewünschten Zellen in Spalte G selektieren, auch wenn es dazwischen Lücken gibt:
Columns("h").SpecialCells(xlCellTypeFormulas, 4).Offset(0, -1).Select

Gruß, Daniel
Anzeige
AW: Mit VBA automatisch bestimmten Bereich markier
11.03.2007 10:30:00
pampel
Hallo Daniel,
vielen Dank für Deine Antwort.
Zur Deiner ersten Variante:
Das klappt nicht ganz. Die ersten 23 Zeilen meines Blattes umfassen die ersten Zeilen meines
HTML-Codes und sind (fast) immer gleich (bis auf den title-Tag). Ab Zeile 24 werden dann die Namen
geschrieben.
In der Spalte H habe ich in die Zeilen 1 bis 23 "1" als festen Wert eingetragen. Ab der Zeile 24
untersuche ich dann mit =WENN(B24="";0;1), ob ein Name in Spalte B eingetragen wurde. Wenn das so ist,
dann erscheint in Spalte H eine 1, wenn nicht eine 0.
Dein VBA-Code markiert mir lediglich die ersten 23 Zeilen, in denen eine "harte" 1 in den Zellen
steht. Auch wenn ich z.B. in den Zeilen 24 bis 28 jeweils einen Namen eingetragen habe und folglich in
den entsprechenden Zellen der Spalte H durch die WENN-Untersuchung eine 1 steht, werden diese vier
Zellen NICHT markiert. Erst wenn ich das WENN-Ergebnis durch eine "harte" 1 ersetzt funktioniert Deine
erste Variante.
Bei der zweiten Lösung ergibt sich ein ähnlicher Effekt. Ich habe bis zur Zeile 75 den HTML-Code
vorbereitet. Die WENN-Funktion liefert mir hier nun die WAHR- und FALSCH-Werte, wenn ich in der Spalte
B einen Namen eingetragen habe oder nicht. Wenn ich allerdings Dein Makro aufrufe, dann werden alle 75
Zellen markiert.
xlCellTypeFormulas bedeutet ja, dass die entsprechenden Zellen Formeln enthalten müssen. Dein
XlSpecialCellsValue 4 bedeutet, dass es sich dabei um Textwerte handeln soll. Aber auch beim
XlSpecialCellsValue 2 werden alle 75 Zeilen markiert.
Gibt es vielleicht noch eine (andere) Möglichkeit?
Danke nochmals für Deine Mühen.
Gruß,
Stefan
Anzeige
AW: Mit VBA automatisch bestimmten Bereich markier
11.03.2007 12:26:00
Daniel
Hallo
zur ersten Lösung:
Wenn die 1er per Formel gesetzt werden, musst du die Suchfunktion noch um diesen Parameter ergänzen:
LookIn:=xlValues
zum 2. Problem:
Columns("h").SpecialCells(xlCellTypeFormulas, 4).Offset(0, -1).Select
bedeutet, das alle Zellen markiert werden, die eine Formelbeinhalten, deren Ergebnis ein Wahrheitswert ist.(egal, ob WAHR oder FALSCH)
(1 = Zahlen, 2 = Texte, 4 = Wahrheitswerte, 16 = Fehler, Kobinationen durch Summenbildung)
wenn du mit dieser Funktion selektiv arbeiten willst, dann musst du die Formel so gestalten, daß das für alle Zellen, die Kopiert werden sollen ein Wahrheitswert drinsteht, für alle Zellen die nicht kopiert werden sollen, muß eine Zahl, ein Text oder Leer drinstehen, aber KEIN Wahrheitswert.
also z.B.
=wenn(B24:"";"";WAHR)
Gruß, Daniel
Anzeige
AW: Mit VBA automatisch bestimmten Bereich markier
11.03.2007 19:22:00
pampel
Hallo Daniel,
mit diesen Korrekturen funktionieren beide Varianten.
Vielen Dank für diese Tipps!!!
Gruß,
Stefan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige