Re: Bestimmte Formatierung kopieren

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Moin Jean-Marie,

*JM. Berdat* schrieb:
ich habe zuerst mal mit diesem Script angefangen:

Danke für Deinen bisherigen Code.
Da Wolfgang Dir schon eine kurze Code-Lösung vorgestellt hat, will ich Dir
auch noch kurz den Weg von Deinem zu seinem Code versuchen zu erklären.
Denn imho ist es immer wichtig, dass man Code, den man einsetzt, auch
versteht.

----
Sheets("Tabelle1").Select
Sheets.Add
Sheets("Tabelle4").Select
Sheets("Tabelle4").Name = "BBZ"
Sheets("Tabelle1").Select

All diese obigen Zeilen hat Wolfgang ersetzt durch:
Sheets.Add.Name = "BBZ"
Er fügt damit ein zusätzliches Tabellenblatt und vergibt direkt einen
Namen.

Hinweis am Rande: Verzichte auf Anweisungen wie 'Select', 'Activate' und
Objekte wie 'Selection'. Du brauchst sie fast nie, sie verlangsamen das
Programm und sie machen den Code unübersichtlich.
Da Du anscheinend bei Deinen ersten Schritten in VBA bist, möchte ich da
jetzt nicht weiter drauf eingehen.
Wenn man - wie Du es gemacht hast - mit dem Makro-Rekorder anfängt, um
überhaupt einen Einstieg in VBA zu erhalten, dann erhält man viele Selects
und Selections ;-)
Das macht auch überhaupt nichts. Man kann die Teile allderings später dann
ersetzen. Der Makro-Rekorder ist unheimlich hilfreich, ich nutze ihn ab und
an selber noch gerne, um den richtigen Befehl zu finden.

Cells.Select

Das hat Wolfgang ersetzt durch:
Worksheets("Tabelle1").UsedRange
Hiermit hat er lediglich die Anzahl der Zellen reduziert, die überprüft
werden müssen, um Zeit zu sparen.

Selection.Copy
Sheets("BBZ").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Hier wirds dann tatsächlich neu.
Denn zum einen musst Du tatsächlich sämtliche Zellen einzeln durchlaufen
und zum anderen die Hintergrundfarbe überprüfen.

Um Bedingungen in VBA abzufragen, benutzt man zB die If..Then-Anweisung
<Syntax>
If (Bedingung zutreffend) Then
'mache irgendetwas
Else
'mache etwas anderes
End If

Um mehrere Zellen zu durchlaufen bietet sich die For Each..Next-Schleife
an.
Hierbei wird für jedes einzelne Element einer Auflistung alle Anweisungen
bis zum Next-Befehl durchlaufen.
<Syntax>
Dim Zelle As Excel.Range
For Each Zelle In BereichVonZellen (zB .UsedRange)
'.. eine oder mehrere Anweisungen
Next

Range("A1").Select
Sheets("Tabelle1").Select
Range("A1").Select

Diese 3 Zellen sind nach dem Beseitigen von Select-Anweisungen einfach nur
überflüssig ;-)

End Sub
----
Ich weiss aber nicht, wie ich diesen Script so abändern kann, dass z.B. nur
die Felder mit der Farbe rot kopiert werden.

Zusätzlich zu den bisherigen Erläuterungen musst Du dazu noch wissen, wie
man die Hintergrundfarbe einer Zelle abfragen kann.
Ich schmeiße bei sowas den Makro-Rekorder an und setze die Hintergrundfarbe
manuell und betrachte hinterher den aufgezeichneten Code.

Ich habe das Gefühl, dass ich das so nicht lösen kann, sondern Feld für
Feld abfragen muss. Dies übersteigt meine Kenntnisse in VBA aber
deutlich, so dass ich mich nun hier im Forum gemeldet habe.

Und ich hoffe, wir haben Dir das ganze etwas näher bringen können.
Wenn man erstmal auf den Geschmack gekommen ist, kann man sich damit
unheimlich viel erleichtern.
Ich freue mich schon auf die nächste Frage :-)

Gruß aus Kiel
Reiner
--
All Computers wait at the same speed !
.



Relevant Pages

  • Re: Bestimmter Zellwert - bestimmte Farbe
    ... Danke für die Hilfe - kann aber leider kein VBA! ... >Dann wandelst Du den Code so ab, ... Schleife ausgeführt wird, ... >in welcher alle zu färbenden Zellen angesprungen werden. ...
    (microsoft.public.de.excel)
  • Re: VBA / Makro / Script: Zeilen =?ISO-8859-1?Q?l=F6schen_mit_?= =?ISO-8859-1?Q?mehr
    ... Declare Function in Excel aufrufe. ... Fremden Code versteht man grundsätzlich NICHT auf Anhieb! ... nicht hinkommt, oder gar alles automatisieren will, kommt VBA ins Spiel. ... End With ...
    (microsoft.public.de.excel)
  • Re: Überwachen einzelner Zellbereiche
    ... Da ich weiter unten dann - weil Du es angeboten hast - den Code der Funktion ... Manche Sachen, die unter VBA mit dem xl-Objekt gehen, gehen ... Der Code soll den Durchschnitt der Kollegenzahlen errechnen (die Wochentage ... Divisor = Divisor + 1 ...
    (microsoft.public.de.excel)
  • Re: Textfeld berechnen
    ... Textfelder das Textfeld (Summe) neu berechnen lassen. ... Dann musst Du beim AfterUpdate jedes einzelnen Tag-Feldes in der Ereignisprozedur (VBA Code): ...
    (microsoft.public.de.access)
  • Re: Gegenteil von Union-oder Intersect-Methode
    ... Eberhard Funke schrieb am 15.08.2007 ... Daher hatte ich mir Deinen Code nicht genau ... Am Ende liefert die Funktion den ersten Range ohne den zweiten zurück - ... Je nach Inhalt der Zellen könnte in diesem Zusammenhang die SpecialCells ...
    (microsoft.public.de.excel)