Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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
Überprüfen ob Zelle leer
08.02.2022 13:52:12
Edmund
Hallo,
ich komme mal wieder nicht so ganz weiter. Sicherlich hat einer die passende Lösung, mir fällt sie leider im Moment nicht ein.
Ich möchte per VBA überprüfen ob in bestimmten Zellen ein Wert eingetragen ist, erst wenn alle Zellen gefüllt sind geht es weiter.
Bei meiner Version prüft er brav ob in D8, D9, D10 und D11 etwas steht.
Wenn aber in D8 etwas steht, prüft er die weiteren Felder nicht mehr und geht zum Antrag.
Habe schon mal die Reihenfolge umgekehrt, aber das Ergebnis ist das selbe, wenn in D11 was steht geht es auch direkt zum Antrag.
Hat jemand eine bessere Lösung?
Danke im Voraus für die Bemühungen
Edmund

Private Sub ButtonGoToAntrag_Click()
'Überprüfung ob Angaben eingetragen wurden bei Besitzer, Versicherungsort, Wert1914 und Baujahr
If Sheets("Eingabe").Range("D8,D9,D10,D11") = "" Then
antwort = MsgBox("Es fehlt mindestens eine Angabe bei:" & vbLf & _
"Besitzer, Versicherungsort, Wert1914 oder Baujahr!" & vbLf & _
"Machen Sie zuerst diese Angaben!", vbExclamation + vbOKOnly, "ImmoGrandeTool")
Else
Sheets("Eingabe").Select
Sheets("Antrag").Visible = True
Sheets("Eingabe").Select
ActiveWindow.SelectedSheets.Visible = False
End If
End Sub

43
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überprüfen ob Zelle leer
08.02.2022 13:59:36
Oberschlumpf
Hi Edmund,
ich glaube, da muss man etwas aufwendiger programmieren, Zelle für Zelle.
Probier mal so, hier wird geprüft, ob Zelle1 ODER Zelle2 usw leer ist:

Private Sub ButtonGoToAntrag_Click()
'Überprüfung ob Angaben eingetragen wurden bei Besitzer, Versicherungsort, Wert1914 und Baujahr
With Sheets("Eingabe") 'mit With... musst du das Sheet nur 1x schreiben
If .Range("D8") = "" Or _
.Range("D9") = "" Or _
.Range("D10") = "" Or _
.Range("D11") = "" Then
antwort = MsgBox("Es fehlt mindestens eine Angabe bei:" & vbLf & _
"Besitzer, Versicherungsort, Wert1914 oder Baujahr!" & vbLf & _
"Machen Sie zuerst diese Angaben!", vbExclamation + vbOKOnly, "ImmoGrandeTool")
Else
Sheets("Eingabe").Select
Sheets("Antrag").Visible = True
Sheets("Eingabe").Select
ActiveWindow.SelectedSheets.Visible = False
End If
End With
End Sub
Hilfts?
Ciao
Thorsten
Anzeige
Kürzer...
08.02.2022 14:06:14
{Boris}
Hi,
...mit ANZAHL2 bzw. CountA:

If WorksheetFunction.CountA(Range("D8:D11")) 
VG, Boris
auch ne Idee - und besser ;-) owT
08.02.2022 14:41:05
Oberschlumpf
AW: Kürzer...
08.02.2022 14:58:07
GerdL
Moin!
Bei der Prozedur für einen Button an Sheets("Eingabe"). vor Range oder (nur) den Punkt vor Range, wenn innerhalb des With-End With-Blocks gecodet wird, bitte nicht vergessen.
Gruß Gerd
AW: Überprüfen ob Zelle leer
09.02.2022 11:20:09
Edmund
Hallo, habe den Code eingebaut und es funktioniert perfekt.
Nun wollte ich einen Schritt weiter gehen und nach jeder Abfrage ob in der Zelle was steht eine eigene MsgBox anzeigen lassen.
Meine Variante geht aber nicht. Muss ich nun vor jeder Abfrage das If setzen ?
lg Edmund

Private Sub ButtonAngebotDrucken_Click()
'Überprüfung ob Angaben eingetragen wurden bei Großkunde, Besitzer, Versicherungsort, Wert1914 und Baujahr, Denkmalschutz, Elementar
With Sheets("Eingabe")
If .Range("D7") = "Großkunden auswählen:" Then antwort = MsgBox ("Großkunde fehlt", vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D8") = "" Then antwort = MsgBox ("Besitzer fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D9") = "" Then antwort = MsgBox ("Ort fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D10") = "" Then antwort = MsgBox ("Baujahr fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D11") = "" Then antwort = MsgBox ("Wert 1914 fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D12") = "" Then antwort = MsgBox ("Denkmalschutz fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
.Range("D13") = "" Then antwort = MsgBox ("Elementarschutz fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
Else: Auswahl_Angebot.Show
End If
End With
End Sub

Anzeige
AW: Überprüfen ob Zelle leer
09.02.2022 13:17:39
Oberschlumpf
Hi Edmund,
erst mal: wieso schreibst du: "alles läuft perfekt", wenn DAS doch gar nich stimmt?
diese Frage ist - nicht - rhetorisch, also beantworte sie bitte.
Nun zu meiner Idee:
Hier der Code für den Button

Private Sub ButtonAngebotDrucken_Click()
'Überprüfung ob Angaben eingetragen wurden bei Großkunde, Besitzer, Versicherungsort, Wert1914 und Baujahr, Denkmalschutz, Elementar
Dim lloCell As Long, lstrMsg As String
pboErr = False
With Sheets("Eingabe")
For lloCell = 7 To 13
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg  "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
If pboErr = False Then
Auswahl_Angebot.Show
End If
End Sub
das hier muss alles in ein allgemeines Modul:

Option Explicit
Public pboErr As Boolean
Function fcErrCheck(ByVal zelltext As String, zeile As Long)
Select Case zeile
Case 7
If zelltext = "Großkunden auswählen:" Then
fcErrCheck = "Großkunde fehlt in D" & zeile
End If
Case 8
If zelltext = "" Then
fcErrCheck = "Besitzer fehlt in D" & zeile
End If
Case 9
If zelltext = "" Then
fcErrCheck = "Ort fehlt in D" & zeile
End If
Case 10
If zelltext = "" Then
fcErrCheck = "Baujahr fehlt in D" & zeile
End If
Case 11
If zelltext = "" Then
fcErrCheck = "Wert 1914 fehlt in D" & zeile
End If
Case 12
If zelltext = "" Then
fcErrCheck = "Denkmalschutz fehlt in D" & zeile
End If
Case 13
If zelltext = "" Then
fcErrCheck = "Elementarschutz fehlt in D" & zeile
End If
End Select
If fcErrCheck  "" Then
pboErr = True
End If
End Function
getestet ist mein Code nicht, weil von dir keine Bsp-Datei per Upload gezeigt wurde.
Konnte ich denn helfen?
Ciao
Thorsten
Anzeige
AW: Überprüfen ob Zelle leer
09.02.2022 14:28:59
Edmund
Hallo Thorsten,
sorry wenn du das nicht so verstanden hast wie ich es gemeint hatte.
Ich habe geschrieben, dass der Code perfekt läuft, was richtig ist.
Wenn eines, oder mehrere Felder leer sind kommt der globale Hinweis das etwas fehlt.
Normal könnte man sich damit zufrieden geben. Habe dir auch für deine Hilfe gedankt.
Nun wollte ich nur noch einen Schritt weiter gehen, und für jedes Feld einen eigenen Hinweis ausgeben lassen ( was ja nun nicht funktioniert ).
Wollte nur das der Anwender direkt gezeigt bekommt wo was fehlt. Aber die erste Version reicht mir aber auch schon.
Danke
Edmund
Anzeige
AW: Überprüfen ob Zelle leer
09.02.2022 14:47:27
Oberschlumpf
Hi Edmund,
ähh? Hast du meine Idee nicht probiert?
Wenn mein Code funktioniert, dann wird bei jeder Nicht-Eingabe ein Hinweis, sogar mit dem jeweils passendem Hinweis UND Zeile, ausgebeben - also genau das, was du dir als Erweiterung gewünscht hattest.
Und das eine If-Zeile, die mit Or _ endet nicht funktionieren kann, na ja...ok...bei dir muss es ja funktionieren.
Ciao
Thorsten
AW: Überprüfen ob Zelle leer
09.02.2022 21:43:27
Edmund
Hallo Thorsten,
ich habe diesen Code eingebaut:

Private Sub ButtonGoToAntrag_Click()
'Überprüfung ob Angaben eingetragen wurden bei Besitzer, Versicherungsort, Wert1914 und Baujahr
With Sheets("Eingabe") 'mit With... musst du das Sheet nur 1x schreiben
If .Range("D8") = "" Or _
.Range("D9") = "" Or _
.Range("D10") = "" Or _
.Range("D11") = "" Then
antwort = MsgBox("Es fehlt mindestens eine Angabe bei:" & vbLf & _
"Besitzer, Versicherungsort, Wert1914 oder Baujahr!" & vbLf & _
"Machen Sie zuerst diese Angaben!", vbExclamation + vbOKOnly, "ImmoGrandeTool")
Else
Sheets("Eingabe").Select
Sheets("Antrag").Visible = True
Sheets("Eingabe").Select
ActiveWindow.SelectedSheets.Visible = False
End If
End With
End Sub
und er läuft !!
Sorry das es nicht dein Code war. Da ich, wie auch beschrieben, nicht der Profi in VBA bin ( ich lerne bei jeder Sache dazu ) war dieser Code für mich verständlich ( war auch der erste der gepostet wurde ). Nun wollte ich nur noch einen Schritt weiter gehen und für jede Abfrage eine spezifische Antwort ausgeben. Grundsätzlich würde die pauschale Antwort auch schon reichen, wollte es nur etwas besser gestalten. Ich kann verstehen, dass für dich als Profi das alles ziemlich langweilig ist, aber, wie gesagt ich lerne jeden Tag ein wenig mehr von VBA.
Ich muss gestehen, dass vieles an deinem Code für mich noch völlig unklar ist. Ich will es verstehen und lernen um nicht immer für was neues hier im Forum um Hilfe fragen. Die Funktion ( Code ) wollte ich dann gegebenenfall, etwas abgeändert für einen weiteren Button verwenden.
Ich könnte deinen Code einfach bei mir rein kopieren und fertig, sicher wird er laufen, aber ich weiß dann immer noch nicht warum, sorry.

Private Sub ButtonAngebotDrucken_Click()
'Überprüfung ob Angaben eingetragen wurden bei Großkunde, Besitzer, Versicherungsort, Wert1914 und Baujahr, Denkmalschutz, Elementar
Dim lloCell As Long, lstrMsg As String
pboErr = False
With Sheets("Eingabe")
For lloCell = 7 To 13
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg  "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
If pboErr = False Then
Auswahl_Angebot.Show
End If
End Sub

Mit 7 To 13 meist du sicherlich die Zellen die überprüft werden sollen, oder? Was ist aber wenn eine zu überprüfende Zelle z.B. auf E 18 liegt?
Noch etwas ist für mich unklar. Dein zweiter Teil in dem du schreibst, dass dieser Code in ein allgemeines Modul muss. Was kann ich unter allgemeines Modul verstehen?
"das hier muss alles in ein allgemeines Modul:"
Option Explicit
Public pboErr As Boolean
Function fcErrCheck(ByVal zelltext As String, zeile As Long)
Select Case zeile
Case 7
If zelltext = "Großkunden auswählen:" Then
fcErrCheck = "Großkunde fehlt in D" & zeile
End If
Case 8
If zelltext = "" Then
fcErrCheck = "Besitzer fehlt in D" & zeile
End If
Case 9
If zelltext = "" Then
fcErrCheck = "Ort fehlt in D" & zeile
End If
Case 10
If zelltext = "" Then
fcErrCheck = "Baujahr fehlt in D" & zeile
End If
Case 11
If zelltext = "" Then
fcErrCheck = "Wert 1914 fehlt in D" & zeile
End If
Case 12
If zelltext = "" Then
fcErrCheck = "Denkmalschutz fehlt in D" & zeile
End If
Case 13
If zelltext = "" Then
fcErrCheck = "Elementarschutz fehlt in D" & zeile
End If
End Select
If fcErrCheck "" Then
pboErr = True
End If
End Function Sorry, für den langen Text, aber das wollte ich nur mal gesagt haben.
Trotzdem Danke an deine Hilfe.
lg Edmund
Anzeige
AW: Überprüfen ob Zelle leer
09.02.2022 22:13:44
Oberschlumpf
Hi Edmund,
ja, ich hatte schon verstanden, dass - grundsätzlich - einer der Code-Ideen eigentlich funktioniert - nur eben mit der Einschränkung, dass dein "Erweiterungswunsch" damit nicht funktioniert.
Und du musst dich auch nich entschuldigen, dass die Lösung - nich - mein Code ist.
Wir alle sind so was wie ein "Team" - jeder hilft jedem - und das is auch gut so!
ein paar Richtigstellungen (ohne Vorwurf!)
Zitat ...dass für dich als Profi
Ich bin kein Profi. Auch ich hab VBA nur in meiner Freizeit gelernt. Vieleicht hab ich dir ein paar Jahre mit VBA-Erfahrung voraus, aber trotzdem lerne auch ich noch viel dazu.
Zitat ...um nicht immer für was neues hier im Forum um Hilfe fragen
Doch! Frag auf jeden Fall weiter! Weil, wenn du nich mehr fragst, und auch alle anderen nich mehr fragen, wozu gäbe es dann dieses und jedes andere Forum? :-)
Natürlich kannst/sollst du (weitere) Fragen stellen - nur so lernen wir alle weiter!
Aber eine Bitte hab ich: Kannst du bitte demnächst per Upload immer ne Bsp-Datei mitliefern?
Damit kann jeder viel besser testen als nur mit textlichen Erklärungen.
Und mit ner Bsp-Datei könnt ich dir auch meinen Code so erklären, dass du ihn vielleicht besser verstehen könntest.
Zitat ...Mit 7 To 13 meist du sicherlich die Zellen die überprüft werden sollen, oder? Was ist aber wenn eine zu überprüfende Zelle z.B. auf E 18 liegt?
Ja, genau, 7 To 13 = die zu prüfenden Zeilen - was anderes hattest du in deinem nur-Code-Bsp ja auch nicht angegeben.
Wenn E18 oder was ganz anderes auch noch geprüft werden muss, dann müsstest du das auch mit erwähnen ;-) Niemand von uns hat eine Glaskugel und weiß, was du meinst, wenn du es nich mitteilst ;-)
Und hier wieder eine "Vorlage", dass eben mit Bsp-Datei vieles einfacher sein kann.
Denn ich bin sicher, in einer Bsp-Datei würdest du alle Zellen (zusätzlich zu D7 - D11) zeigen, die geprüft werden sollen.
Dann hätte ich vielleicht auch schon früher erkannt, dass so mein Code gar nich geht...oder ich hätte meinen bisherigen Code entsprechend angepasst.
So, vielleicht hast du ja den einen oder anderen Hinweis von mir verstanden.
Ciao
Thorsten
Anzeige
AW: Überprüfen ob Zelle leer
10.02.2022 11:46:42
Edmund
Hi Thorsten,
danke für deine Antwort, nun komme ich mir nicht mehr so schlecht vor :-)
Ich werde heute Abend versuchen die Datei hochzuladen.
Habe sie mal gepackt, hat aber immer noch 419 KB und ich glaube bei 400 KB ist hier Schluss.
Muss ich vielleicht das eine oder andere Tabellenblatt entfernen, hoffentlich funktioniert dann noch alles.
lg
Edmund
AW: Überprüfen ob Zelle leer
10.02.2022 12:41:10
Edmund
Deinen Hinweis habe ich verstanden und auch direkt umgesetzt.
Bürotür zugemacht und deinen Code eingepflegt.
Nun weiß ich auch was unter allgemeines Modul zu verstehen ist :-)
Die einzelnen Begriffe sind mir teilweise immer noch unverständlich warum die jetzt dort hinkommen und was sie bewirken, aber das kommt sicher noch.
der Code Funktioniert jedoch einwandfrei, und ob ich jetzt unbedingt noch weitere Felder abfragen muss, mal sehen.
Werde aber trotzdem versuchen die Datei hochzuladen damit du dir das anschauen kannst.
lg Edmund
Anzeige
AW: Überprüfen ob Zelle leer
10.02.2022 13:54:00
Piet
Hallo Edmund
wenn du eine Datei hochladen willst empfehle ich dir in allen Tabellen ab Zeile 20-30 oder 50 bis Blattende die Zeilen zu löschen. Das verringert den UsedRange Bereich!
So könntest du locker unter 300 kB kommen. Um die Datei zu verstehen undf makros zu testen reichen uns zum testen 20-30 Daten pro Tabelle.
mfg Piet
AW: Überprüfen ob Zelle leer
10.02.2022 13:55:57
Piet
offenstellen vergessen, Sorry
AW: Überprüfen ob Zelle leer
10.02.2022 21:13:14
Edmund
Hallo Thorsten,
hier die Datei:
https://www.herber.de/bbs/user/151051.zip
habe einige Blätter für den Ausdruck raus nehmen müssen aber ich denke das was du sehen möchtest geht jetzt auch noch.
Aber wie gesagt, ich bin voll zufrieden. Denke, dass die Abfrage ob noch andere Felder ( Jahr oder Laufzeit ) nicht unbedingt abgefragt werden müssen.
Vielen Dank für deine Hilfe
Anzeige
Und Du willst wirklich...
10.02.2022 22:15:05
{Boris}
Hi,
...dem Anwender gefühlte 100 Messageboxen präsentieren, die alle mit OK bestätigt werden müssen?
Als Anwender würde ich das 1 mal machen - und dann die Anwendung auf immer verdammen.
VG, Boris
AW: Und Du willst wirklich...
11.02.2022 09:19:33
Edmund
Hallo Boris,
mag ja sein, dass das im ersten Anschein für dich so aussieht. Aber ich will keine Fehler produzieren durch eine vergessene Eingabe.
Die Möglichkeit dass der Anwender keinen Eintrag macht und dann berechnen lassen will ist doch gleich Null.
Wenn er ein Feld nicht gefüllt hat, soll er den Hinweis bekommen, gleich welches Feld er vergessen hat.
Somit wird im besten Fall wahrscheinlich kein Hinweis auftauchen, höchstens aber ein oder maximal zwei Hinweise.
Edmund
Anzeige
Nur mal zum Testen...
11.02.2022 11:22:46
{Boris}
Hi,
...der Code für den Button "Angebot drucken":

Private Sub ButtonAngebotDrucken_Click()
Dim arr, arr1, x As Long, s As String
arr = Range("D7:D13")
arr1 = Array("Großkunde", "Eigentümer", "Ort", "Wert 1914", "Baujahr", "Denkmalschutz", "Elementarschutz")
For x = 1 To UBound(arr)
If Len(arr(x, 1)) = 0 Then
s = s & arr1(x - 1) & " in Zeile " & x + 6 & vbLf
End If
Next x
If Len(s) Then
MsgBox s, vbOKOnly, "ImmoGrande-Tool - es fehlt:"
Else
'hier Dein weitere Code - folgende MsgBox nur zu Testzwecken
MsgBox "Alles korrekt!", vbOKOnly, "ImmoGrande-Tool"
End If
End Sub
VG, Boris
AW: Überprüfen ob Zelle leer
11.02.2022 09:50:42
Edmund
Hallo Thorsten,
inspiriert durch deinen Code würde ich gerne einen Schritt weiter gehen und das ganze etwas eleganter gestallten.
Kann man vor der Prüfung der Felder eine If / Then Abfrage stellen?
z.B.
Nur wenn M22 = "Ja" dann deine Abfrage, wenn M22 = "Nein" mach nix.
Wenn ich dann noch hinzufügen könnte:
Wenn M23 = "Ja" dann
Wenn O22 = "Ja" dann
Wenn O23 = "Ja" dann
Die jeweiligen Antworten kann ich dann sicherlich alle in das gleiche Modul schreiben, oder ?
Dim lloCell As Long, lstrMsg As String
pboErr = False 'Modul 2
If .Range ("M22") = "Ja"
With Sheets("Eingabe")
For lloCell = 7 To 13
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
'Überprüfung ob Angaben eingetragen wurden bei Wohneinheiten, Gewerbeeinheiten wenn Angebot für HuG gewünscht
If .Range ("M23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 19 To 20
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
'Überprüfung ob Angaben eingetragen wurden bei Wohneinheiten, Gewerbeeinheiten wenn Angebot für Glas gewünscht
If .Range ("O22") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 19 To 20
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
'Überprüfung ob Angaben eingetragen wurden bei Öltank wenn Angebot für GSH gewünscht
If .Range ("O23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 21
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then or "Nein" 'Hier muss überprüft werden ob leer oder "Nein"
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
AW: Überprüfen ob Zelle leer
11.02.2022 10:26:04
Oberschlumpf
Hi Edmund,
ich melde mich noch, aber das kann vielleicht frühestens erst heut abend was werden.
Ciao
Thorsten
AW: Überprüfen ob Zelle leer
11.02.2022 17:49:37
Edmund
Hi Thorsten,
habe es mal versucht. Geht, aber ich denke du schlägst deine Hände über den Kopf zusammen :-)
Bei der Prüfung der Zelle 21 kann ich nur auf Leer prüfen, nicht aber auch auf Nein
Warum will der Code hier immer ein To haben? For lloCell = 7 To 9 Eine Aufzählung 7; 8; 9; 12 geht nicht. Deshalb habe ich zwei Stufen eingebaut , typisch Laie :-)
'Überprüfung ob Angaben eingetragen wurden bei Großkunde(D7), Besitzer(D8), Versicherungsort(D9), Baujahr(D10), Wert1914(D11), Denkmalschutz(D12), Elementar(D13) wenn VGV(M22) gewünscht
Dim lloCell As Long, lstrMsg As String
pboErr = False 'Modul 2
If Sheets("Eingabe").Range("M22") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 7 To 13
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Großkunde(D7), Besitzer(D8), Versicherungsort(D9), wenn HuG(M23) gewünscht
If Sheets("Eingabe").Range("M23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 7 To 9
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Wohneinheiten(D19), Gewerbeeinheiten(D20) wenn HuG(M23) gewünscht
If Sheets("Eingabe").Range("M23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 19 To 20
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Großkunde(D7), Besitzer(D8), Versicherungsort(D9), wenn Glas(O22) gewünscht
If Sheets("Eingabe").Range("O22") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 7 To 9
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Wohneinheiten(D19), Gewerbeeinheiten(D20) wenn Glas(O22) gewünscht
If Sheets("Eingabe").Range("O22") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 19 To 20
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Großkunde(D7), Besitzer(D8), Versicherungsort(D9), wenn GSH(O23) gewünscht
If Sheets("Eingabe").Range("O23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 7 To 9
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
'Überprüfung ob Angaben eingetragen wurden bei Lage des Tanks(D21) wenn GSH(O23) gewünscht
If Sheets("Eingabe").Range("O23") = "Ja" Then
With Sheets("Eingabe")
For lloCell = 21 To 21
lstrMsg = fcErrCheck(.Range("D" & lloCell).Value, lloCell)
If lstrMsg "" Then
MsgBox lstrMsg, vbExclamation, "ImmoGrandeTool"
End If
Next
End With
End If
If pboErr = False Then
Auswahl_Angebot.Show
End If
AW: Überprüfen ob Zelle leer
11.02.2022 18:07:22
Oberschlumpf
hi Edmund,
sorry, deinen Beitrag versteh ich NULL, und ich mag mich auch nich durch deine gezeigten Codeversuche "durchhangeln".
Ich bin dran, jetzt gerade mit deinen Extrawünschen bzgl Versicherungen beschäftigt, bin bald fertig, glaube ich....mal sehen.
Ciao
Thorsten
ich habe fertig!!!! :-)
11.02.2022 20:44:08
Oberschlumpf
Hi Edmund,
hier, teste mal
https://www.herber.de/bbs/user/151072.zip
(erst "auspacken", nicht ZIP-Datei öffnen und nicht aus der ZIP-Datei die Excel-Datei starten!)
Öffne die Excel-Datei und du siehst...fast nix...zumindest keine Einträge...aaaber vieeel Erklärtext unterhalb deines Tabellen-Formulars
Bitte den erst durchlesen und den "Anleitungen" folgen.
Im Code selbst hab ich auch einige Kommentare hinterlassen.
So, ich denke, all deine Wünsche (und Extra-Wünsche) sollten erledigt sein.
Konnte ich helfen?
Ciao
Thorsten
AW: ich habe fertig!!!! :-)
11.02.2022 21:59:00
Edmund
Hallo Thorsten,
bist du sicher, dass du mir die richtige Datei geschickt hast?
Nach dem auspacken bekomme ich eine Exceldatei mit dem Namen Test vom 27.01.2022 ?
AW: ich habe fertig!!!! :-)
12.02.2022 01:12:36
Oberschlumpf
haha..so kanns passiern! :-)
Ja, hi Edmund, da hab ich mich wohl verklickt.
hier nun die richtige Datei:
https://www.herber.de/bbs/user/151073.zip
Und, hilfts nun?
Ciao
Thorsten
gibts denn noch ne Antwort von dir?! owT
12.02.2022 17:51:52
dir?!
Kenn ich... ;-)) oT
12.02.2022 19:25:56
{Boris}
VG, Boris
AW: gibts denn noch ne Antwort von dir?! owT
12.02.2022 20:58:41
dir?!
Hallo Thorsten,
war heute privat sehr eingespannt, habe die Datei geladen und werde mich morgen damit beschäftigen sie einzubauen.
Sorry, aber mein Sohn brauchte heute meine Hilfe.
Lg Edmund
AW: gibts denn noch ne Antwort von dir?! owT
13.02.2022 02:04:09
dir?!
Hi Edmund
für dich + deinem Sohn alles Gute!
Dann vllt bis morgen.
Ciao
Thorsten
AW: gibts denn noch ne Antwort von dir?! owT
13.02.2022 10:57:28
dir?!
Hallo Thorsten,
ich habe deinen Code eingebaut und bin begeistert. Bis auf die rote Farbe die etwas gewöhnungsbedürftig ist, macht dein Code alles das was ich erhofft habe. Vielen Dank für deine Hilfe.
AW: gibts denn noch ne Antwort von dir?! owT
13.02.2022 11:04:27
dir?!
Hi Edmund
ja, danke schön für deine Antwort - darauf hatte ich gewartet :-)
Denn mit deiner Datei/deinen Fragen war ich schon mehrere Stunden beschäftigt.
Und so freut es mich noch mehr, dass dir nun geholfen werden konnte.
Was die Farbe betrifft:
Wenn du es selbst noch nich geändert hast, such überall in meinem Code nach .Color = 255 (das is der Zahlenwert für rot; vor .Color steht natürlich noch anderer Code - ich bin nur zu faul :-) )
Mach dich zuerst schlau, welcher Zahlencode zu der Farbe gehört, die du besser findest und ersetz dann 255 durch "deinen Warnfarbe-Zahlencode".
Ciao + noch n schönen Sonntag
Thorsten
AW: gibts denn noch ne Antwort von dir?! owT
13.02.2022 11:27:51
dir?!
so nun habe ich auch mal einen Praxistest gemacht, es ist perfekt !!
Danke auch für deine Erklärungen am Anfang. Diese Erklärungen haben mich ein ganzes Stück weiter gebracht VBA zu verstehen.
Nach dem Test muss ich auch ehrlich gestehen: es ist natürlich wesentlich eleganter die Fehler, oder nicht gefüllten Felder alle gesammelt in einer Box auszugeben als die Variante von mir.
Ich werde vielleicht noch die Farbe abändern, aber ansonsten ist das alles perfekt.
Noch mal vielen Dank für deine Hilfe und deine Zeit.
lg Edmund
AW: gibts denn noch ne Antwort von dir?! owT
14.02.2022 19:43:25
dir?!
Hallo Thorsten,
noch ein kurzer Nachgang. Beflügelt von deinen Code und vor allem von deinen Erklärungen habe ich den Code auf ein weites Tabellenblatt (Antrag) angewandt. Perfekt, nun wird auch die letzte Fehlerquelle abgefangen.
Also noch mal vielen Dank für die perfekte Erklärung und deine Hilfe
Lg
Edmund
immer wieder gerne ;-) owT
14.02.2022 20:01:13
Oberschlumpf
Ich lass natürlich offen...
11.02.2022 19:10:51
{Boris}
Hi,
...aber Du bist in der Tat der erste, den ich hier im Forum auf meine "interne" Ignore-List setze.
Dabei hatten "wir" im Laufe Deiner Dateientwicklung schon mal miteinander zu tun.
VG, Boris
Alternativcode
09.02.2022 15:53:48
{Boris}
Hi,

Sub oder_so()
Dim arr, arr1, x As Long, s As String
arr = Range("D7:D13")
arr1 = Array("Großkunde", "Besitzer", "Ort", "Baujahr", "Wert 1914", "Denkmalschutz", "Elementarschutz")
For x = 1 To UBound(arr)
If Len(arr(x, 1)) = 0 Then
s = s & arr1(x - 1) & " in Zeile " & x + 6 & vbLf
End If
Next x
MsgBox s, vbOKOnly, "Es fehlt:"
End Sub
VG, Boris
AW: Alternativcode
09.02.2022 16:40:43
{Boris}
Jetzt auch mit Else-Zweig:

Sub oder_so()
Dim arr, arr1, x As Long, s As String
arr = Range("D7:D13")
arr1 = Array("Großkunde", "Besitzer", "Ort", "Baujahr", "Wert 1914", "Denkmalschutz", "Elementarschutz")
For x = 1 To UBound(arr)
If Len(arr(x, 1)) = 0 Then
s = s & arr1(x - 1) & " in Zeile " & x + 6 & vbLf
End If
Next x
If Len(s) Then
MsgBox s, vbOKOnly, "Es fehlt:"
Else
'hier Dein weitere Code
End If
End Sub
VG, Boris
AW: Überprüfen ob Zelle leer
08.02.2022 14:03:56
Pierre
Hallo Edmund,
Thorsten hat zwar schon was gepostet, aber ich habe da in meiner Sammlung etwas. Zwar nicht direkt die Prüfung, ob Zellen leer sind, aber hierdurch wird eine Eingabe zwingend erforderlich, sonst kommt man nicht zur nächsten Zelle.
Vielleicht hilft dir das auch.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle As Range
For Each zelle In Range("K7, H7, C3")               'Zellen eintragen, in umgekehrter Reihenfolge!
If IsEmpty(zelle) Then                          'Wenn Zelle leer,
Application.EnableEvents = False            'Ereignisse ausschalten (BeforePrint, BeforeSave, BeforeClose, usw.)
zelle.Select                            'Zelle bleibt ausgewählt
Application.EnableEvents = True             'Ereignisse einschalten (BeforePrint, BeforeSave, BeforeClose, usw.)
End If
Next zelle
End Sub
Gruß Pierre
AW: Überprüfen ob Zelle leer
08.02.2022 14:10:30
volti
Und noch 'ne Variante:
Code:

[Cc]

Sub Test() Dim rZelle As Range, i As Integer For Each rZelle In Sheets("Eingabe").Range("D8,D9,D10,D11") i = i + 1 If rZelle.Value = "" Then MsgBox "Es fehlt die Angabe für '" _ & Choose(i, "Besitzer", "Versicherungsort", "Wert1914", "Baujahr!") & "'" _ & vbLf & vbLf _ & "Bitte machen Sie zuerst diese Angabe!", vbExclamation, "ImmoGrandeTool" Exit Sub End If Next rZelle Sheets("Eingabe").Select Sheets("Antrag").Visible = True Sheets("Eingabe").Select ActiveWindow.SelectedSheets.Visible = False End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

AW: Überprüfen ob Zelle leer
09.02.2022 12:38:09
Piet
Hallo
dein Code den du zuletzt gepostet hast KANN so nicht funktionieren. Er müsste Rot markiert sein, wegen gravierendem Syntacsfehler!!
Dort endet deine letzte Abfrage mit OR _ statt mit Then! Das ist in einer If Anweisung nicht erlaubt! Es geht auch viel eleganter!
Lade dir alle leeren Zellen in eine Text Variable, die natürlich vorher Leer sein muss! Und gib alle Fehlermeldungen mit einer einigen MsgBox aus!
mfg Piet
  • 
    Sub test()
    With ActiveSheet
    'If .Range("D7") = "Großkunden auswählen:" Then antwort = MsgBox ("Großkunde fehlt", vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D8") = "" Then antwort = MsgBox ("Besitzer fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D9") = "" Then antwort = MsgBox ("Ort fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D10") = "" Then antwort = MsgBox ("Baujahr fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D11") = "" Then antwort = MsgBox ("Wert 1914 fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D12") = "" Then antwort = MsgBox ("Denkmalschutz fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    .Range("D13") = "" Then antwort = MsgBox ("Elementarschutz fehlt",vbExclamation + vbOKOnly, "ImmoGrandeTool")Or _
    '**  so geht es viel einfacher!!  Und du erfasst alle Daten!
    If .Range("D7") = "" Then Txt = "Großkunden fehlt"
    If .Range("D8") = "" Then Txt = Txt & vbLf & "Besitzer fehlt"
    If .Range("D8") = "" Then Txt = Txt & vbLf & "Ort fehlt"
    'usw.  alle Ranges auflisten!!
    MsgBox Txt, vbExclamation + vbOKOnly, "ImmoGrandeTool"
    End With
    End Sub
    

  • AW: Überprüfen ob Zelle leer
    09.02.2022 13:08:16
    Edmund
    Hallo Piet,
    ja du hast Recht, der komplette Code wird mit rot angezeigt und es kommt die Fehlermeldung " Syntacsfehler" aber mehr auch nicht.
    Lade dir alle leeren Zellen in eine Text Variable, die natürlich vorher Leer sein muss! Und gib alle Fehlermeldungen mit einer einigen MsgBox aus!
    Was meinst du hiermit genau?
    AW: Überprüfen ob Zelle leer
    09.02.2022 16:38:49
    Piet
    Hallo
    im Prinzip meinte ich diesen Teil, hinter dem Kommentar: - '** so geht es viel einfacher!! Und du erfasst alle Daten!
    Die Lösung von Borris ist ja noch einfacher, er macht das ganze über ein Array. Wenn du seinen Code einbaust bekommst sollte es perfekt klappen.
    mfg Piet

    304 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige