Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1560to1564
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
Inhaltsverzeichnis

Mehrere Zellen prüfen vor Speicherung

Mehrere Zellen prüfen vor Speicherung
08.06.2017 13:42:05
Major
Hallo zusammen,
vor dem Speichern sollen 3 verschiedene Bereiche auf Ihren Inhalt geprüft werden bzw. geprüft werden ob mind. eine Zelle darin nicht leer ist.
Das klappt auch mit einer Zeile, aber nicht mit 3. Ich mache hier glaube ich grundlegende Fehler, weil ich da noch zu schlecht bin.
Könnt ihr mal drüber swchauen? Danke euch!

Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Sheets("TEST")
For x = .Cells(25, .Columns.Count).End(xlToLeft).Column To 10 Step -1 'Von Spalte N bis letzte
For y = .Cells(29, .Columns.Count).End(xlToLeft).Column To 10 Step -1 'Von Spalte N bis letzte
For Z = .Cells(33, .Columns.Count).End(xlToLeft).Column To 10 Step -1 'Von Spalte N bis letzte
If .Cells(25, x)  "" Or _
.Cells(29, y)  "" Or _
.Cells(33, Z)  "" Then
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End If
Next x
Next y
Next Z
End With
End Sub
Gruss Major

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Zellen prüfen vor Speicherung
08.06.2017 14:26:33
ChrisL
Hi
Vielleicht so...
With Worksheets("TEST")
If WorksheetFunction.CountA(.Rows(25), .Rows(29), .Rows(33)) > 0 Then _
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
cu
Chris
AW: Mehrere Zellen prüfen vor Speicherung
08.06.2017 15:36:42
Major
Hey Chris,
danke für die schnelle Rückmeldung.
Der abgesteckte Bereich in den Zeilen von Spalte N bis letzte ist allerdings noch relevant.
Gruss Major
AW: Mehrere Zellen prüfen vor Speicherung
08.06.2017 15:46:26
ChrisL
Hi Major
Ich verstehe leider nicht, was dein abgesteckter Bereich ist, aber du kannst die Range ja frei definieren.
z.B.
...CountA(.Range("N25:IV25,N29:IV29,N33:IV33"))
cu
Chris
Anzeige
AW: Mehrere Zellen prüfen vor Speicherung
08.06.2017 16:49:09
Major
hey chris,
funktioniert leider nicht. Fehlermeldung end with ohne with.
Verstehe ich nicht, ist doch beides vorhanden?
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("TEST")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
End Sub

Then _ (Strich) owT.
08.06.2017 17:01:47
ChrisL
.
AW: Then _ (Strich) owT.
08.06.2017 17:07:16
Major
Hey chris,
leider nein. Gleiche Fehlermeldung.
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then _
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
End Sub

Anzeige
und noch Leerzeile entfernen owT
08.06.2017 17:10:40
ChrisL
.
AW: und noch Leerzeile entfernen owT
08.06.2017 17:36:50
Major
Hey chris,
leider Syntaxfehler. An was kann das liegen?
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then_
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
End Sub

Leerzeile nicht -zeichen :)
08.06.2017 17:50:32
ChrisL
Probier mal...
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then _
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
End Sub
sonst müsste ich dann doch mal testen :)
cu
Chris
Anzeige
AW: Leerzeile nicht -zeichen :)
08.06.2017 18:10:16
Major
Hey chris,
leider noch kein Glück gehabt, aber danke schonmal für deine Hilfe.
Funzt so wie du ihn oben hast nicht.
Laufzeitfehler 1004.
Der Debugger verweist auf die Zeile...
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then_
Gruss major
AW: Leerzeile nicht -zeichen :)
08.06.2017 19:13:05
Werner
Hallo,
keine Ahnung was du machst, habe mitgelesen und es jetzt auch mal probiert, funktoniert.
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End If
End With
End Sub
Gruß Werner
Anzeige
AW: Leerzeile nicht -zeichen :)
09.06.2017 07:53:14
Major
Hi,
das ist natürlich interessant.
Da bleib ich darauf wohl sitzen, denn es geht einfach nicht.
Was könnten denn mögliche Gründe sein?
Mein komplettes workbook sieht so aus:

Private Sub Workbook_Open()
UserForm1.Show False
UserForm1.Repaint
Call Wachse_automatisch_92Tage
Call Spaltenbereinigung
Call Aktualisiere_bei_Start_AV1
Unload UserForm1
Sheets("AV1_Planung_Fertigteile").Select
ActiveSheet.Range("A1").Select
End Sub
Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abbrechen As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25,N29:DB29,N33:DB33")) > 0 Then
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End If
End With
End Sub
Gruss Major
Anzeige
jetzt aber...
09.06.2017 08:28:00
ChrisL
Hi
Ich konnte das Problem nun mit XL2007 rekonstruieren. Das Verhalten von Excel ist sehr speziell.
Die Definition mit mehreren Bereichen funktioniert in einer normalen Prozedur, nicht aber im BeforeSave Ereignis. Aus meiner Sicht handelt es sich um einen Excel-Bug.
Workaround:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Worksheets("AV1_Planung_Fertigteile")
If WorksheetFunction.CountA(.Range("N25:DB25")) > 0 Or _
WorksheetFunction.CountA(.Range("N29:DB29")) > 0 Or _
WorksheetFunction.CountA(.Range("N33:DB33")) > 0 Then _
MsgBox "Achtung min. eine der Zellen ist gefüllt"
End With
End Sub
Sorry, dass ich an deinen Copy/Paste Künsten gezweifelt habe.
cu
Chris
Anzeige
AW: jetzt aber...
09.06.2017 08:47:32
Major
Hey,
das ist kein Problem an meinen copy/paste Künsten zu zweifeln :D :D
Läuft übrigens super und interessant Sache die du da aufklären konntest.
Danke!
Gruss Major

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige