Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

hübsche Schleife

hübsche Schleife
Hunderotz
Alle zusammen,
ich habe einen Excelimport, der immer gleich formatiert werden muss, weshalb ich ein Makro hinterlegen wollte. Die ersten Schritte der Formatierung laufen auch wie gewünscht.
Im nächsten Schritt soll links neben dem Wort "Saldo" soll eine Sverweis-Formel eingesetzt werden sowie in Leerzeile in der darunter liegenden Zeile. Problematisch ist, dass die Anzahl der "Salden" variiert und ich nicht in der Lage bin, eine Schleife im Makro zu hinterlegen, die sich die Anzahl der Saldo merkt und den Vorgang entsprechend oft wiederholt oder nach dem letzten Saldo aufhört.
Kann mir bitte jemand helfen eine derartige Schleife ins Makro einzubauen? Vielen Dank.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Bin zwar Tierfreund...
02.08.2010 10:35:06
Ramses
Hallo
... aber ein wenig Anstand sollte doch schon noch sein. Oder ?
Der Name ist einfach inakzeptabel.
Zeig mal dein Makro
Gruss Rainer
AW: Bin zwar Tierfreund...
02.08.2010 15:17:55
Hunderotz
Hallo Rainer,
deiner Bemerkung stimme ich zu, sorry!
Nachstehend das Makro mit dem eingegrenzten Bereich welcher sich wiederholen soll, bis hinter jedem "Saldo" ein Leerzeile steht (die genannte Sverweis-Formel müsste ich noch hinzufügen).
Columns("A:A").ColumnWidth = 7.71
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("I:I").EntireColumn.AutoFit
Columns("J:J").EntireColumn.AutoFit
Columns("K:K").EntireColumn.AutoFit
Columns("M:M").EntireColumn.AutoFit
Range("L:L,N:N").Select
Selection.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
Range("P3").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-14]="""","""",VLOOKUP(ABS(SUM(RC[-14]:RC[-13])-222),[VERSNr.xls]Tabelle1!C1:C2,2,0))"
Range("P3").Select
Selection.AutoFill Destination:=Range("P3:P346"), Type:=xlFillDefault
Range("P3:P2000").Select
Range("Q3").Select
Selection.FormulaR1C1 = "=IF(RC[-6]="""","""",IF(RC[-6]""EUR"",1,0))"
Selection.AutoFill Destination:=Range("Q3:Q2000"), Type:=xlFillDefault
Range("A3:O2000").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUMME($Q3)=1"
Selection.FormatConditions(1).Interior.ColorIndex = 15
ActiveWindow.SmallScroll Down:=9
Columns("Q:Q").Select
Selection.EntireColumn.Hidden = True
ANFANG DER SCHLEIFE
Cells.Find(What:="saldo", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ENDE DER SCHLEIFE
ActiveCell.Offset(1, 1).Range("A1").Select
Vielen Dank für deine Hilfe!!
Anzeige
AW: Bin zwar Tierfreund...
02.08.2010 16:21:20
Ramses
Hallo
hab dir das Makro mal etwas optimiert.
Ist zwar ungetestet, sollte aber tun
Sub test()
    Dim myRng As Range, rngAddress As String
    On Error GoTo myErrHandler
    'Ausschalten der Bildschirmaktualisierung und Berechnung.
    'Beim einfügen der Formel wird jedesmal neu berechnet und das kostet Zeit
    'ebenso die vielen Selects und Bildsschirmänderungen
    With Application
        .ScreenUpdating = False
        .Calculate = xlManual
    End With
    Columns("A:A").ColumnWidth = 7.71
    Columns("B:M").EntireColumn.AutoFit
    Range("L:L,N:N").NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
    With Range("P3")
        .FormulaR1C1 = "=IF(RC[-14]="""","""",VLOOKUP(ABS(SUM(RC[-14]:RC[-13])-222),[VERSNr.xls]Tabelle1!C1:C2,2,0))"
        .AutoFill Destination:=Range("P3:P346"), Type:=xlFillDefault
    End With
    With Range("Q3")
        .FormulaR1C1 = "=IF(RC[-6]="""","""",IF(RC[-6]<>""EUR"",1,0))"
        .AutoFill Destination:=Range("Q3:Q2000"), Type:=xlFillDefault
    End With
    With Range("A3:=2000")
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=SUMME($Q3)=1"
        .FormatConditions(1).Interior.ColorIndex = 15
    End With
    Columns("Q:Q").EntireColumn.Hidden = True
    
    'ANFANG DER SCHLEIFE
    Set myRng = Cells.Find(what:="Saldo", after:=ActiveCell, LookIn:=xlFormulas, _
    lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False)
    If Not myRng Is Nothing Then
        rngAddress = myRng.Address
        Do
            'Application.Goto myRng, True
            myRng.Offset(1, 0).Rows("1:1").EntireRow.Insert
            On Error Resume Next
            Set myRng = Cells.FindNext(after:=ActiveCell)
            If myRng.Address = rngAddress Then Exit Do
            Err.Clear
        Loop
    End If
    'ENDE DER SCHLEIFE
    
    errExit:
    With Application
        .ScreenUpdating = True
        .Calculate = xlAutomatic
    End With
    Range("A1").Select
    Exit Sub
    
    myErrHandler:
    MsgBox "Es ist ein Fehler aufgetreten: " & vbclrf & Err.Number & ": " & Err.Description
    Resume errExit
End Sub

Wo allerdings die eingangs erwähnte SVERWEIS Formel ist die neben "Saldo" zur Angzeige kommen soll, habe ich nicht gefunden
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige