Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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

formatierung

formatierung
16.01.2016 17:03:22
Thomas
Hallo exelfreunde,
ich versuche gerade mit dem Codschnipsel aus einer schleife:
Ausgangslage:
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy
Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteValues
Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteFormats
die Werte und die Füllfarbe vom Blatt Vorlage ins Blatt Jahr zu übertragen. Das Format stammt aus einer bedingten Formatierung und ich möchte nur die Füllfarbe mit rüber kopieren und nicht die Formeln der bedingten Formatierung:
einer meiner gefühlten 1000 versuche ist:
Jahr.Range("A" & ZimJahr).Interior.Color
nun gut es klappt nicht, der Recorder schreibt mir als beispiel:
Range("F4").Select
Selection.Copy
Range("A3:M4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("vorlage").Select
Range("A4").Select
ActiveSheet.Paste
damit fügt er das so ein wie ich es gern brauchen kann.
also versuche ich
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy
Jahr.Range("A" & ZimJahr).Paste
Jahr.Range("A" & ZimJahr).Paste
nun gut dann bekomme ich die fehlermeldung
"objekt unterstützt die eigenschaft nicht."
Und ich bin wieder mal schach matt.
im zielblatt kann ich diese Bedingte formatierung nicht setzen da sich die bezugszeilen ständig in anzahl der spalten und Anzahl der Zeilen ändern.
weiss jeman ein rat?
liebe grüsse thomas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: formatierung
16.01.2016 18:04:14
JoWe
Hallo Thomas,
entferne einfach die Regel der Bedingten Formatieren nach dem Kopiervorgang:
Range("Dein_Range_der_gerade_eingefügt_wurde").FormatConditions.Delete
Gruß
Jochen

Ah so, es geht ja ggf um BedingtFormate, ...
16.01.2016 18:18:27
Luc:-?
…Folks,
was soll denn dann passieren, Jochen, wenn die Regel entfernt wird? 3× darfst du raten… ;->
Es scheint sich immer noch nicht herumgesprochen zu haben, dass es ab Xl14/2010 ein neues Objekt, DisplayFormat, als Range-Eigenschaft gibt. Dessen .Interior.Color-Wert muss auf die entsprd Range-Eigenschaft übertragen wdn!
Gruß, Luc :-?

Anzeige
AW: ah ja jetzt hab' ich's auch...
16.01.2016 18:29:03
JoWe
Hallo Luc,
...schön das Du mich erhellst.
Nun, offenbar hatte ich das Wissen um dieses Objekt schon wieder verdrängt.
Wird wohl nicht oft bemüht; zumindest von mir nicht.
Schönen Abend noch
Jochen

AW: Ah so, es geht ja ggf um BedingtFormate, ...
16.01.2016 18:52:07
Thomas
Hallo Luc:-? und Jochen,
erstmal vielen dank das ihr mir bei diesem problem unterstützt.
Ich habe das jetzt so eingesetzt
MEnde = Day(Vorlage.Range("ag2"))
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy Jahr.Range("A" & ZimJahr)
'Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy
'Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteValues
' Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteFormats
ZimJahr = ZimJahr + letzteZeile + 3
letzteZeile = 0
es wird alles übertragen und es kommt auch keine Fehlermeldung aber die Formeln der bedingten Formatierung gehen leider mit rüber.
Ich habe das auch von Jochen getestet
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy
Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteValues
Jahr.Range("A" & ZimJahr).PasteSpecial xlPasteFormats
Jahr.Range("A" & ZimJahr).FormatConditions.Delete
versucht aber auch hier keine fehlermeldung und die Formeln der bedingten Formatierung bleiben hartnäckig.
alles was ich mit ....FormatConditions.Delete versucht habe ist auch fehlgeschlagen. Wenn es mal klappt dann verschwinden mit den formeln auch die formatierungen.
mist können wir noch was anderes testen?
End Sub
können

Anzeige
Versuch's mal so, Thomas:
16.01.2016 18:10:57
Luc:-?
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 35)).Copy Jahr.Range("A" & ZimJahr)
Sonst wirst du das ZielBlatt evtl erst auswählen müssen, wenn das anders fktionieren soll. Setzt allerdings voraus, dass Vorlage und Jahr nicht nur BlattTitel (gewöhnl Namen), sondern auch die zugehörigen CodeNamen sind.
Gruß, Luc :-?

Prinzipiell ja, Luc, aber ...
16.01.2016 19:06:49
Michael
Hi zusammen,
das Ding hab ich "verbrochen".
Reines .copy haut (ohne Vorarbeiten) nicht hin, da teilweise Formeln enthalten sind, die auf Werte verweisen, die in dem zweiten Blatt nicht vorhanden sind.
Ich habe die "böse" Formel ("Monatsende") von Vorlage!AH5 nach AF2 versetzt, den *einen* Bezug im Makro rausgeworfen (wurde eh nicht benutzt) und die drei Formeln, die darauf verweisen (es geht um die Tage 29,30 und 31 relativ zum Monatsende) in AD3-AF3 geändert, dann paßt's mit copy.
Datei: https://www.herber.de/bbs/user/102840.xlsm
Schönheitsfehler: in Vorlage!AF2 habe ich nicht die richtige Schriffarbe gefunden, die ist einen Ticken heller als das Hintergrundrosa - mußte halt suchen...
Schöne Grüße,
Michael

Anzeige
Hallo auch du michael
16.01.2016 19:36:10
Thomas
Hallo michael,
muss erstmal was richtigstellen, du hast was "verbrochen"? Ohne dich hätte ich diese mappe garnicht,
es ist eine super arbeit auf die bin ich richtig stolz. Ich habe sie schon in mein orginalprojekt drin dies hat super geklappt. ich wollte mich noch bei dir melden aber ich musste erstmal meine Ausgangsdaten aufräumen da war viel mist drin ( nun ja habe viel dabei gelernt). Aber jetzt läuft es klasse. Ich muss erstmal schnell für ne stunde los dann mache ich mich an die arbeit und teste weiter und gebe dann gleich bescheid ob es geklappt hat wird so um 20:30 sein denke ich.
habt schon mal alle vielen dank für alles.
liebe grüsse thomas

Anzeige
es will einfach nicht funktionieren
16.01.2016 21:32:54
Thomas
Hallo Excelfreunde,
Michael ich kann machen was ich will ich bekomme es einfach nicht hin. Ich glaube ich habe schon alle variationen getestet die es gibt. Das tolle ist durch deine letzte anpassung funktioniert es wenn man mit der Hand copy und paste macht. dann bleiben die bedingte formatierungen in der quelltabelle und es wird nur die füllfarbe übertragen dies bekomme ich aber einfach nicht in die schleife nicht mal mit select.
ich hatte den gedanke es mit der bedingten formatierung sein zulassen und die Wochenenden und die feiertage in der zieltabelle mit VBA zu formatieren. hab auch schon ein Ansatz im Netz gefunden aber ich glaube das bekomme ich allein nicht hin. Da ist das datum aber in der spalte .
https://www.herber.de/bbs/user/102841.xlsm
ich weiss ich hab so schon viel arbeit gemacht. Aber würdest du mal schauen ob dir noch was einfällt wie man in der zieltabelle die WE und die Feiertage färben könnte? Ein link würde vielleicht ja schon reichen dann würde ich es abtippen oder so.
viele liebe grüsse

Anzeige
Ich schrieb es oben schon, ...
17.01.2016 00:20:50
Luc:-?
…Thomas,
benutze die .DisplayFormat-Eigenschaft der QuellZelle und übertrage deren Wert separat auf die ZielZelle, also für die ZellFarbe ungefähr so:
1. Wert übertragen: ZielZelle = QuellZelle
2. ZellFarbe übertragen: ZielZelle.Interior.Color = QuellZelle.DisplayFormat.Interior.Color
Evtl weitere Formate analog übertragen. Das aktive BedingtFormat der QuellZelle wird so als festes Format der ZielZelle eingetragen. Die BedingtFormat-Regeln wdn nicht übernommen.
Luc :-?

ich glaub ich muss aufgeben
17.01.2016 01:23:15
Thomas
Hallo Luc:-?´,
ich glaub ich muss aufgeben. Ich kriege es nicht hin sorry. Ich bin mir aber auch sicher das ich dies Jahr noch viel über vba lernen muss und werde. Ich habe bestimmt schon den zweitausendten test gemacht ich kann es einfach nicht.
Das einzige was mir gelungen ist dieses macro mit call in der schleife zu starten dann werden die WE und feierttage für die monate 1-11 formatiert.
Sub WochenendenEinfaerben()
Dim r As Range
Dim rFT As Range
Dim bolFT As Boolean
For Each r In Range("b3:ae4")
If IsDate(r.Value) Then
bolFT = False
For Each rFT In Range("Feiertage")
If rFT.Value = r.Value Then
bolFT = True
Exit For
End If
Next
If Weekday(r.Value, vbMonday) > 5 Or bolFT Then
With Range(Cells(3, r.Column), Cells(4, r.Column))
.Interior.Color = vbBlue
.Font.Color = vbWhite
End With
End If
End If
Next r
End Sub
Aber dies bekomme ich nicht hin.
Dim zielzelle
Dim quellzelle
zielzelle = Sheets("Jahr").Range("A" & ZimJahr)
quellzelle = Sheets("Vorlage").Cells(2 + letzteZeile + 2, 32)
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 32)).Copy Jahr.Range("A" & ZimJahr)
zielzelle.Interior.Color = quellzelle.DisplayFormat.Interior.Color
https://www.herber.de/bbs/user/102840.xlsm
habt vielen vielen dank für eure geduld und verständnis das ist für mich zwei nummern zu hoch.
ich gehe erstmal pennen vieleicht habe ich dann den richtigen blick.
liebe grüsse thomas

Anzeige
Warum? Mach's nur richtig!
17.01.2016 01:47:00
Luc:-?

Dim ZZelle As Range, QZelle As Range
Set ZZelle = Sheets("Jahr").Range("A" & ZimJahr)
Set QZelle = Sheets("Vorlage").Cells(2 + letzteZeile + 2, 32)

'Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 32)).Copy _
'Jahr.Range("A" & ZimJahr)
ZZelle = QZelle
ZZelle.Interior.Color = QZelle.DisplayFormat.Interior.Color

Luc :-?

ich kann es doch noch nicht lassen
17.01.2016 02:13:35
Thomas
Hallo Luc :-?
erstmal besten dank das du mich nicht klein machst, Ich habe es noch eingebaut.
Aber er schreibt " objekt unterstützt die eigenschaft oder methode nicht"
ZZelle.Interior.Color = QZelle.DisplayFormat.Interior.Color das hier wird gelb
Habe ich es immer noch falsch eingebaut? Habe es mit e 2010 ex 2013 probiert.
Ich teste noch ein wenig es muss doch zu machen sein,
liebe grüsse thomas
ich habe es bestimmt immernoch falsch.
Sub datenZuordnen_V2()
Dim d_von&, d_bis&, d&, mehrere&, k&
Dim termine As Variant
Dim c As Range, nach As Range
Dim zeile&, zeilemax&, letzteZeile&, ZimJahr& ' Zeile im Blatt "Jahr"
Dim TimM& ' Tag im Monat
Dim monat&, lMonat&, MEnde&
Dim ZZelle As Range, QZelle As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Application.ScreenUpdating = False
d_von = 2
d_bis = Daten.Range("E" & Rows.Count).End(xlUp).Row
termine = Daten.Range("A" & d_von & ":G" & d_bis).Value
Vorlage.Range("B5:AF34").ClearContents
Jahr.Range("A2:AF500").Clear
letzteZeile = 0
monat = 1: lMonat = 1
ZimJahr = 2
Vorlage.Range("A2") = DateSerial(Year(Vorlage.Range("A2")), 1, 1)
For d = 1 To UBound(termine, 1)
zeile = 5: zeilemax = 0
monat = Month(termine(d, 5))
If monat  lMonat Then
'Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 32)).Copy Jahr. _
Range("A" & ZimJahr)
Set ZZelle = Sheets("Jahr").Range("A" & ZimJahr)
Set QZelle = Sheets("Vorlage").Cells(2 + letzteZeile + 2, 32)
ZZelle = QZelle
ZZelle.Interior.Color = QZelle.DisplayFormat.Interior.Color
ZimJahr = ZimJahr + letzteZeile + 3
letzteZeile = 0
Vorlage.Range("B5:AF34").ClearContents
If monat - lMonat > 1 Then
For k = lMonat + 1 To monat - 1
Vorlage.Range("A2") = DateSerial(Year(Vorlage.Range("A2")), k, 1)
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(4, 32)).Copy Jahr.Range("A" & ZimJahr) _
ZimJahr = ZimJahr + 3
Next
End If
Vorlage.Range("A2") = DateSerial(Year(Vorlage.Range("A2")), monat, 1)
End If
TimM = Day(termine(d, 5))
mehrere = termine(d, 3)
Set nach = Vorlage.Cells(zeile - 1, TimM + 1).Resize(1, mehrere)
Do:  zeilemax = zeilemax + 1
Loop Until WorksheetFunction.CountA(nach.Offset(zeilemax, 0)) = 0
If zeilemax > letzteZeile Then letzteZeile = zeilemax
nach.Offset(zeilemax, 0) = termine(d, 7)
lMonat = monat
'Stop
Next
Vorlage.Range(Vorlage.Cells(2, 1), Vorlage.Cells(2 + letzteZeile + 2, 32)).Copy Jahr.Range("A" & _
ZimJahr)
Application.CutCopyMode = False
MsgBox "Erledigt"
End Sub

Anzeige
besten Dank an allen helfern
17.01.2016 18:48:34
Thomas
Hallo Excelfreunde,
ich wähle den weg mit Call dieser funktioniert nun genau so schnell.
Ich möchte mich noch einmal bei allen mitwirkenden bedanken. Die Datei läuft super stabil.
habt recht vielen vielen dank, für die viele viele Zeit die ihr geopfert habt.
Ich bin super happy.
liebe grüsse thomas

Na, denn iss ja jut... ;-) owT
18.01.2016 15:58:00
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige