Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo zusammen, ich schon wieder mit einer Frage bei der ihr mir bestimmt helfen könnt. Für eine Tabellenvorlage sollen mehrere horizontal / vertikale Linien an verschiedenen Stellen eingefügt werden. Habe es mal an einem Beispiel versucht. Mit einer horizontalen Linie bekomme ich das hin, benötige diese Linien aber an verschiedenen Stellen, siehe Beispiel-Code. Wie bekomme ich das mit eine Schleife hin? Zählschleife, Union usw. Was wäre am sinnvollsten und wie setzt man so etwas um? Code: Sub FormatColRows() Dim rngBereich As Range Dim rngZelle As Range Dim rngBereich2 As Range With ActiveSheet .Name = "Neue Vorlage" 'Spaltenbreite .Range("A:B,D:D,H:I,L:M,O:P,T:U,X:Y").ColumnWidth = 1 .Range("C:C,E:G,J:K,N:N,Q:S,V:W,Z:AA").ColumnWidth = 11.71 'Horizontal - Linien .Range("C16:C16,E16:G16,J16:K16,N16:N16,Q16:T16,V16:W16,Z16:AA16").Activate .Range("C30:C30,E30:G30,J30:K30,N30:N30,Q30:T30,V30:W30,Z30:AA30").Activate .Range("C32:C32,E32:G32,J32:K32,N32:N32,Q32:T32,V32:W32,Z32:AA32").Activate Set rngBereich = .Range("C16:C16,E16:G16,J16:K16,N16:N16,Q16:T16,V16:W16,Z16:AA16") With rngBereich With .Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End With 'Vertikal - Linien .Range("C13:C32,H13:H32,O13:O32,T13:T32,X13:X32").Activate Set rngBereich2 = .Range("C13:C32,H13:H32,O13:O32,T13:T32,X13:X32") With rngBereich2 With .Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End With 'Zeilenhöhe .Range("A1:A100").RowHeight = 15 End With End Sub
Registriert seit: 05.09.2017
Version(en): 2013
Hallo, z.B. so: Code: Set rngBereich = Union(Range("C16,E16:G16,J16:K16,N16,Q16:T16,V16:W16,Z16:AA16"), _ Range("C30,E30:G30,J30:K30,N30,Q30:T30,V30:W30,Z30:AA30"), _ Range("C32,E32:G32,J32:K32,N32,Q32:T32,V32:W32,Z32:AA32"))
With rngBereich With .Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End With
Und das Activate Gedöns bitte weglassen. Gruß Werner
Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Werner,
vielen Dank, funktioniert bestens.
Trotzdem noch eine Frage. Könnte man die einzelnen Bereiche zuerst einem Namen zuweisen, wie rngBereich1, rngBereich2..usw. und dann in eine Union packen. Der Grund ist einfach der, dass die Linien unterschiedlich sein können, also doppelt, gestrichelt usw. und dann in einer Schleife entsprechen eingefügt werden müssen.
Oder gibt es da eine elegantere Lösung?
Registriert seit: 05.09.2017
Version(en): 2013
Hallo, keine Ahnung was du da mit einer Schleife willst. Du legst dir einfach z.B. drei Bereiche an: Code: Set rngBereichEinfach = Union(Range(.....), Range(.....), Range(....)) Set rngBereichDoppelt = Union(Range(....), Range(....), Range(...)) set rngBereichGestrichelt = Union(Range(...), Range(...), Range(...))
Und dann für die Linien: Code: With rngBereichEinfach With .Borders.... 'Code für normale Linie End With With rngBereichDoppelt With .Borders.... 'Code für doppelte Linien End With With rngBereich With .Borders.... 'Code für gestrichelte Linien End With End With
Gruß Werner
Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Werner, vielen Dank, funktioniert super. Nun ja ich suche immer eine Lösung die ich verstehen kann , oder mögliche Varianten. Will ja noch weiter dazulernen! Habe aber noch eine Anfängerfrage zu der Range-Zusammenstellung. Kann man sich solche mühsam zusammengebastelte Union-Bereiche auch irgendwie einfacher generieren, ohne dass man im code jeden Zellbereich einzel eingeben muss?
Registriert seit: 05.09.2017
Version(en): 2013
Hallo, das ginge z.B. mit einer Schleife über die Spalten und Zeilen. Dazu müsste aber eine Regelmäßigkeit vorliegen. Das sehe ich bei dir aber nicht. Eine Möglichkeit auch für deine Vorgaben: in einem ersten Schritt erstellst du einen Rangebereich, der alle betroffenen Spalten umfasst im zweiten Schritt erstellst du einen weiteren Rangebereich, der alle betroffenen Zeilen umfasst den eigentlichen "Bearbeitungsbereich" erstellst du dann indem du mit Intersect die Schnittmenge zwischen Spaltenbereich und Zeilenbereich bildest Code: Public Sub aaa() Dim raSpalten As Range, raZeilen As Range, raBereich As Range
Set raSpalten = Range("C:C,E:G,J:K,N:N,Q:T,V:W,Z:AA") Set raZeilen = Range("16:16,30:30,32:32") Set raBereich = Intersect(raSpalten, raZeilen) With raBereich.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With
Set raSpalten = Nothing: Set raZeilen = Nothing: Set raBereich = Nothing End Sub
Gruß Werner
Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• sharky51
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
(05.01.2020, 14:25)sharky51 schrieb: Für eine Tabellenvorlage sollen mehrere … eingefügt werden. Moin und HimmelHergottSakrament nochoimol! (sorry, bin kein Bayer) Eine Vorlage ist eine Vorlage ist eine Vorlage! Für die hat Excel sogar ein eigenes Dateiformat vorgesehen. Also: Erstelle Dir die "richtige" Vorlage mit allen Formeln und Formatierungen speichere sie als Vorlage (.xltx oder .xltm) ab und öffne zukünftig eine neue Datei auf Basis dieser Vorlage. Warum kennen grob 99% der Excel-Anwender diese Variante nicht? https://support.office.com/de-de/article...8baec39e1eGruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
(05.01.2020, 20:10)RPP63 schrieb: Warum kennen grob 99% der Excel-Anwender diese Variante nicht? https://support.office.com/de-de/article...8baec39e1e Hi Ralf, Genau das ist das Grundproblem, es fehlen die Grundlagen der Officeanwendungen, denn vergleichbares gilt ja auch in Word. Und Firmen machen heute aus Kostengründen offenbar keine ausreichenden Schulungen mehr oder schicken die Leute zu solchen Seminaren. Und Learning bei Work ist offenbar auch nicht gefragt, die Hilfefunktionen der Anwendungen werden leider auch kaum genutzt. Onlinetutorials für viele unbekannt. Motto: es gibt doch Foren, die helfen schon weiter.
Mit freundlichen Grüßen :) Michael
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Werner,
super, werde das auch noch testen und dann übernehmen.
Vielen Dank nochmals für Deine Hilfe.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
05.01.2020, 20:40
(Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2020, 20:41 von RPP63.)
Ja, ist schon schlimm genug, dass ich mir den Link in den Lesezeichen gespeichert habe. Mindestens einmal pro Woche wird er kopiert. In der Regel geht es dann ja darum, per VBA die Ausfüll-Zellen der "Vorlage" wieder zu löschen …
Und ja, ich kriege Rücken, Schätzeken, wenn ich dann immer wieder die (durchaus gut gemeinten) Lösungsvorschläge sehe. (Sorry Werner, ich schätze Dich, aber hier war es eher ein Griff ins Klo …)
Bleibt flauschig!
… und jetzt sehe ich gerade die begeisterte Antwort vom kleinen Hai …
*NoComment*
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
|