Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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
    

    Grußformel

    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


     

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