Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
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
Inhaltsverzeichnis

Problem: per VBA Format übertragen

Problem: per VBA Format übertragen
15.03.2013 12:45:37
Lisa
Hallo zusammen!
Kann mir mal bitte jemand weiterhelfen?
Der folgende Code Ausschnitt kopiert zwei Spalten und überträgt
dann deren Format (also ich meine die Formatierungen) auf einen
variablen Bereich. (Habe ich mit dem Makro-Recorder aufgezeichnet)
Grundsätzlich geht auch alles wunderbar. Das Problem ist jedoch,
dass die Spalten, die kopiert werden, später mal ausgeblendet sein
sollen. WENN sie dann ausgeblendet sind, dann wird leider auch die
"Formateigenschaft ausgeblendet" übertragen - das soll natürlich
nicht sein...
Wisst ihr was ich meine?!
Also der Bereich, auf den die Formatübertragung angewandt wird,
der wird dann auch ausgeblendet...
Hier der Code-Ausschnitt:
Sheets("Methadon").Columns("DX:DY").Copy
Sheets("Methadon").Range(Cells(1, 5), Cells(1,
x)).EntireColumn.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Kann mir jemand sagen, was ich ändern muss?!
Schon mal vielen Dank!

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

Betreff
Datum
Anwender
Anzeige
AW: Problem: per VBA Format übertragen
15.03.2013 13:28:28
Erich
Hi Lisa,
das könnte so aussehen:

Sub Makro1()
Dim x As Long
x = 15
Columns("DX:DY").Copy
Range(Columns(5), Columns(x)).PasteSpecial Paste:=xlPasteFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.EntireColumn.Hidden = False
Cells(1, 5).Select
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Blatt fehlte
15.03.2013 13:31:08
Erich
Hi Lisa,
so etwas besser:

Sub Makro1()
Dim x As Long
x = 15
With Sheets("Methadon")
.Columns("DX:DY").Copy
.Range(.Columns(5), .Columns(x)).PasteSpecial Paste:=xlPasteFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.EntireColumn.Hidden = False
.Cells(1, 5).Select
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Blatt fehlte
15.03.2013 13:34:42
Lisa
Hallo Erich!
Erstmal Danke für deine Hilfe!
Ich habe es noch nicht versucht, aber korrigiere mich wenn ich falsch liege:
Die Zeile:
Selection.EntireColumn.Hidden = False
sorgt dafür, dass im "Einfügebereich" alle ausgeblendeten Spalten wieder eingeblendet werden, oder?
Das ist leider keine Lösung :-)
Sorry hatte vll. vergessen zu erwähnen, dass im "Einfügebereich" bestimmte Spalten ausgeblendet sind.
Und diese sollen/müssen auch ausgeblendet bleiben...

Wie genau?
15.03.2013 13:50:26
Erich
Hi,
ja, die Info, dass im "Einfügebereich" bestimmte Spalten ausgeblendet sind, ist wohl nötig.
Wenn eine Spalte im Zielbereich ausgeblendet ist und durch eine eingeblendete Quellspalte überschrieben wird,
soll sie dann ausgeblendet bleiben oder eingeblendet werden?
Würde bedeuten:
Im Zielbereich werden alle Zeilen ausgeblendet, die das vorher waren oder
die durch eine ausgeblendete Spalte überschrieben werden.
Soll dat so werden?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Wie genau?
15.03.2013 14:02:50
Lisa
Ich verstehe nicht so ganz was du meinst, sorry :-/
Ich sage dir jetzt einfach mal was passiert bzw. passieren soll:
- Ich habe für jede Kalenderwoche eine Tabelle, bei der die Spalten abwechselnde Farben haben.
- Nun starte ich ein Makro.
- Das Makro blendet in einem ersten Schritt alle Spalten aus, die keine Werte enthalten.
- (x)
- Im zweiten Schritt markiert das Makro eine gewünschte Tabelle einer bestimmten Kalenderwoche und startet einen Druckauftrag.
- Am Ende blendet das Makro alle ausgeblendeten Spalten wieder ein.
- (y)
Nun ist es an der Stelle (x) nötig, die Spaltenfarben wieder abwechselnd zu formatieren - denn durch das Ausblenden stehen teilweise gleichfarbige Spalten neben einander.
Bei (y) wird das "Umfärben" in Schritt (x) wieder Rückgängig gemacht...
Verstehst du was ich meine?!
Nun Schritt (x) und (y) erledige ich eigentlich total easy, indem ich das Format der beiden Spaltenfarbe am Anfang der Tabelle ausgeblendet habe. Und in diesen Schritten wird dieses Format jeweils über die ganze Tabelle gezogen. Es funktioniert soweit ja auch alles, nur habe ich das Problem, das beim "Format übertragen" eben auch die Eigenschaft "Spalte ausgeblendet" übertragen wird...

Anzeige
Hidden wiederherstellen
15.03.2013 18:50:40
Erich
Hi,
zwar habe ich nach wie vor nicht verstanden, was du da tust, aber vielleicht geht es ja auch so.
Probier mal

Sub KopForm()
Dim x As Long, arrH() As Boolean, ii As Long
x = 15
With Sheets("Methadon")
.Columns("DX:DY").Copy                 ' Quellspalten
ReDim arrH(5 To x)                     ' Zielspalten
For ii = LBound(arrH) To UBound(arrH)  ' merke "Hidden"
arrH(ii) = .Columns(ii).Hidden
Next ii                                ' Kopiere Formate
.Range(.Columns(LBound(arrH)), .Columns(x)).PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone
Application.CutCopyMode = False
For ii = LBound(arrH) To UBound(arrH)  ' Wiederherstellung
If Not .Columns(ii).Hidden = arrH(ii) Then _
.Columns(ii).Hidden = arrH(ii)
Next ii
End With
End Sub
Dieser Code stellt die Hidden-Eigenschaften der Zielspalten so wieder her,
wie sie vor ddem Format-Kopieren waren. Ob Quellspalten hidden sind oder nicht, spielt keine Rolle.
Ist das so das gewünschte Verhalten?
Der Code läuft auch dann, wenn "Methadon" nicht das aktive Blatt ist.
Bei deinem Code muss "Methadon" aktiv sein.
Noch ein Hinweis:
Sheets("Methadon").Range(Cells(1, 5), Cells(1, x)).EntireColumn.Select
ist nicht sinnvoll.
Cells(1, 5) und Cells(1, x) bezeichnen zwei Zellen des gerade aktiven Blatts - das muss nicht Methadon sein.
Also entweder
Range(Cells(1, 5), Cells(1, x)).EntireColumn.Select ' im aktiven Blatt, ohne Blattangaben
oder
Sheets("Methad").Range(Sheets("Methad").Cells(1, 5), Sheets("Methad").Cells(1, x)).EntireColumn.Select
oder beser mit "With".
Mehr dazu z. B. hier:
https://www.herber.de/forum/archiv/1108to1112/1110718_Benutzten_Bereich_kopieren.html#1110730
https://www.herber.de/forum/archiv/1148to1152/1150616_Zeilen_einblenden.html#1150631
https://www.herber.de/forum/archiv/1252to1256/1254910_Bereich_kopieren_klappt_nicht.html#1254919
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

131 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige