Clever-Excel-Forum

Normale Version: Rahmen von Zelle bis nächsten gefüllen Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey!

Ich würde gerne innerhalb einer Spalte einen Rahmen von A2 bis zu nächsten gefüllte Zelle ziehen und ab der nächsten von neuem also:

A2 > A3 > A4
A5>A6
A7
A8>A9>A10

Ich weiß zwar wie ich einen Rahmen ziehe:

base.UsedRange.Borders.LineStyle = xlContinuous


Aber nicht wie ich bis zur nächsten gefüllten Zelle komme.



Beste Grüße
Hallo,

Deine verschiedenen Angaben zumindest für mich in Gänze teils widersprüchlich bzw. nicht eindeutig.

Vielleicht stellst Du mal eine kleine Datei ein, wo Du händisch Deine Zellen entsprechend formatiert hast.
Hallöchen,

z.B. so von A1 zur nächsten belegten Zelle, wenn ach A1 Leerzeichen beginnen. Ansonsten wird es die letzte belegte Zelle des ab A1 gefüllten Bereichs.
Cells(1, 1).End(xlDown).Address

Welche der Beiden Varianten es ist, könntest Du über eine Prüfung der vorherigen Zelle herausbekommen. Kommt nach der Zelle nix mehr, landest Du mit dem nächsten Sprung am Tabellenende.
Hey!

Vielen Dank für eure Antworten und Entschuldigung für meine mangelhafte Beschreibung.

Das problembezieht sieht auf einen ganzen Bereich, aber wenn ich die Lösung innerhalb einer Spalte erzeuge, kann ich diese auch auf einen ganzen Bereich ableiten.

Also:

Ich habe Spalte A, diese besitzt Zellen die leer sind.
So ist A2 gefüllt, und A3 und A4 beispielweise leer.
Nun möchte ich einen Ramen von A2 bis zur letzten leeren (einschließlich dieser) oder bis zur nächsten efüllten Zelle (ausschließlich dieser) ziehen.
Und dann geht es ab A5 wieder weiter. Es ist also eine Schleife nötig.

Wie gesagt, den Befehl zum ziehen eines Rahmens habe ich bereits herausgefunden. Aber welchen Schleifentyp benutze ich nun und wie schaut das weitere Prozedere aus?
Da ich noch kompletter Anfänger bin, tue ich mich sehr schwer.

Was fange ich nun mit diesem Befehl an?:

Cells(1, 1).End(xlDown).Address



Beste Grüße
(29.12.2016, 15:53)joshua schrieb: [ -> ]Was fange ich nun mit diesem Befehl an?:
Cells(1, 1).End(xlDown).Address

Na ja, du trägst ihn in den VBA-Editor ein ...
Und wenn du Neopas Aufforderung nachgekommen wärst, könnten wir es dir sogar am "lebenden Beispiel" zeigen ...
Hallo Joshua,

machen wir mal einen Step weiter. Bisschen was hatte ich ja schon dazu erklärt. Fülle mal ein paar Zellen in Spalte A aus, mit Leerzeilen dazwischen und auch mal mehreren gefüllten Zellen nacheinander, und lasse diesen Code drüber laufen:

Sub test()
For icnt = 1 To Cells(Rows.Count, 1).End(xlUp).Row
MsgBox Cells(icnt, 1).End(xlDown).Address
icnt = Cells(icnt, 1).End(xlDown).Row
Next
End Sub

Schaue Dir dabei die Ausgeben der Msgbox an und vergleiche sie ggf. mit den Einträgen in Spalte A. Dann machen wir weiter ... Smile
Ohne VBA:

1. In gesamter Spalte Rechts-Links als normales Format
2. mit bedingter Formatierung: "Wenn Zelle gefüllt, Oben-Rechts-Links"
(30.12.2016, 09:55)schauan schrieb: [ -> ]Hallo Joshua,

machen wir mal einen Step weiter. Bisschen was hatte ich ja schon dazu erklärt. Fülle mal ein paar Zellen in Spalte A aus, mit Leerzeilen dazwischen und auch mal mehreren gefüllten Zellen nacheinander,  und lasse diesen Code drüber laufen:

Sub test()
For icnt = 1 To Cells(Rows.Count, 1).End(xlUp).Row
MsgBox Cells(icnt, 1).End(xlDown).Address
icnt = Cells(icnt, 1).End(xlDown).Row
Next
End Sub

Schaue Dir dabei die Ausgeben der Msgbox an und vergleiche sie ggf. mit den Einträgen in Spalte A. Dann machen wir weiter ... Smile

Hey, vielen Dank für die Hilfe!
Also die Messagebox zeigt mir nun alle gefüllten Zellen der Spalte A an.
Wie kriege ich es nun hin, dass nach dieser Auswahl der zu formatierende Bereich definiert wird?


Entschuldigt, dass ich mich so schwer tue. Ich hatte leider bisher sehr wenig/ kein Kontakt zu VBA, entsprechend besitze ich auch keine Erfahrung
Hallöchen,

es ist auch unabhängig vom VBA nicht ganz einfach Huh

So könnte es funktionieren:

Code:
Sub test()
icnt = 2
Do While icnt < Cells(Rows.Count, 1).End(xlUp).Row
If Cells(icnt, 1).Borders(xlEdgeBottom).LineStyle <> xlContinuous Then
  Range(Cells(icnt, 1), Cells(icnt, 1).End(xlDown)).BorderAround (xlContinuous)
End If
icnt = Cells(icnt, 1).End(xlDown).Row
Loop
End Sub