Anfängerfehler mit Variable??

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
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

Beiträge aus den Excel-Beispielen zum Thema " Anfängerfehler mit Variable??"