Herbers Excel-Forum - das Archiv

Anfängerfehler mit Variable??

Bild

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

Bild

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/

Bild

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

Bild

Betrifft: Bin blöd... tut mir leid... funktioniert wunderbar
von: denise
Geschrieben am: 02.10.2003 15:35:17
*
Bild

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
Bild

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
 Bild
Excel-Beispiele zum Thema " Anfängerfehler mit Variable??"
Variablenübergabe in andere Arbeitsmappen Text aus Textbox in Variable
Einlesen von Zellinhalten in Variablen Variable in Formel einbauen
Variable in Excel-Formel einbauen. Text aus UserForm-Textbox in Variable einlesen
Variable in Zwischenablage übernehmen Variablen in einer temporären Textdatei zwischenspeichern
Zellinhalte in Verbindung mit Variablen in Textdatei schreiben Feldvariable auf Inhalt testen