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

VBA - Rahmeneigenschaften wie übertragen

VBA - Rahmeneigenschaften wie übertragen
16.11.2021 20:04:32
t_r
Hallo, wie kann ich mittels VBA die Rahmeneigenschaften einer Zelle auf eine andere Zelle übertragen?
Der folgende VBA-Schnipsel tut leider nichts - obwohl er die Rahmeneigenschaften der Zelle B2 auf die Zelle D2 übertragen sollte:

Sub FormatRandKopie()
Dim brd1, brd2 As Borders
With ActiveWorkbook.Worksheets("Test")
Set brd1 = .Cells(2, 2).Borders
Set brd2 = .Cells(2, 4).Borders
Set brd2 = brd1
End With
Set brd1 = Nothing
Set brd2 = Nothing
End Sub
Wo liegt mein (Denk)Fehler?
Ich bitte um Hinweise und Korrekturen. Vielen Dank.
Grüße,
t_r

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Rahmeneigenschaften wie übertragen
16.11.2021 21:01:09
Rudi
Hallo,
warum kopierst du nicht einfach das Format?
Gruß
Rudi
AW: VBA - Rahmeneigenschaften wie übertragen
16.11.2021 21:35:55
Tobias
Hallo t_r,
ich denke mit Set weißt du lediglich deiner Variablen brd2 zu das sie folglich auf den selben Inhalt zeigt wie brd1. An den Inhalten an sich änderst du nichts.
brd1 und brd2 sind in diesem Sinne eher Zeiger die auf ein bestimmtes Objekt zeigen. VBA unterstützt meines Wissens auch nicht diese Objekte direkt zu übergeben, du müsstest dann die einzelnen Unterpunkte der Elemente manuell übergeben oder mit xlPasteFormats arbeiten.
https://docs.microsoft.com/de-de/office/vba/api/excel.border(object)
Schöne Grüße
Tobias
Anzeige
AW: VBA - Rahmeneigenschaften wie übertragen
17.11.2021 16:47:56
t_r
Hallo Tobias,
vielen Dank für Deine Rückmeldung und den verlinkten Artikel.
Weißt Du auch, wie ich die Eigenschaften - in meinem Fall: die eines "Border"-Elements - vollständig übertrage? Um meinen Code schlank zu halten, würde ich am liebsten die Eigenschaften der Zellenvorlage insgesamt übernehmen, ohne zuvor alle möglichen Eigenschaften mittels Variablen abzufragen und zwischenzuspeichern... daher hoffte ich, mit "SET" dies zu lösen...
Vielleicht weißt Du Rat... vielen Dank.
Grüße,
t_r
AW: VBA - Rahmeneigenschaften wie übertragen
17.11.2021 20:10:39
Tobias
Hallo t_r,
du kannst die Kopierfunktion in eine einzelne Sub auslagern.

Sub BorderKopie(ByRef pZiel As Range, ByRef pQuelle As Range)
With pZiel
.Borders(xlEdgeLeft).Color = pQuelle.Borders(xlEdgeLeft).Color
.Borders(xlEdgeLeft).LineStyle = pQuelle.Borders(xlEdgeLeft).LineStyle
End With
End Sub
Dort müsstest du dir dann alle relevanten Einstellungen raussuchen und das dann demendsprechend mit

Call BorderKopie(Range("A4"), Range("A2")
So bleibt dein Code ansehnlich!
Schöne Grüße
Tobias
Anzeige
AW: VBA - Rahmeneigenschaften wie übertragen
17.11.2021 16:43:47
t_r
Hallo Rudi,
vielen Dank für's Mitdenken - der Code-Schnipsel ist nur ein Ausschnitt, die Formatkopie würde nicht funktionieren...
Grüße,
t_r
AW: VBA - Rahmeneigenschaften wie übertragen
16.11.2021 21:27:13
ralf_b
damit gings zumindest bei mir

Sub FormatRandKopie()
Dim brd1 As Range
With ActiveWorkbook.Worksheets("Tabelle1")
Set brd1 = .Cells(2, 2)
With .Cells(2, 4)
.Borders.LineStyle = brd1.Borders.LineStyle
.Borders.Weight = brd1.Borders.Weight
End With
End With
Set brd1 = Nothing
End Sub

"Borders" selbst ist schreibgeschützt! owt
16.11.2021 21:38:39
ralf_b
Eigenschaften übertragen?
17.11.2021 16:41:25
t_r
Hallo Ralf_b,
vielen Dank für Deine Antwort und den Nachtrag.
Dein Code funktioniert auch bei mir. Eine Einschränkung jedoch: Es wird der Rahmen nur dann eingelesen und übertragen, wenn er der Vorlagezelle als "Rahmen" zugewiesen wurde. Formatiere ich hingegen eine einzelne Rahmenlinie oder auch mehrere Einzellinien, wird nichts übertragen.
Wie kann ich unter VBA sämtliche "border"-Eigenschaften der Zelle übertragen, ohne sie einzeln abzufragen und in Variablen zwischenspeichern zu müssen?
Das war mein eigentliches Ansinnen.
Fällt Dir dazu etwas ein?
Vielen Dank & Grüße,
t_r
Anzeige
AW: Eigenschaften übertragen?
17.11.2021 19:39:50
ralf_b
nein, leider nur das was du nicht möchtest, nämlich alles einzeln zuzuweisen.
Nur mal so am Rande sein erwähnt das Excel ein Rechenprogramm ist und nicht dafür konzipiert jedes kleine Fitzelchen hintenrum zu manipulieren. Wir können schon froh sein, wie viel Vba zuläßt. Aber es muß auch klar sein, das es eben nicht für Jeden ausgefallen Wunsch den kürzesten Weg zur Verfügung stellt.
Schrein dir eine Funktion, in der du alle Rahmenelemente von einer Quellrange an eine Zielrange übergibst und rufe sie bei Bedarf auf. Einmal Arbeit und dann nur noch Function aufrufen und zugucken.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige