Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Das Update ist abgeschlossen, Ihr könnt unser Forum jetzt wieder wie gewohnt nutzen. Eventuelle Bugs und Auffälligkeiten postet Ihr bitte im entsprechenden Forum im Bereich Forumstechnik. x


Anzahl in MsgBox ausgeben
#1
Hallo!

Ich will in einer MsgBox eine Anzahl ausgeben, mit bestimmten Bedingungen.
Es darf nur gezählt werden, wenn die Werte in der Spalte G größer als 0 sind. Heißt in meinem Beispiel (habe ich mit angehängt), dass die Zahl 4 ausgegeben werden soll. Zusätzlich möchte ich noch, dass wenn es mehr als 8 sind, dass max. die Anzahl 8 ausgegeben wird. Berücksichtigt werden muss aber zusätzlich, dass die Werte erst ab der 3. Zeile zählen.

Ich hoffe, dass ihr mir helfen könnte.

LG
Thomas


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 18,9 KB / Downloads: 5)
Excel Version 2016
Antworten Top
#2
Schau mal: Excel-VBA für Dummies: Amazon.de: Walkenbach, John, Haselier, Rainer G.: Bücher
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Als Formel:
Code:
=MIN(8;ZÄHLENWENN(G3:G18;">0"))
Umsetzen in VBA-Code beherrscht du ja offenbar. 

Bitte noch beheben:
- Im With-Block fehlt der Punkt bei den Bereichsangaben.
- Die Variablendeklaration ist (wieder mal) unvollständig.
- Bei der Zuweisung von RNG ist ein Berechnungsfehler
- Entfernen des unnötigen Codes
Antworten Top
#4
Hallo!

Danke für die Formel. Leider beherrsche ich eben VBA nicht, ich hätte es nicht gerne mit einer Formel gelöst, sondern mittels VBA.
Ich hoffe, dass du mir helfen kannst.
Excel Version 2016
Antworten Top
#5
Dann fang mal erst an mit den Grundlagen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
Code:
Sub JahresstatistikRanking()

With ThisWorkbook.Worksheets("Tabelle1")
   
    Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
    Dim Z1 As Integer, LR As Integer, RNG As Range, 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)
    Anz = Application.WorksheetFunction.Min(8, Application.WorksheetFunction.CountIf(RNG, ">0"))
       
    For i = 1 To 8
        WWert = WorksheetFunction.Large(RNG, i)
        Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
        TMP = IIf(Jahr = Year(Date), "  (aktuelles Jahr)", "")
        TText = TText & " € " & Format(WWert, "#,##0.00") & TMP & vbLf
    Next
   
    MsgBox Anz & vbLf & vbLf & TText
     
End With

End Sub
Excel Version 2016
Antworten Top
#7
Moin,

(15.11.2022, 11:01)dertommy schrieb: Leider beherrsche ich eben VBA nicht.
Na, das ist doch der ideale Einstieg! Eine millionenfach erprobte Lösung, wie das Arbeiten mit Excel-Formeln in einer grafischen Benutzeroberfläche wie einem Arbeitsblatt lehnst du ab und bist gleichzeitig noch nicht in der Lage, eine alternative Lösung zu entwickeln. Darüber hinaus hast du ein konkretes und überschaubares Problem,für das du eine Wunschlösung suchst.
Ich bin der Meinung, einen besseren Einstieg in die wunderbare Welt der Programmierung gibt es fast nicht.

Als erstes würde ich dir empfehlen, das Kernproblem zu lösen und dich nicht durch die Ausgabe in einer bestimmten Form (hier eine Messagebox) ablenken zu lassen.
Du suchst dir also einen Algorithmus, der die benötigten Informationen sammelt und nicht benötigte Informationen ausschließt. Für den zusätzlichen Lerneffekt, könntest du auch noch eine zweite oder dritte Lösungsstrategie entwickeln (Schleife, Filter, Formellösung). Das Ergebnis kannst du dir hilfsweise vorerst in Zellen ausgeben lassen.

Wenn du zu einem akzeptablen Ergebnis gekommen bist, kümmerst du dich um die gewünschte Ausgabe und die damit verbundenen zusätzlichen Ansprüche. Bei einer Messagebox geht es dabei prinzipiell nur darum, die gesammelten Inhalte in eine Zeichenkette zu überführen. Wie das grundsätzlich funktioniert, lässt sich im Vorgängerthread hervorragend rauslesen.

Bei konkreten Fragen helfe ich natürlich gern.

Viele Grüße
derHöpp
Vom Handy gesendet
Antworten Top
#8
(15.11.2022, 11:01)dertommy schrieb: Danke für die Formel. Leider beherrsche ich eben VBA nicht, ich hätte es nicht gerne mit einer Formel gelöst, sondern mittels VBA.
DEIN Code tut doch das gleiche: Anwenden von Excelformeln in VBA. Warum schaffst du es, das in diesen Fällen umzusetzen, in dem Fall hier aber nicht? Das ist nicht glaubwürdig. Oder ist das überhaupt nicht dein Code? Warum präsentierst du ihn dann als deinen? Das gehört sich nicht!

Ich habe dir einfachste Fragen gestellt. Wenn du VBA lernen und verstehen wolltest, würdest du diese beantworten oder interessiert nachfragen. Dein Agieren erweckt allerdings den Eindruck, dass du nur kostenlosen Programmierservice wünscht. Denkst du ernsthaft, das wäre der Zweck eines Forums, kostenlos Dienstleistungen zu erschleichen?
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • snb
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste