Live-Forum - Die aktuellen Beiträge
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

Zellen prüfen funktioniert nicht wie gewünscht

Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 14:13:22
Peter
Hallo ihr Excelspezialisten,
ich habe folgende Tabelle:
Name Vorname Vorname 1.Buchstabe Geschlecht
test w
test 0
test w
test m
test w
test w
test m
test w
test w
0
0
0
0
0
0
0
Folgende Prüfung soll erfolgen:
wenn in dem Bereich, in welchem Text in Spalte A steht und in Spalte D = 0 dann soll Abbruch erfolgen.
wenn der Bereich mit Text in Spalte A und Text in Spalte D vorhanden ist dann soll ein Button aktiviert werden.
Wenn in dem Bereich, in welchem kein Text in Spalte A steht und in Spalte D = 0 dann soll nichts geschehen,
denn wenn letzte Zelle mit Text in Spalte A durchlaufen ist, dann ist auch der Code zu Ende.
Mein bisheriger Test:
Sub Test3()
Dim i As Integer
For i = 2 To 50   'hier muss letzteZelle hinein                '2.-50. Zeile
If Cells(i, 1) = Text And Cells(i, 4) > 0 Then
MsgBox "Grösser 0 = Button aktivieren"
Else
MsgBox "=0"
Exit Sub
End If
Next i
End Sub

Was muss hier bitte geändert werden. Danke für eure Hilfe.
Gruss
Peter

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 14:32:15
ChrisL
Hi Peter
vielleicht reicht schon...
If Cells(i, 1)  "" And Cells(i, 4) > 0 Then
oder...
If Cells(i, 1)  "" And Not IsNumeric(Cells(i,1)) And Cells(i, 4) > 0 Then
Ansonsten lade eine Beispieldatei, weil so sieht man gar nicht was in welcher Spalte steht und ob es Formeln sind oder nicht.
cu
Chris
Chris du alter Schlawiner ;D O.w.T.
29.05.2017 14:36:37
JoNNy
.
AW: Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 14:57:24
Peter
Hallo Chris,
ich füge folgenden Datei bei. https://www.herber.de/bbs/user/113863.xlsm
Es geht darum, dass ich prüfen möchte, ob die Spalte D ordnungsgemäss abgearbeitet ist.
Überall, wo in Spalte A ein Name steht und in Spalte B ein Vorname muss in Spalte D abgearbeitet
werden, ob w = weiblich bzw. m = männlich.
Solange in Spalte D 0 steht und in Spalte A ein Name wird Button z. B. 1 nicht aktiviert.
Erst wenn alle Zeilen mit Text in Spalte A und w oder m in Spalte D wird Button geöffnet.
Ich hoffe ich habe mich verständlich ausgedrückt.
Besten Dank an alle
Gruss
Peter
Anzeige
AW: Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 15:30:21
ChrisL
Hi Peter
Hier ohne Schleife. Einmal mit ZählenWenn prüfen ob in Spalte D keine null vorhanden ist und einmal prüfen ob keine Lücken in A vorhanden sind.
Sub t()
Dim letzteZeile As Long
With Worksheets("Tabelle3")
letzteZeile = .Cells(Rows.Count, 2).End(xlUp).Row
If WorksheetFunction.CountIf(.Range("D2:D" & letzteZeile), 0) = 0 And _
WorksheetFunction.CountBlank(.Range("A2:A" & letzteZeile)) = 0 Then
MsgBox "aktiv"
Else
MsgBox "nicht aktiv"
End If
End With
End Sub
cu
Chris
AW: Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 14:34:07
JoNNy
Hallo Peter,
eigentlich hört sich das nicht so aufwendig an, mir ist aber noch nicht ganz klar was du genau tun möchtest. Vorallem würde ich dir beim rumprobieren While-Schleifen empfehlen, die sind, wie ich aus eigener Erfahrung weiß, einfach zu erweitern oder zu ändern und können das gleiche wie For-Schleifen.
Gruß JoNNy
Anzeige
AW: Zellen prüfen funktioniert nicht wie gewünscht
29.05.2017 14:58:55
Peter
Hallo Jonny,
Testmappe ist bei Chris.
Danke für Deine Hilfe.
Gruss
Peter
So vielleicht? (nicht getestet)
29.05.2017 14:38:51
Max2
Hallo,
probiere es mal damit:
Sub a()
Dim ws As Worksheet
Dim i As Long
Dim lRow As Long
Set ws = ThisWorkbook.Sheets("Dein Sheet")
With ws
'//letzte Zeile aus Spalte 1
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
'//Wenn Zelle xy nicht nichts ist und zelle yx größer null
If .Cells(i, 1).Value  "" And CInt(.Cells(i, 4).Value) > 0 Then
'//dann Message
MsgBox "Button aktiv"
Else
'//message und raus aus schleife
MsgBox "Button nicht aktiv"
Exit For
End If
Next i
End With
End Sub

Anzeige
AW: So vielleicht? (nicht getestet)
29.05.2017 14:59:15
Peter
Hallo Max,
Testmappe ist bei Chris.
Danke für Deine Hilfe.
Gruss
Peter
hier mit deiner Mappe
29.05.2017 15:24:24
Max2
Hallo,
hast du dir das so vorgestellt? (In Modul 3)
https://www.herber.de/bbs/user/113864.xlsm
Hier nur Code:

Sub activate_Button()
Dim ws As Worksheet
Dim i As Long
Dim lRow As Long
Dim temp
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
If .Cells(i, 1).Value  "" Then
If .Cells(i, 4).Value = 0 Then
'//Button deaktiviert
MsgBox "Button nicht aktiv"
Exit For
ElseIf .Cells(i, 4).Text = "w" Or .Cells(i, 4).Text = "m" Then
'//Button aktivieren
MsgBox "Button aktiv"
End If
End If
Next i
End With
End Sub
Basiskenntnisse in VBA sollten aber für einfache If Abfragen ausreichen...
Anzeige
AW: fast ist das Ziel erreicht
30.05.2017 07:32:40
Peter
Hallo Max,
besten Dank für Deine Hilfe.
Leider ist das noch nicht das von mir erwünschte Ziel.
Vielleicht war auch mein Ansatz falsch.
Das Makro in Modul3 geht Zeile für Zeile durch solange in der Spalte A Test beinhaltet ist. Das ist erst einmal richtig. Damit sind die Null-Bereiche in Spalte D in diesem Beispiel ab Zeile 11 unberücksichtigt.
Das von mir erwünschte Ziel ist es, dass solange im Bereich A2:D10 in D eine 0 ist der Button nicht aktiviert wird. Erst wenn keine 0 mehr vorhanden ist - dann soll Button aktiviert werden.
Ist das so machbar?
Besten Dank für Deine Hilfe.
Gruss
Peter
Anzeige
AW: fast ist das Ziel erreicht
30.05.2017 08:27:19
Max2
Dann prüfe einfach mit .Count(0) und .CountA(Array).
Erst Array befüllen, dann auf werte prüfen usw.

Sub activate_Button()
Dim ws As Worksheet
Dim i As Long
Dim lRow As Long
Dim temp()
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
ReDim Preserve temp(i - 2)
temp(i - 2) = .Cells(i, 1)
Next i
'//Wenn in Spalte A nicht überall ein wert steht
'//dann gehe aus dem Sub raus
If Application.WorksheetFunction.CountA(temp)  0 Then Exit Sub
'//Wenn es auf dem Blatt keine Nuller gibt dann
'//mache Button aktiv oder sonst was
If Application.WorksheetFunction.Count(0) = 0 Then
'//Tue was
Else
'//Tue nichts
End If
'Alternativ auch so machbar, mit den nullern
'Erase temp
'For i = 2 To lRow
'ReDim Preserve temp(i - 2)
'temp(i - 2) = .Cells(i, 4)
'Next i
'If Application.WorksheetFunction.Count(0, temp) = 0 Then
End With
End Sub

Anzeige
AW: fast ist das Ziel erreicht
30.05.2017 08:53:29
Peter
Hallo Max,
besten Dank, aber das funktioniert leider nicht wie gewünscht.
Hast Du noch eine andere Idee?
Gruss
Peter
AW: fast ist das Ziel erreicht
30.05.2017 09:13:43
Peter
Hallo Max,
leider funktioniert das noch nicht wie gewünscht.
Hast Du noch eine Idee?
Gruss
Peter
AW: fast ist das Ziel erreicht
30.05.2017 09:58:20
Peter
Hallo Max,
ich habe jetzt ein Makro fertig gestellt mittels eurer Vorgabe:
Sub test_2()
Dim ws As Worksheet
Dim i As Long
Dim lRow As Long
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
If .Cells(i, 1).Value  "" And .Cells(i, 4).Value = 0 Then
MsgBox "Spalte D noch nicht fertig bearbeitet - Button nicht aktiviert"
Exit For
ElseIf .Cells(i, 4).Text = "w" Or .Cells(i, 4).Text = "m" Then
MsgBox "Button aktiv"
End If
Next i
End With
End Sub
Der einzige Fehler ist jetzt noch, dass in jeder geprüften Zeile die MsgBox erscheint je nach Ergebnis.
Ich benötige dies jedoch so, dass die MsgBox nur dann erscheint, wenn alle Zeilen durchlaufen sind:
Je nach Ergebnis: wenn einmal 0 vorkommt MsgBox "Spalte D noch nicht fertig bearbeitet - Button nicht aktiviert"
und wenn alles o.k. ist dann MsgBox "Button aktiv".
Wie kann man dies erreichen? Danke für Deine Hilfe.
Gruss
Peter
Anzeige
AW: fast ist das Ziel erreicht
30.05.2017 11:54:15
Piet
Hallo Peter
probiere es mal damit, würde mich freuen wenn es klappt. Es ist dein eigener Code, nur geandert.
mfg Piet
Sub test_2()
Dim ws As Worksheet
Dim i As Long
Dim lRow As Long
Dim n As Long, m As Long, Zeile
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
If .Cells(i, 1).Value  "" And .Cells(i, 4).Value = 0 Then
Zeile = Zeile & ", " & i  'Zeile/n merken
n = n + 1                 'Anzahl merken
ElseIf .Cells(i, 4).Text = "w" Or .Cells(i, 4).Text = "m" Then
m = m + 1   'Okay Anzahl merken
End If
Next i
If n > 0 Then Zeile = Right(Zeile, Len(Zeile) - 2)   '1. Kamma abschneiden
If m = lRow - 1 Then MsgBox "Button aktiv"
If n > 0 Then MsgBox "Spalte D noch nicht fertig bearbeitet - Button nicht aktiviert" &  _
Chr(10) & n & "  Zeile/n:  =  " & Zeile
End With
End Sub

Anzeige
AW: Ziel erreicht
30.05.2017 11:59:10
Peter
Hallo Piet,
absolut Super - genau das was ich gesucht habe.
Wünsche Dir noch einen wunderschönen Tag.
Gruss
Peter

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige