Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Anzeige
Inhaltsverzeichnis

Anfängerfehler mit Variable??

Anfängerfehler mit Variable??
02.10.2003 15:05:53
Denise
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anfängerfehler mit Variable??
02.10.2003 15:13:16
Hajo_Zi
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/

Anzeige
AW: Anfängerfehler mit Variable??
02.10.2003 15:29:02
denise
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

Anzeige
Bin blöd... tut mir leid... funktioniert wunderbar
02.10.2003 15:35:17
denise
*
AW: Anfängerfehler mit Variable??
02.10.2003 15:14:15
Hans W. Herber
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
Anzeige
AW: Anfängerfehler mit Variable??
02.10.2003 15:14:45
PeterW
Hallo Denni,

versuch es mal so:
Range(Cells(a, 1), Cells(a, 61).Select

Gruß
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige