Microsoft Excel

Herbers Excel/VBA-Archiv

Range / End(xlUp)

    Betrifft: Range / End(xlUp) von: Rafael
    Geschrieben am: 06.10.2003 13:58:56

    Liebe Boardgemeinde,

    ich möchte den Code meines Macros verkürzen. U.a. sollen die Inhalte zusammenhängender, aber in der Adresse wechselnder Zellen fett markiert werden.

    Leider funktioniert der folgende Ausdruck nicht:

    Tabelle1.Range((Cells(Rows.Count, 2).End(xlUp)), _
    (Cells(Rows.Count, 7).End(xlUp))).Font.Bold = True

    Statt dessen muss ich mit dem folgenden, jedoch längeren Ausdruck arbeiten:

    Tabelle1.Cells(Rows.Count, 2).End(xlUp).Font.Bold = True
    Tabelle1.Cells(Rows.Count, 3).End(xlUp).Font.Bold = True
    Tabelle1.Cells(Rows.Count, 4).End(xlUp).Font.Bold = True
    Tabelle1.Cells(Rows.Count, 5).End(xlUp).Font.Bold = True
    Tabelle1.Cells(Rows.Count, 6).End(xlUp).Font.Bold = True
    Tabelle1.Cells(Rows.Count, 7).End(xlUp).Font.Bold = True

    Vielleicht hat jemand von Euch einen Vorschlag zur Verkürzung? Die SpecialCells-Methode "End(xlUp)" sollte jedoch Anwendung finden.

    Vielen Dank im voraus!

    Rafael


      


    Betrifft: AW: Range / End(xlUp) von: PeterW
    Geschrieben am: 06.10.2003 14:16:21

    Hallo Rafael,

    für einen zusammenhängenden Bereich brauchst du eine Anfangszelle (oben links) und eine Endzelle (unten rechts). Mit deinem Code formatierst du nur die jeweils letzte Zelle der Spalten. Ist das so gewollt?

    Gruß
    Peter


      


    Betrifft: AW: Range / End(xlUp) von: Rafael
    Geschrieben am: 06.10.2003 14:31:35

    Hallo Peter,

    ja, das soll so sein. Zunächst sollen wechselnde Parameter (aus Tabelle3) jeweils der obersten (leeren) Zelle einer Spalte zugeordnet und dann fett formatiert werden. B.p.:

    If Tabelle3.Cells(2, 14) < Tabelle3.Cells(2, 5) Then
    Tabelle1.Cells(Rows.Count, 2).End(xlUp).Offset(1#) = Tabelle3.Cells(2, 11)
    Tabelle1.Cells(Rows.Count, 3).End(xlUp).Offset(1#) = Tabelle3.Cells(2, 5)
    Tabelle1.Cells(Rows.Count, 4).End(xlUp).Offset(1#) = Tabelle3.Cells(2, 1)
    Tabelle1.Cells(Rows.Count, 5).End(xlUp).Offset(1#) = Tabelle3.Cells(2, 16)
    Tabelle1.Cells(Rows.Count, 6).End(xlUp).Offset(1#) = Tabelle3.Cells(2, 14)

    Tja, vielleicht liesse sich "FontBold" = "True" auch direkt in den jeweiligen Ausdruck einarbeiten. Bei meinen Versuchen klappte das leider nicht, so dass ich die "Zuorndung der Parameter" und "Fette Schrift" in zwei separate Schritte trennen musste.

    Gruss Rafael


      


    Betrifft: AW: Range / End(xlUp) von: PeterW
    Geschrieben am: 06.10.2003 14:40:01

    Hallo Rafael,

    das geht bequem mit einem With-Rahmen

    With Tabelle1.Cells(Rows.Count, 2).End(xlUp).Offset(1#)
    .Value = Tabelle3.Cells(2, 11)
    .Font.Bold = True
    End With

    Gruß
    Peter


      


    Betrifft: AW: Range / End(xlUp) von: Rafael
    Geschrieben am: 06.10.2003 15:03:41

    Danke Dir, Peter!!!

    Rafael