Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
VBA Rahmen setzen
11.10.2013 09:55:56
Thomas
Hallo zusammen,
ich brächte einen VBA-Code der folgendes auslöst.
Wenn im Bereich A7:NG100 die Zelle nicht leer ist, dann umrahmen.
Habe es schon zum Teil mit dem Makrorecorder versucht. Allerdings läuft das Makro so endlos...
Vielen Dank!
Gruß
Thomas
Mein Versuch...
Sub Umrahmen()
Dim Zelle As Range
For Each Zelle In Sheets("Anwesenheit").Range("A7:NG100").Cells
If Zelle.Value  "" Then 'ist nicht leer
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End If
Next
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Rahmen setzen
11.10.2013 10:12:35
Bastian
Hallo Thomas,
den zu Bereich, den die Schleife abklappert, kann man mit specialCells weiter einschränken.
Das sollte dann deutlich schneller gehen:
Versuch mal, die Schleife so zu formulieren:
Option Explicit
Sub Rahmen()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Range("A7:NG100")
For Each Zelle In Union(Bereich.SpecialCells(xlCellTypeFormulas), _
Bereich.SpecialCells(xlCellTypeConstants))

Gruß, Bastian

AW: VBA Rahmen setzen
11.10.2013 10:22:06
Thomas
Hallo Basti,
ich habe den Code geändert.
Bekomme allerdings in der Zeile:
For Each Zelle In Union(Bereich.SpecialCells(xlCellTypeFormulas), _
Bereich.SpecialCells(xlCellTypeConstants))
Einen Laufzeitfehler (1024)
Gruß
Thomas
Sub Rahmen()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Range("A7:NG100")
For Each Zelle In Union(Bereich.SpecialCells(xlCellTypeFormulas), _
Bereich.SpecialCells(xlCellTypeConstants))
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Next
End Sub

Anzeige
AW: VBA Rahmen setzen
11.10.2013 10:36:22
Bastian
Hallo Thomas,
dann hast Du in dem Bereich keine Werte (alle Zellen leer?)
Der Code erkennt Zahlen, Text und Formeln in den Zellen. Nur diese Zellen werden von der Schleife abgearbeitet. Alle leeren Zellen werden ignoriert. Der Laufzeitfehler kommt, wenn alle Zellen leer sind.
Vielleicht ist der Bereich auch nicht richtig definiert.
Ich hatte das Tabellenblatt vergessen:
Set rngBereich = Sheets("Anwesenheit").Range("A7:NG100")
Gruß, Bastian

AW: VBA Rahmen setzen
11.10.2013 10:36:41
UweD
Hallo
geht auch ohne Schleife...
Sub Rahmen()
On Error GoTo Fehler
With Cells ' reset
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
End With
With Union(Range("A1:NG100").SpecialCells(xlCellTypeConstants, 23), _
Range("A1:NG100").SpecialCells(xlCellTypeFormulas, 23))
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD

Anzeige
AW: VBA Rahmen setzen
11.10.2013 10:44:28
hary
Moin Uwe
Reicht doch auch!?
.Borders.LineStyle = xlNone 'Rahmen entfernen
 .BorderAround Weight:=xlThin 'Rahmen setzen

gruss hary

AW: VBA Rahmen setzen
11.10.2013 10:47:59
Thomas
Danke erstmal,
aber die Lösung von Uwe beachtet nicht ob die Zelle leer ist oder nicht.
Gruß
Thomas

AW: VBA Rahmen setzen
11.10.2013 10:51:14
Bastian
Hallo Thomas,
doch, der Code von Uwe funktioniert.
Es werden ja die gleichen "SpecialCells" Kriterien verwendet.
Nur halt ohne Schleife, was noch schneller sein dürfte.
Gruß, Bastian

AW: VBA Rahmen setzen
11.10.2013 10:56:06
Thomas
Ich habe den Code von Uwe in einem neuen Arbeitsblatt getestet.
Bei mir meldet sich die MSGbox obwohl Zellen in dem Bereich gefüllt sind.
Gruß
Thomas

Anzeige
AW: VBA Rahmen setzen
11.10.2013 10:59:09
UweD
hallo
lad doch mal eine Musterdatei hoch
Gruß UweD

AW: VBA Rahmen setzen
11.10.2013 11:20:58
UweD
Hallo
Hier mal eine funktionierende Möglichkeit.
https://www.herber.de/bbs/user/87616.xlsm
Sub Rahmen()
On Error GoTo Fehler
'reset
With ActiveSheet
.Cells.Borders.LineStyle = xlNone
MsgBox "alle Rahmen weg"
With Union(.Range("A1:NG100").SpecialCells(xlCellTypeConstants, 23), _
.Range("A1:NG100").SpecialCells(xlCellTypeFormulas, 23))
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD

Anzeige
AW: VBA Rahmen setzen
11.10.2013 11:00:30
UweD
Hallo hary
... .Cells.Borders.LineStyle = xlNone das klappt
... .BorderAround Weight:=xlThin dann wird bei einem Zellbereich nur außenherum gerahmt und innen nicht

@Uwe Danke gruss owT
11.10.2013 11:54:05
hary
.

AW: @Uwe Danke gruss owT
11.10.2013 15:02:49
UweD
Hallo
weiss nicht, woran es liegt.
Ändere ich irgendeine Zelle, dann geht es
:-(

AW: @Uwe Danke gruss owT
11.10.2013 15:29:44
Thomas
Hallo Uwe,
ich habe es jetzt mit Bedingter Formatierung gelöst.
Danke für deine Mühe.
Schöne Grüße & ein schönes Wochenende.
Thomas
Anzeige

59 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige