Clever-Excel-Forum

Normale Version: Sortierung in MsgBox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo snb!

Wenn ich deinen Code ausführe, kommt folgender Fehler:

Die AutoFilter-Methode des Range-Objektes konnte nicht ausgeführt werden. (.AutoFilter 8, 4, 4)

LG
Thomas

(27.10.2022, 11:11)Klaus-Dieter schrieb: [ -> ]Hallo,

hier eine Möglichkeit, die Ergebnisse in das Tabellenblatt zu schreiben. Hinsichtlich der MsgBox müsste ich noch mal dran, muss jetzt aber noch mal weg.

Code:
Sub test()
    Dim intAnz As Integer
    Dim varRow As Variant
    Dim varDatArr(4, 1) As Variant
    For intAnz = 1 To 5
        varRow = Application.Match(Application.WorksheetFunction.Small(Range("H3:H18"), intAnz), Columns(8), 0)
        varDatArr(intAnz - 1, 0) = Year(Cells(varRow, 1))
        varDatArr(intAnz - 1, 1) = Round(Cells(varRow, 7), 2)
    Next intAnz
    Range("N1:O5") = varDatArr
End Sub

Hallo Klaus-Dieter!

Danke für deinen Code, den ich auch verstehe. Du willst die Werte hinter der Formel in eine andere Zelle schreiben und von dort aus könnte ich dann darauf eine MsgBox machen.
Super wäre es, wenn ich diesen Schritt umgehen könnte.

Hallo an alle!

Anbei nun die Datei.
Wenn ich im Tabellenblatt "Jahresstatistik" auf den Button "Ranking" klickt, wird in der vorletzten Zeile folgendes falsch angezeigt:

Jahr917,35

Wenn ich nun die Zelle G1 lösche, wird es korrekt angezeigt:

2022: 917,35

Nachdem ich aber will, dass in der Zelle G1 die Formel drinnen steht, wäre es super, wenn mir da wer bei dem Problem helfen könnte.

LG
Thomas
Ich habe:
- deine erste Beispieldatei genommen
- meine Makro eingefügt
- in Excel 2010 erstellt
- gespeichert als .xlsb

Erzähl mal bitte:
- warum sollte das bei dir nicht laufen ?
- welche exotische Excel verwendest du ?
- oder ?
Hallo!

Ich verwende Excel 2016.
Was passiert, wenn du die letzte Datei nimmst, die ich hochgeladen habe? Funktioniert es dann bei dir oder auch nicht, so wie bei mir?
In der erste Datei, die ich hochgeladen habe, funktioniert es.
Aber wenn ich es dann deinen Code in eine eher komplexere Datei einfüge, funktioniert es nicht mehr so richtig.
So geht das nicht:

- wenn du eine Beispieldatei hochladest
- und ein Helfer benützt die für eine Lösung
- kannst du nicht sagen: ''Fehler', ohne zu erwähnen dass du die Lösung iin einer andere Datei verwendet hast.
- von einer solche Haltung kann man nur sagen BS (Englsich) oder RS (Deutsch)
Hallo

so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()

    With ThisWorkbook.Worksheets("Jahresstatistik")
   
     Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
        Dim Z1 As Integer, LR As Integer, RNG As Range
       
        Z1 = 3 'Erste Datenzeile
        Sp = 7 'Werte in G
       
        LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
        Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
       
        For i = 1 To 5
            WWert = WorksheetFunction.Large(RNG, i)
            Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
            TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
        Next
        MsgBox "Ranking Top 5" & vbLf & vbLf & TText
     
    End With

End Sub


LG UweD
(28.10.2022, 10:16)snb schrieb: [ -> ]So geht das nicht:

- wenn du eine Beispieldatei hochladest
- und ein Helfer benützt die für eine Lösung
- kannst du nicht sagen: ''Fehler', ohne zu erwähnen dass du die Lösung iin einer andere Datei verwendet hast.
- von einer solche Haltung kann man nur sagen BS (Englsich) oder RS (Deutsch)

Hallo!

Ich gebe dir prinzipiell Recht. Dein erster Code hat für die eine Datei funktioniert.
Dann habe ich ihn aber in eine andere eingefügt und da hat er nicht mehr so richtig funktioniert.
Darum habe ich ja dann eine neue Datei hochgeladen.

(28.10.2022, 14:31)UweD schrieb: [ -> ]Hallo

so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()

    With ThisWorkbook.Worksheets("Jahresstatistik")
   
     Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
        Dim Z1 As Integer, LR As Integer, RNG As Range
      
        Z1 = 3 'Erste Datenzeile
        Sp = 7 'Werte in G
      
        LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
        Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
      
        For i = 1 To 5
            WWert = WorksheetFunction.Large(RNG, i)
            Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
            TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
        Next
        MsgBox "Ranking Top 5" & vbLf & vbLf & TText
    
    End With

End Sub


LG UweD

Hallo!

Danke für deine rasche Lösung. Nun funktioniert es genau so, wie ich es mir vorgestellt habe.
(28.10.2022, 14:31)UweD schrieb: [ -> ]Hallo

so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()

    With ThisWorkbook.Worksheets("Jahresstatistik")
   
     Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
        Dim Z1 As Integer, LR As Integer, RNG As Range
      
        Z1 = 3 'Erste Datenzeile
        Sp = 7 'Werte in G
      
        LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
        Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
      
        For i = 1 To 5
            WWert = WorksheetFunction.Large(RNG, i)
            Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
            TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
        Next
        MsgBox "Ranking Top 5" & vbLf & vbLf & TText
    
    End With

End Sub


LG UweD

Hallo!

Ich hätte vielleicht doch noch ein Anliegen. Ich weiß, dass ich diesen Wunsch von Anfang an nicht geäußert habe, aber nachdem ich nun deinen Code in meine Datei eingefügt habe, ist mir noch was eingefallen.
Wäre es möglich, dass nur im aktuellen Jahr neben dem Betrag folgendes steht:

2022:  € 917,35  (aktuelles Jahr)

Damit es gleich in der Liste raussticht, dass welches das aktuelle Jahr.

Ich hoffe, dass du mir bzw. auch jemand anderer noch einmal helfen kann.

LG
Thomas
Hallöchen,

bitte nicht immer komplette Beiträge zitieren. In der Regel reicht es, wenn Du die Antworter ansprichst, vor allem, wenn es um die jeweils letzte Antwort des betreffenden geht.
Hallo nochmal

dann so...
Code:
Sub JahresstatistikRanking()

    With ThisWorkbook.Worksheets("Jahresstatistik")
   
        Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
        Dim Z1 As Integer, LR As Integer, RNG As Range, Jahr As Integer, TMP As String
     
        Z1 = 3 'Erste Datenzeile
        Sp = 7 'Werte in G
     
        LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
        Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
     
        For i = 1 To 5
            WWert = WorksheetFunction.Large(RNG, i)
            Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
            Jahr = Year(Cells(Zeile, 1))
            TMP = IIf(Jahr = Year(Date), " (aktuelles Jahr)", "")
            TText = TText & Jahr & ": " & Format(WWert, "0.00") & TMP & vbLf
        Next
        MsgBox "Ranking Top 5" & vbLf & vbLf & TText
   
    End With

End Sub

LG UweD
Hallo Uwe!

Danke für den Code. Genau so habe ich mir das vorgestellt, einfach super.

LG
Thomas
Seiten: 1 2 3 4