Herbers Excel-Forum - das Archiv
Anfängerfehler mit Variable??
Betrifft: Anfängerfehler mit Variable??
von: Denise
Geschrieben am: 02.10.2003 15:05:53
Hey Excel-Könner,
ich habe hier ein ganz simples Makro, dass über jede zweite Zeile (ab Zeile 3) Rahmen setzen soll. Meine While Schleife gibt mir aber eine Fehlermeldung bei diesem Ausdruck zurück: Range("Aa:BIa").Select, wobei a, die Laufvariable der While-Schleife ist. Wie soll ich es sonst schreiben?
Denni
------------------------------------------------------------------------------
Sub Rahmen_setzen()
Dim a As Integer
a = 3
While a <= 21
Range("Aa:BIa").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
a = a + 2
Wend
End Sub
Betrifft: AW: Anfängerfehler mit Variable??
von: Hajo_Zi
Geschrieben am: 02.10.2003 15:13:16
Hallo Denise
in VBA kann zu 99% auf select, Activate usw. verzichtet werden.
Option Explicit
Sub Rahmen_setzen()
Dim a As Integer
a = 3
While a <= 21
With Range(Cells(a, 1), Cells(a, 61))
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
a = a + 2
End With
Wend
End Sub
Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
http://home.media-n.de/ziplies/
Betrifft: AW: Anfängerfehler mit Variable??
von: denise
Geschrieben am: 02.10.2003 15:29:02
Hey Hajo,
Deine Variante hat mir gut gefallen, und ich hab's gleich probiert, aber irgendwie macht es nicht ganz was es soll...
Der ganze Rahmencode soll machen für Zeile 3, 5, 7, 9, ... , 21
immer oben und unten eine Linie, und zwar für die ganze Zeile bis Spalte 61
Aber das Makro führt die Anweisung immer nur für die markierte Zelle aus?!
Hier nochmal der angepasste Code:
Sub Rahmen_setzen()
MsgBox "hallo 1"
Dim a As Integer
a = 3
While a <= 21
MsgBox "hallo 2"
With Range(Cells(a, 1), Cells(a, 61))
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
a = a + 2
End With
Wend
End Sub
Betrifft: Bin blöd... tut mir leid... funktioniert wunderbar
von: denise
Geschrieben am: 02.10.2003 15:35:17
*
Betrifft: AW: Anfängerfehler mit Variable??
von: Hans W. Herber
Geschrieben am: 02.10.2003 15:14:15
Hallo Denise,
ein paar grundlegende Dinge:
- Wird mit Zeilen-/Spaltenvariablen gearbeitet, sollte die Schleife über die Cells-Methode geführt werden
- Selektiere nicht, sprich das Objekt direkt an
- Arbeite mit With-Rahmen
- Verwende statt der While- die Do While-Schleife
Aber das nur nebenbei. Der Code:
Sub Rahmen_setzen()
Dim iRow As Integer
iRow = 3
Do While iRow <> 21
With Cells(iRow, 1)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
End With
iRow = iRow + 2
Loop
End Sub
gruss hans
Betrifft: AW: Anfängerfehler mit Variable??
von: PeterW
Geschrieben am: 02.10.2003 15:14:45
Hallo Denni,
versuch es mal so:
Range(Cells(a, 1), Cells(a, 61).Select
Gruß
Peter