Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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

Leere Zellen ins Spalten finden und ausgeben

Leere Zellen ins Spalten finden und ausgeben
25.05.2013 18:03:14
Erwin
Hallo Excelspezialisten,
ich habe eine Tabelle mit Daten von derzeit B7 bis S256, die zwar einen Blattschutz hat, aber viele Benutzer können sich bei den freigegebenen Zellen austoben.
Es ist (leider) auch erlaubt, neue Zeilen einzufügen; dadurch werden einige Formeln nicht in die neue Zeile übernommen und Berechnungen werden falsch.
Mit nachfolgendem Makro versuche ich das zu überwachen, aber da bleibe ich immer bei der 256. Zeile hängen.
Sub Leerzelle()
For Each rng In Range("k7:k256")
If IsEmpty(rng) Then MsgBox "In Spalte k bei Zelle k" & rng.Row & " fehlt eine Formel !!!  " _
_
& vbLf & _
"Die Formel muss nachprogrammiert werden !!!": Exit Sub
Next
MsgBox "keine leere Zelle gefunden"
End Sub

Folgende Probleme habe ich:
1. Ich brauche das nicht nur für Spalte "K" sondern danach auch noch für andere Spalten.
Wie füge ich das hier an und mache auch die Meldung variabler?
2. Wenn Zeilen eingefügt wurden, ist ja K256 nicht mehr die letzte Zeile.
Kan man das variabel gestalten?
Das Problem mit "...last row..." ist, dass jetzt nach den 256 Zeilen 5 Leerzeilen kommen und danach eine Art von Auswertung, die genau auf diesem Blatt bleiben muss.
Wer kann mir bitte helfen?
Grüße - Erwin

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
dann deaktiviere doch "Zeilen einfügen" owT
25.05.2013 18:16:18
Matthias

AW: dann deaktiviere doch "Zeilen einfügen" owT
25.05.2013 18:19:43
Erwin
Hallo Matthias L,
wenn das ginge, würde ich es gerne machen, aber die Mitarbeiter müssen das erledigen, da ich sonst immer wieder hier was machen müsste, dafür habe ich keine Zeit.
Erwin

Da solltest Du nachbessern!
25.05.2013 18:32:35
Matthias
Hallo
If IsEmpty(rng) Then MsgBox "In Spalte k bei Zelle k" & rng.Row & " fehlt eine Formel !!!  ... usw.
Sobald was in K7 (auch wenn keine Formel!) steht kommt Exit Sub
Schreib mal in K7 irgend einen Text und starte den Code.
Somit ist der Hinweis auf eine fehlende Formel eh verwirrend.
Formeln prüft man so:
If RnG.HasFormula Then ...
Gruß Matthias

Anzeige
AW: Da solltest Du nachbessern!
25.05.2013 18:37:57
Erwin
Hallo Matthias,
bei mit ist das nicht so; die Meldung lautet, dass in K257 etwas fehlt.
Aber wie du aus meinem Level ja sehen kannst, bin ich nur jemand, die Codes zusammenbaut, da er nicht selbst programmieren kann...:(
Wenn du eine Lösung für mein Problem hast, wäre es nett, wenn du es auch posten würdest; mit Codeschnipsel komme ich nicht weiter.
Danke
Erwin

AW: Da solltest Du nachbessern!
25.05.2013 19:08:59
Erwin
Hallo Matthias,
bei mit ist das nicht so; die Meldung lautet, dass in K257 etwas fehlt.
Aber wie du aus meinem Level ja sehen kannst, bin ich nur jemand, die Codes zusammenbaut, da er nicht selbst programmieren kann...:(
Wenn du eine Lösung für mein Problem hast, wäre es nett, wenn du es auch posten würdest; mit Codeschnipsel komme ich nicht weiter.
Danke
Erwin

Anzeige
mir fehlt die Datei zum Testen ...
25.05.2013 19:17:47
Matthias
Hallo Erwin
Ich habe Deinen Beitrag von 18:37:57 gelesen.
Es besteht auch kein Grund es doppelt zu posten.
Ich habe im Moment für Dein Problem keine Lösung.
Die Wahrscheinlichkeit schneller Hilfe zu erhalten, ist die Datei hochzuladen.
Persönl. Daten bitte entfernen!
Gruß Matthias

Testdatei anbei
25.05.2013 20:05:28
Erwin
Hallo Matthias
hier habe ich mal eine Beispielsdatei gemacht; die roten Zellen haben keine Formel...
https://www.herber.de/bbs/user/85522.xlsm
Vielleicht gibt's ja eine flexible Lösung für mein Problem.
Sorry für's Doppelposting, war keine Absicht.
Erwin

Anzeige
AW: Testdatei anbei
26.05.2013 11:15:03
Matthias
Hallo Erwin
Hab für Zelle K258 einen Namen definiert.
Bezeichnet als EndeBereich
Fügt jetzt oberhalb jemand eine Zeile ein verschiebt sich die Zelle mit dem definierten Namen um eine Zeile nach unten. Die Variable Loletzte erhält dadurch die neue letzte Zeilennr.
https://www.herber.de/bbs/user/85526.xlsm
Gruß Matthias

Testdatei funktioniert super - kurze Nachfrage
26.05.2013 13:44:22
Erwin
Hallo Matthias,
erstmal herzlichen Dank für deine Mühe, das funktioniert ja super, auch, dass er die nächsten Zellen in Spalte K ausgibt.
Jetzt bräuchte ich nur noch eine Anpassung, dass er danach noch die Spalten P, R und S prüft und entsprechend ausgibt, so ne Art Schleife.
Sub Leerzelle()
Dim RnG As Range
Dim Loletzte&, x&
Loletzte = Range("EndeBereich").Row - 1
For x = 9 To Loletzte
If IsEmpty(Cells(x, 11)) Then
MsgBox "In K" & x & " fehlt eine Formel und muss nachprogrammiert werden"
End If
Next
End Sub

Danke - Erwin

Anzeige
hier die Schleife ...
26.05.2013 15:38:02
Matthias
Hallo
Du willst ne Schleife, bitte ...
Option Explicit
Sub Leerzelle()
Dim RnG As Range
Dim Loletzte&, x&, j&
Loletzte = Range("EndeBereich").Row - 1
For j = 11 To 19
If j = 12 Then j = 16
If j = 17 Then j = 18
For x = 9 To Loletzte
If IsEmpty(Cells(x, j)) Then
MsgBox "In " & Cells(x, j).Address(0, 0) & " fehlt eine Formel ..."
End If
Next
Next
End Sub
Bei den vielen leeren Zellen in Spalte(S) würde ich aber verzweifeln ;o)
Außerdem, wenn jemand eine neue Zeile einfügt in in allen Spalten (also auch P, R und S) die entsprechende Zelle Empty
Gruß Matthias

Anzeige
du hast Recht
26.05.2013 18:42:26
Erwin
Hi,
danke für die Schleife; mit der Spalte S hastu du Recht, da ist zu viel leer.
Ich glaube, ich prüfe die Spalte lieber mal nicht, verbinde aber die Zellen, damit ich es sofort sehe, wenn keine Zahl / kein Ergebnis erscheint.
Danke - Erwin

Du kannst schon prüfen, aber eben anders ...
26.05.2013 19:05:32
Matthias
Hallo
So kannst Du wenigstens auch abbrechen.
Option Explicit
Sub Leerzelle()
Dim RnG As Range
Dim Loletzte&, x&, j&
Loletzte = Range("EndeBereich").Row - 1
For j = 11 To 19
If j = 12 Then j = 16
If j = 17 Then j = 18
For x = 9 To Loletzte
If IsEmpty(Cells(x, j)) Then
If MsgBox("In " & Cells(x, j).Address(0, 0) & " fehlt eine Formel ..." & vbLf & vbLf & " _
weiter suchen?", vbYesNo)  vbYes Then Exit Sub
End If
Next
Next
End Sub
Gruß Matthias

Anzeige
Genial - thx
26.05.2013 19:26:21
Erwin
Servus,
das ist ja allerbestens, dann brauche ich nicht auf der OK Taste bleiben...:)
Grüße - Erwin

Genial wäre, gleich die Formel einzutragen ;-) oT
26.05.2013 19:33:30
Matthias

AW: Genial wäre, gleich die Formel einzutragen ;-) oT
26.05.2013 21:28:11
Erwin
Hi,
wie meinst du das?
welche Formel?
Wie soll das gehen?
Erwin

Die Formel könntest du ja im Pgm als ...
26.05.2013 21:52:01
Luc:-?
…TextKonstante halten (ggf mit Platzhaltern), Erwin,
und dann bei Bedarf gleich in die Zelle schreiben, in der sie fehlt. So mache jedenfalls ich so etwas und genau das wird auch Matthias meinen! ;-)
Gruß Luc :-?

Sorry - da musst du mir noch weiterhelfen
26.05.2013 22:01:37
Erwin
Hi Luc,
ich mache zwar einiges in Excel, aber das habe ich noch nicht gebraucht / gemacht.
Wo soll ich was einfügen?
Es geht noch immer um dieses Makro.
Eine Beispielsdatei gibt es auch: https://www.herber.de/bbs/user/85526.xlsm
Sub Leerzelle()
Dim RnG As Range
Dim Loletzte&, x&, j&
Loletzte = Range("EndeBereich").Row - 1
For j = 11 To 19            'Spalte K bis S
If j = 12 Then j = 16
If j = 17 Then j = 18
For x = 7 To Loletzte      'ab Zeile 7 wird geprüft
If IsEmpty(Cells(x, j)) Then
If MsgBox("In " & Cells(x, j).Address(0, 0) & " fehlt eine Formel ..." & vbLf & _
"weiter suchen?", vbYesNo)  vbYes Then Exit Sub
End If
Next
Next
End Sub

Erwin

Anzeige
offen - da musst du mir noch weiterhelfen
26.05.2013 22:38:14
Erwin
Hab vergessen auf "offen" zu setzen

AW: offen - da musst du mir noch weiterhelfen
27.05.2013 07:26:05
fcs
Hallo Erwin,
das automatische Einfügen der Formeln nach OK könnte man wie folgt lösen.
Allerdings muss du in Spalte P die Datengültigkeitsprüfung löschen, da deine einen Leerstring zurückgeben kann, was zu einem Fehler im Ablauf fürht, da deine Datengültigkeit als Ergebnis eine Zahl &gt 0 erfordert.
Gruß
Franz
Sub Leerzelle()
Dim RnG As Range
Dim Loletzte&, x&, Spalte&, Antwort&
Loletzte = Range("EndeBereich").Row - 1
For x = 9 To Loletzte
For Spalte = 1 To 19
Select Case Spalte
Case 11, 16, 18
If IsEmpty(Cells(x, Spalte)) Then
Cells(x, Spalte).Select
Antwort = MsgBox("In " & Cells(x, Spalte).Address _
& " fehlt eine Formel und muss nachprogrammiert werden", _
vbYesNoCancel, "Prüfen leere Zellen")
If Antwort = vbYes Then
Select Case Spalte
Case 11 'K
'Formel Spalte K
ActiveSheet.Cells(x, Spalte).FormulaR1C1 = _
"=IF(RC[-1]="""","""",IF(RC[-1]=System!R6C18," _
& """nein"",""Fehler"")))"
Case 16 'P
'Formel Spalte P
ActiveSheet.Cells(x, Spalte).FormulaR1C1 = _
"=IF(RC[-2]="""","""",IF(RC[-1]="""",RC[-2],RC[-2]-RC[-1]))"
Case 18 'R
'Formel Spalte R
ActiveSheet.Cells(x, Spalte).FormulaR1C1 = _
"=IF(RC[-4]="""","""",IF(RC[-3]="""",1,RC[-2]/RC[-4]))"
End Select
ElseIf Antwort = vbCancel Then
GoTo Beenden
End If
End If
End Select
Next
Next
Beenden:
End Sub

Anzeige
AW: FormulaLocal = "=DeineFormel" - super genial
27.05.2013 09:12:49
Erwin
Hallo,
das ist jetzt die Steigerung von "genial" - finde kein Wort dafür :)
Nochmals herzlichen Dank für die große Mühe, die du dir gemacht hast.
Für die 3 anderen Spalten schaffe ich das schon.
Schönen Tag
Erwin

...Was ist m.Franz? Hat sich doch auch bemüht! orT
27.05.2013 09:37:34
Luc:-?
Gruß Luc :-?

Danke natürlich an ALLE ist doch klar
27.05.2013 12:19:55
Erwin
Sorry,
der Dank geht natürlich an alle fleißigen Helfer und Helferinnen, egal ob sie mit einen oder xxx Beiträgen hier und anderswo ihr Wissen weitergeben...
Erwin

345 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige