AW: Probleme beim Setzen von Rahmen Eigensch. in VBA
15.01.2013 10:16:55
Rahmen
Hallo Richard,
ich hab unter Excel 2010 (=nächster Verwandter zu 2007) mal versucht, dein Problem zu reproduzieren mit 3 Testdateien.
Der von dir beschriebene Fehler trat aber nicht auf. Jedoch wurde die Makro-Ausführung extrem langsam, wenn der Bereich "Commentary" sehr viele Zellen (mehrere 100000) beinhaltet. Möglicherweise kommt es auch bei vielen Dateien tatsächlich zu einem Speicherplatz-Problem, weil Excel seinen Datenmüll nicht sauber verarbeitet.
Man kann den Code noch etwas vereinfachen. Außerem sollte man den Tabellennamen in Hochkommata (') einfassen, damit Tabellennamen mit Leer- und Sonderzeichen fehlerfrei verarbeitte werden.
Alternativ kann man auch mit einem Worksheets-Objekt arbeiten. Dann vereinfacht sich die Code-Schreibweise für die Bereiche, siehe Variante.
Gruß
Franz
Nachfolgend meine Testmakros:
Sub FormatierenBorders()
Dim wb As Workbook, wks As Worksheet
Dim varDir
Dim strFile As String, n As String
strFile = Dir("C:\Users\Public\Test\Grafiken\Formatieren*.xlsx")
Application.ScreenUpdating = False
Do Until strFile = ""
Set wb = Workbooks.Open(Filename:="C:\Users\Public\Test\Grafiken\" & strFile)
For Each wks In wb.Worksheets
n = wks.Name
Select Case n
Case "Tabelle1", "Tabelle1 (2)"
'Zellrahmen formatieren
With Range("'" & n & "'!Commentary").Borders
.LineStyle = xlContinuous
.Weight = xlHairline
End With
Range("'" & n & "'!Commentary").Borders(xlDiagonalDown).LineStyle = xlNone
Range("'" & n & "'!Commentary").Borders(xlDiagonalUp).LineStyle = xlNone
End Select
Next
wb.Close savechanges:=True
Set wb = Nothing
Set wks = Nothing
strFile = Dir
Loop
Application.ScreenUpdating = True
End Sub
Sub FormatierenBorders_Var()
Dim wb As Workbook, wks As Worksheet
Dim varDir
Dim strFile As String
strFile = Dir("C:\Users\Public\Test\Grafiken\Formatieren*.xlsx")
Do Until strFile = ""
Set wb = Workbooks.Open(Filename:="C:\Users\Public\Test\Grafiken\" & strFile)
For Each wks In wb.Worksheets
Select Case wks.Name
Case "Tabelle1", "Tabelle1 (2)"
'Zellrahmen formatieren
With wks.Range("Commentary").Borders
.LineStyle = xlContinuous
.Weight = xlHairline
End With
wks.Range("Commentary").Borders(xlDiagonalDown).LineStyle = xlNone
wks.Range("Commentary").Borders(xlDiagonalUp).LineStyle = xlNone
End Select
Next
wb.Close savechanges:=True
Set wb = Nothing
Set wks = Nothing
strFile = Dir
Loop
End Sub