Excel - Makro

Dieses Thema im Forum "Office-Programme" wurde erstellt von kn, 21. Mai 2004.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. kn

    kn Byte

    Registriert seit:
    2. März 2003
    Beiträge:
    80
    Hi,
    bei Makros passt Excel den "Range" (im Beispiel I180) nicht automatisch an, wenn man Zeilen nachträglich einfügt.
    Es ist sehr umständlich, die Eintragungen immer von Hand ändern zu müssen, siehe Beispiel.
    Hat jemand eine Lösung oder einen Vorschlag, wie es automatisch geht?

    Danke für Eure Hilfe.

    Beispiel:
    If sflag = False Then
    Range("A2:I180").Select
    Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range("A3").Select
    sflag = True
    Else
    Range("A2:I180").Select
    Selection.Sort Key1:=Range("A3"), Order1:=xlDescending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range("A3").Select
    sflag = False
    End If
    End Sub
     
  2. mkl

    mkl Kbyte

    Registriert seit:
    9. August 2000
    Beiträge:
    345
    Hallo kn,

    ich denke, das wird nicht gehen.

    Mach's doch so:

    ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    Range("A2", ActiveCell).Select

    Nachwievor vorausgesetzt, daß Du nach der ersten Anweisung noch in Spalte A stehst, ansonsten mußt Du noch eine Korrektur auf die Spalte A vornehmen.

    Alles klar ???

    Und tschüx ...
     
  3. kn

    kn Byte

    Registriert seit:
    2. März 2003
    Beiträge:
    80
    Hi,
    vielen Dank mlk, das ist ein guter Ansatz.
    Ginge es wenn ich den Bereich A2:!180 als "Mein_Bereich" definiere und dann unter Range(Mein_Bereich).Select einsetze?
    Ich weiss aber nicht genau, wie man das macht?

    Vielleicht hast Du ja dazu eine gute Idee?
    Danke
    kn
     
  4. mkl

    mkl Kbyte

    Registriert seit:
    9. August 2000
    Beiträge:
    345
    Hallo,

    wenn in Zelle I180 der letzte gültige Wert steht, dann könnte man sich mit
    ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    behelfen. Vielleicht hilft Dir das ja schon weiter, ansonsten werde mal etwas genauer.

    Und tschüx ...
     
  5. mkl

    mkl Kbyte

    Registriert seit:
    9. August 2000
    Beiträge:
    345
    Hallo kn,

    ich glaube nicht, daß das so geht. Im VBA-Code werden Bezüge auf Tabellen nicht geändert. Wenn Du dort I2:I180 schreibst, dann bleibt es auch dabei. Du mußt die letzte gültige Zelle ermitteln und dann den Bereich von dort bis zur ersten Zelle (die ist ja fest !!!) mit Range selektieren, so wie ich es weiter oben beschrieben habe.

    Sende mir doch mal Deine Datei, dann schaue ich es mir einmal an, okay ? Einfach per persönlicher Nachricht ...

    Und tschüx ...
     
  6. kn

    kn Byte

    Registriert seit:
    2. März 2003
    Beiträge:
    80
    Hi mlk.
    Danke fuer Deine Muehe!
    Vielleicht verstehe ich etwas nicht richtig oder ich mache einen Fehler bei der Eingabe.
    Wenn ich in der Tabelle zwei Zeilen einfüge, muesste sich I180 in I182 automatisch aendern, tut es aber nicht.

    Mein Versuch:
    Deklaratonen:
    Dim Mein_Bereich as Object

    In der Procedure:
    Set Mein_Bereich = Range ("A2:I18o")

    Im Makro:
    Range("Mein_Bereich").Select

    produziert leider auch nur eine Fehlermeldung!
    kn
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen