Excel - von unten nach oben suchen und Zellen löschen

  • VBScript

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von felix_gorgas.

    Excel - von unten nach oben suchen und Zellen löschen

    Hallo,

    ich versuche gerade meine vorhandenen Scripte etwas anzupassen. Hierzu möchte ich gern folgendes:

    Ich habe eine Tabelle mit verschiedenen Zeilen und Spalten (wer hätte das gedacht^^). Durch eine Suche lasse ich mir Leerzeilen eintragen (Suche eines Zahlenwertes).
    Diese sind für eine Summenermittlung notwendig. Weiterhin wird einmalig ein Zellenvergleich von unten nach oben durchgeführt. Trifft der Vergleich zu (Wert der Zelle um
    eins gefallen) so werden Textpassagen eingetragen welche für die Struktur notwendig sind.

    Ebenfalls lasse ich von oben nach Unten einen bestimmten Wert suchen (also kein Vergleich, sondern nur eine Zahl) und wenn es zutrifft bestimmte Formatierungen des
    Zellen vornehmen. Hierzu sind (mit reger Mitarbeit von PetaOd) folgende VBScripte entstanden:

    Visual Basic-Quellcode

    1. '____________BAURUPPE LOSTEILE EINTRAGEN_______START_______
    2. Dim wsStruct0
    3. Dim y, y0
    4. Dim p
    5. DIM q
    6. set wsStruct0 = objExcel.Worksheets("strukturliste")
    7. y0 = 99999
    8. For p = wsStruct0.Cells(wsStruct0.Rows.Count, 13).End(-4162).Row To 6 Step -1
    9. y = wsStruct0.Cells(p, 13).Value
    10. If y > 0 Then
    11. If y > y0 Then
    12. wsStruct0.Rows(p+1).Insert
    13. wsStruct0.Cells(p+1,3).Value = ISDGetText("Losteile")
    14. wsStruct0.Cells(p+1,13).Value = ISDGetText("1")
    15. wsStruct0.Cells(p+1,14).Value = ISDGetText("27")
    16. Exit For
    17. End If
    18. y0 = y
    19. End If
    20. next
    21. '____________BAURUPPE LOSTEILE EINTRAGEN________ENDE_______
    22. '____________BAURUPPE FARBLICH HERVORHEBEN_______START_______
    23. Dim wsStruct1
    24. Dim Such1, Treffer1
    25. set wsStruct1 = objExcel.Worksheets("Strukturliste")
    26. Set Such1 = wsStruct1.Columns("N").Find("27")
    27. If Not Such1 Is Nothing Then
    28. Such1.EntireRow.Insert
    29. Treffer1 = Such1.Address
    30. Do
    31. Such1.EntireRow.Font.Bold = True
    32. Such1.EntireRow.Interior.Color = RGB(235,235,235)
    33. Set Such1 = wsStruct1.Columns("N").FindNext(Such1)
    34. if not Such1 is nothing And Treffer1 <> Such1.Address then
    35. Such1.EntireRow.Insert
    36. end if
    37. Loop While Not Such1 Is Nothing And Treffer1 <> Such1.Address
    38. End If
    39. '____________BAURUPPE FARBLICH HERVORHEBEN_______ENDE_______


    Nun benötige ich eure Hilfe. Ich möchte von der Losteilezeile ab nach oben die Leerzeilen löschen lassen. Hierzu müsste ich in Spalte M nach einer leeren Zelle und nach der Zahl 2
    suchen lassen. Mein Problem ist nun, dass die Suche immer von oben nach unten ist und beim Eintragen der "Losteile" nicht gesucht, sondern ein Vergleich vorgenommen wird.

    Folgendes habe ich bereist herausgefunden:
    • mit "EntireRow.Insert" kann ich eine leere Zeilen hinzufügen, mit "EntireRow.Delete" kann ich die aktive Zeile löschen
    • mit "SearchDirection:=xlPrevious" kann ich in VBA die Suchrichtung ändern, aber wie in VBS

    Hat jemand eine Idee wie ich das machen kann? Mit der Variablen p habe ich ja die Zeile ab der es losgehen soll. Darunter soll alles beim alten bleiben.

    Wenn mir da jemand weiterhelfen kann wäre ich sehr sehr dankbar :)

    MfG Felix

    felix_gorgas schrieb:

    mit "SearchDirection:=xlPrevious" kann ich in VBA die Suchrichtung ändern, aber wie in VBS
    Die Excel-Konstanten kannst du durch deren Zahlenwerte ersetzen oder vorab als Konstanten definieren.

    Visual Basic-Quellcode

    1. Const xlPrevious = 2

    Eine Liste der Konstanten findest du hier.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --