VBA Wenn eine Zelle mehrerer Spalten leer dann msgbox?

2 Antworten

Hallo,

es fehlt ein "End With" ist mir grade aufgefallen.

ich kann gern nochmal nachschauen ob ich noch was finde. (denke aber da wird Suboptimierer schon schneller gewesen sein ;) )

Gruß

Dennis

Woher ich das weiß:Berufserfahrung
Fabian13199 
Fragesteller
 04.02.2019, 09:43

Das Ent With steht weiter unten im Code. Ich habe nicht den ganzen Code angefügt, nur den eigentlich relevanten Teil.

1
derDennis99de  04.02.2019, 09:51
@Fabian13199

achso meiner Meinung nach solltest du erstmal die Programmstukur in griff griegen. Denn sowas mit dem end with kommt eigentlich gleich nach dem With. Sprich: With Range("A1") bla bla end with. Aber dies ist nur ein Tipp :)

1
derDennis99de  04.02.2019, 09:59
@Fabian13199

an deiner Stelle würde ich auch eine Schleife machen, wenn Du den Anwender dazu "zwingen" möchtest, dass er alles ausfüllt.
das heißt: Eine schleife die in einem Bereich (z.b.Range("A:C")) JEDE Zelle durläuft und schaut ob diese leer oder befüllt ist. wenn diese NICHT befüllt ist kommt eine meldung und und und. danach weiter lesen bis man an der letzten Zelle ist.
hat 2 Vorteile:
1. Die Programm übersicht ist besser.(falls da jemand nach ein oder zwei jahren nochmal ran muss)
2. du gehst sicher das ALLE Zellen befüllt sind.

hinzu kommt das du noch eine extra Sub brauchst mit einer weiteren Schleife die im hintergrund ausgeführt wird und wartet, bis der Anwender in dieser Zelle was eingegeben hat. Dann geht es weiter.

1

Du kannst mit dem Debugger Schritt für Schritt bis zu der Fehlerzeile debuggen. Hast du das schon gemacht?

Mir fällt nichts Ungewöhnliches auf, außer dass ich leere Klammern hinter

"Call Leere_zellen_hervorheben" setzen würde.

Das With ergibt in der Sub keinen Sinn. Kannste meine ich streichen. Ich würde sowieso auf With-Anweisungen verzeichten. Besser, du definierst dir kurze, knackige Variablen.

Woher ich das weiß:Hobby
Fabian13199 
Fragesteller
 04.02.2019, 09:44

Ja das habe ich schon. Er schlägt dann Alarm bei der Zeile mit "If Bereich.Value = "" Then" mit der Fehlermeldung Typen unverträglich

0
Suboptimierer  04.02.2019, 09:47
@Fabian13199

Dann weiß er nicht, wie er den Vergleich auf mehrere Zellen anwenden soll, beziehungsweise Bereich.Value ist schon nicht eindeutig.

Du kannst die Application.WorksheetFunctions verwenden, z. B. CountBlank oder andere Count-Funktionen.

https://docs.microsoft.com/de-de/office/vba/api/excel.worksheetfunction.countblank

Oder du gehst den Bereich zufuß durch:

Dim Zelle As Range
For Each Zelle in Bereich
  If Zelle.Value = "" Then 
   ...
   Exit For
  End If
Next
1
Suboptimierer  04.02.2019, 10:12
@derDennis99de

Ich kann auch nicht immer zugegen sein. ;) Das wird sicherlich nicht die letzte Excelfrage gewesen sein.

0