1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel - Makro

Discussion in 'Office-Programme' started by kn, May 21, 2004.

Thread Status:
Not open for further replies.
  1. kn

    kn Byte

    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

    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

    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

    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

    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

    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
     
Thread Status:
Not open for further replies.

Share This Page