6.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

durch ein Makro werden neue Zeilen eingefügt und in SpalteC jeweils mit Inhalten versehen. Die Anzahl der neu eingefügen Zeilen ist dabei variabel.

Ich möchte um den Gesamten Bereich, Spalte C, der neu eingefügten Zeilen automatisch einen Rahmen setzen lassen. Mein Gedanke war dabei den Bereich über die letzte Zeile zu ermitteln, leider ohne Erfolg. Hier mein Ansatz:

lzeile = Sheets("Prämissen").Cells(Rows.Count, 3).End(xlUp).Row

With Range("C6" & lzeile).Borders
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With

Beim Ausführen des Makros tut sich leider nichts.
Kann mir jemand sagen, wo mein Fehler liegt?

Vielen Dank im Voraus!

Mfg peyd

13 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

mein Vorschlag

Option Explicit

Sub test()
Dim lzeile As Long
lzeile = Sheets("Prämissen").Cells(Rows.Count, 3).End(xlUp).Row
With Range("C6:C" & lzeile).Borders
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

"C6" & lzeile korrigiert "C" & lzeile

angenommen die letzte zeiöe waee 77

dann ist dein rahmen bei zeile 677

die 6 ist daher ueberfluessig

sollten 6 zeilen als Kopfzeilen dienen,waere zu der variablen lzeile + 6 zu addieren

gruss nighty
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo peyd,

mit
Range("C6" & lzeile)

definierst du keinen Bereich, um den ein Rahmen gezogen werden könnte!

Wenn, dann z.B. so:
With Sheets("Prämissen").Range("C6:C" & lzeile).Borders

oder
With Sheets("Prämissen").Range(Cells(6, 3), Cells(lzeile, 3)).Borders


Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

oops, da waren ja direkt zwei schneller ;-).

Gruß

M.O.
0 Punkte
Beantwortet von
hallo all,

Danke für die hilfreichen korrekturen. Alle 3 Ansätze funktionieren auch, allerdings wird nicht der gesamte Bereich umrahmt sondern jede einzelne Zelle im Bereich. Wie müsste der Befehlt lauten wenn wirklich nur der komplette Bereich mit einem Rahmen umgeben sein soll?

Danke schonmal ;)
Mfg peyd
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Peyd,

versuch es mal so:

With Range("C6:C" & lzeile)
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlMedium
.Borders.ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

perfekt! vielen Dank ;-)

Mfg peyd
0 Punkte
Beantwortet von
Hallo nochmal,

Bräuchte noch ein kleines extra.

Ich möchte die Spalte C nach dem Begriff "Montage" durchsuchen lassen und wenn der Begriff gefunden wird, soll diese Zelle mit einem Rahmen versehen werden.

Vielen Dank im voraus!

Mfg peyd
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo peyd,
vielleicht so:

Sub Rahmen()
Dim Bereich, Gefunden, Zelle
Dim ErsteZelle
Set Bereich = Columns("C:C")
Set Zelle = Bereich.Find("Montage", lookat:=xlWhole)
If Not Zelle Is Nothing Then
ErsteZelle = Zelle.Address
Set Gefunden = Zelle
Do
Set Zelle = Bereich.FindNext(after:=Zelle)
If Zelle.Address <> ErsteZelle Then
Set Gefunden = Union(Gefunden, Zelle)
End If
Loop Until Zelle.Address = ErsteZelle
Gefunden.Borders.LineStyle = xlContinuous
End If
End Sub

Gruß
fedjo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo peydd,

noch 'ne Altenative

Option Explicit

Sub rahmen()
Dim rngC As Range
For Each rngC In Range("C1:C100") 'anpassen
If rngC.Value = "Montage" Then
rngC.Borders.LineStyle = xlContinuous
End If
Next
End Sub


Gruß
Rainer
...