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.

Nur die letzten 2 Jahre in MsgBox anzeigen
#11
Hallo!

Danke sehr für eure Hinweise, aber ich komme trotzdem nicht weiter.

Hier mal mein aktueller Code. Leider wird noch immer 0 ausgegeben. Ich habe die Vermutung, dass der das Datum aus der Spalte C nicht als Datum auslesen kann. Denn wenn ich die Prüfung von adr3 weglasse, kommt zumindest nicht 0 raus, aber auch nicht das, was ich will.

Code:
Sub nichtausgezahlteAuszahlungenindenletzten24Monaten()

With ThisWorkbook.Worksheets("Auszahlungen")

Dim rng, adr3 As Range, strg As String
Set adr1 = Worksheets("Auszahlungen").Range("A:A")
Set adr2 = Worksheets("Auszahlungen").Range("G:G")
Set adr3 = Worksheets("Auszahlungen").Range("C:C")
Anz = Application.WorksheetFunction.CountIfs(adr1, "<>", adr2, "", adr3, ">" & Date - 730, adr3, "<=" & Date)
For Each rng In Range("A:A")
If rng <> "" And rng.Offset(0, 6) = "" And rng.Offset(0, 2) > (Date - 730) And rng.Offset(0, 2) <= Date Then _
        strg = strg & vbLf & rng & ":  " & Format(rng.Offset(0, 2), "DD.MM.YYYY") & ":  € " & Format(rng.Offset(0, 3), "#,##0.00")
Next

MsgBox Anz & " fehlendene Auszahlungen in den letzten 2 Jahren:" & String(2, vbNewLine) & _
strg

End With

End Sub

Vielleicht kann mir ja noch jemand einen Tipp geben, was ich vergessen habe.
Excel Version 2016
Antworten Top
#12
Kleiner Nachtrag, wenn ich meine Anforderung als Formel eingebe, kommt das gewünschte Ergebnis raus, hier meine Formel:

Code:
=ZÄHLENWENNS(A:A;"<>";G:G;"";C:C;">"&HEUTE()-730;C:C;"<="&HEUTE())
Excel Version 2016
Antworten Top
#13
Code:
Dim adr1 As Range, adr2 As Range, adr3 As Range
Dim Anz As Long

Set adr1 = Worksheets("Auszahlungen").Range("A:A")
Set adr2 = Worksheets("Auszahlungen").Range("G:G")
Set adr3 = Worksheets("Auszahlungen").Range("C:C")
Anz = Application.WorksheetFunction.CountIfs(adr1, "<>", adr2, "", adr3, ">" & CLng(Date - 730), adr3, "<=" & CLng(Date))

Hinweise zu deinen Codefetzen:

Die Variablendeklaration sollte weder Willkür noch Zufall überlassen werden.

Wenn man schon (sinnvollerweise) einen With-Block nutzt, sollte man auch darauf verweisen:
- Bei der Zuweisung von adr1 - adr3 verwendest du ihn nicht
- Bei der Verwendung von Range("A:A") missachtest du ihn, der Verweis zielt also auf das aktive Blatt, nicht auf "Auszahlungen".

Ganze Spalten zu bearbeiten, wenn nur ein (Bruch-)Teil davon belegt ist, ist Ressourcenverschwendung erster Güte. Schränke den zu bearbeitenden Bereich auf das Notwendige ein.

Programmierung setzt ein Mindestmaß an Sorgfalt voraus. Nimm dir die notwendige Zeit, es ordentlich zu machen. Flüchtigkeitsfehler durch schlampige, hektische Codehampelei zu suchen und auszubessern macht viel mehr Arbeit (und das Ergebnis ist sowieso erstmal falsch). Code, der dann noch aussieht wie ausgehustet, macht es nicht besser.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#14
Hallo EarlFred!

Danke sehr für deine Hilfe. Ich habe nun "CLng" ergänzt und siehe da, jetzt funktioniert es.
Ich weiß zwar nicht genau, was dies bewirkt, aber es funktioniert jetzt. Laut google handelt es sich um eine Typenkonvertierungsfunktion, was auch immer damit gemeint ist.
Excel Version 2016
Antworten Top
#15
Matthäus 7,6

Am Tage 42 des Herrn Com Puter ward verkündet, dass er sich ab sofort 11.02.1900 nennen darf.
Diese frohe Botschaft wurde hingegen nur von denjenigen erkannt, die wahrhaftig erleuchtet waren.
Die heidnischen Filter hingegen beharrten auf der einzig wahren Lehre, wonach als Datum einzig die fortlaufende Zahl seit Anbeginn der Welt akzeptabel ist.
Was sie noch nicht wissen konnten, ist, dass in naher Zukunft die Sekte namens Trekkies ihre Gedanken aufgreifen werden.
Ach ja, da gab es noch den Apostel Bill, der Probleme mit der Zahl 60 hatte …
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


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