Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
680to684
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Messagebox und Abbruch, falls Datum nicht vorhande

Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 12:08:20
Daniel
Hallo Zusammen,
vor einiger Zeit hat mir ein user hier im Forum ein Makro geschrieben.
Nun möchte ich dieses gerne ergänzen, nur leider kenne ich mich nach wie vor in VBA kaum aus. Ich hoffe mir kann nochmal jemand helfen.
In dem Makro werden Summen über mehrere Blättr für bestimmte Tage berechnet.
Wenn nun aber in einem der Blätter (Blatt1, Blatt2, Blatt3) jeweils in Spalte A, das Datum das in Gesamtauswertung B8 steht, nicht vorhanden ist, dann soll
- eine Messagebox mit Warnhinweis kommmen und
- aus dem Makro ausgestiegen werden.
Wie kann ich das einfügen?
Für Hilfe wäre ich euch sehr dankbar.
Grüße,
Daniel
Hier noch das Makro:
'Prozedur Blattsumme:
'Argumente: dat nach diesem Datum wird gesucht
' Spalte: Addiert die Werte der Blätter in dieser Spalte
' Ergebnisspalte: in diese Spalte wird die Summe geschrieben

Sub Blattsumme(dat As Date, Spalte As Integer, Ergebnisspalte As Integer)
Dim Blatt()
Dim Summe As Double
Dim bl
Dim z As Range
'Blattnamen (kann erweitert werden):
Blatt = Array("Blatt1", "Blatt2", "Blatt3")
'Spalte A aller Blätter durchsuchen und in [Spalte] liegende Werte addieren
For Each bl In Blatt
Debug.Print bl
Set z = ThisWorkbook.Sheets(bl).Range("A:A").Find(What:=dat)
If Not z Is Nothing Then Summe = Summe + z.Offset(0, Spalte - 1).Value
Next bl
'Summe in Tabelle eintragen:
Dim lz As Long
With ThisWorkbook.Sheets("Gesamtauswertung")
'Suche Datum in Spalte A von Gesamtauswertung
Set z = .Range("A:A").Find(What:=dat)
If z Is Nothing Then
'nicht gefunden, dann neue Zeile anlegen
lz = .Cells(Rows.Count, Ergebnisspalte).End(xlUp).Row + 1
.Cells(lz, 1) = dat
Else
'gefunden, dann diese Zeile verwenden
lz = z.Row
End If
.Cells(lz, Ergebnisspalte) = Summe
.Cells(lz, Ergebnisspalte) = Summe
If Ergebnisspalte = 5 Then .Range("B3") = Summe
If Ergebnisspalte = 9 Then .Range("B4") = Summe
End With
End Sub

'---------------------------------------------------------------
'Test: Summiert die Treffen der Spalten B-K, ohne F und G

Sub Summen()
Dim i As Integer
For i = 2 To 5 'Spalte B-E
Blattsumme ThisWorkbook.Sheets("Gesamtauswertung").Range("B8"), i, i
Next i
For i = 8 To 11 'Spalte H-K
Blattsumme ThisWorkbook.Sheets("Gesamtauswertung").Range("B8"), i, i
Next i
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 13:22:38
MichaV
Hallo Daniel,
ungetestet, aber anstelle der Zeile

If Not z Is Nothing Then Summe = Summe + z.Offset(0, Spalte - 1).Value

sollte reichen:

If Not z Is Nothing Then
Summe = Summe + z.Offset(0, Spalte - 1).Value
Else
MsgBox "nix gefunden in Blatt " & Sheets(bl).Name,vbCritical, "Hinweis"
EndIf

Gruss- Micha
PS: Rückmeldung wäre nett.
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 13:39:13
Daniel
Hallo Micha,
zunächst vielen Dank.
Allerdings scheint er nicht gleich nach der ersten Meldung auszusteigen.
Ich musste für die 3 blätter bestimmt 25 mal ein PopUp wegklicken.
Grüße,
Daniel
Anzeige
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 13:41:20
MichaV
Hallo,
ahso, sorry, mein Fehler.
Aussteigen sollte er ja auch noch....
MsgBox "nix gefunden in Blatt " & Sheets(bl).Name,vbCritical, "Hinweis":Exit Sub
Gruss- Micha
PS: Rückmeldung wäre nett.
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 13:59:03
Daniel
Hi,
jetzt muss ich beim ersten Blatt zigmal klicken.
Leider habe ich selbst keine Ahnung wieso das so ist.
Grüße,
Daniel
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 14:11:11
MichaV
Hallo,
ja, nun verstehe ich auch, wozu Du die untere Sub mitgeschickt hast.
Guck mal, ob es so besser ist:

Option Explicit
Function Blattsumme(dat As Date, Spalte As Integer, Ergebnisspalte As Integer) As Boolean
Dim Blatt()
Dim Summe As Double
Dim bl
Dim z As Range
Blattsumme = True
'Blattnamen (kann erweitert werden):
Blatt = Array("Blatt1", "Blatt2", "Blatt3")
'Spalte A aller Blätter durchsuchen und in [Spalte] liegende Werte addieren
For Each bl In Blatt
Debug.Print bl
Set z = ThisWorkbook.Sheets(bl).Range("A:A").Find(What:=dat)
If Not z Is Nothing Then
Summe = Summe + z.Offset(0, Spalte - 1).Value
Else
MsgBox "nix gefunden in Blatt " & Sheets(bl).Name, vbCritical, "Hinweis"
Blattsumme = False
Exit Function
End If
Next bl
'Summe in Tabelle eintragen:
Dim lz As Long
With ThisWorkbook.Sheets("Gesamtauswertung")
'Suche Datum in Spalte A von Gesamtauswertung
Set z = .Range("A:A").Find(What:=dat)
If z Is Nothing Then
'nicht gefunden, dann neue Zeile anlegen
lz = .Cells(Rows.Count, Ergebnisspalte).End(xlUp).Row + 1
.Cells(lz, 1) = dat
Else
'gefunden, dann diese Zeile verwenden
lz = z.Row
End If
.Cells(lz, Ergebnisspalte) = Summe
.Cells(lz, Ergebnisspalte) = Summe
If Ergebnisspalte = 5 Then .Range("B3") = Summe
If Ergebnisspalte = 9 Then .Range("B4") = Summe
End With
End Function
'Test: Summiert die Treffen der Spalten B-K, ohne F und G
Sub Summen()
Dim i As Integer
For i = 2 To 5 'Spalte B-E
If Not Blattsumme(ThisWorkbook.Sheets("Gesamtauswertung").Range("B8"), i, i) Then Exit Sub
Next i
For i = 8 To 11 'Spalte H-K
If Not Blattsumme(ThisWorkbook.Sheets("Gesamtauswertung").Range("B8"), i, i) Then Exit Sub
Next i
End Sub

Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Messagebox und Abbruch, falls Datum nicht vorhande
17.10.2005 14:27:17
Daniel
Ok, so geht es. Danke Dir!!
Danke für Deine Rückmeldung. owT
18.10.2005 09:59:35
MichaV

274 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige