In Spalte nach Wort suchen VBA
#1
Hallo!

Ich weiß nicht warum, aber ich bekomme es einfach nicht mehr hin!
Ich möchte gerne in der Spalte K im Tabellenblatt Januar Das Wort Nein Suchen!
Das ganze soll über eine Schleife laufen, bis zur letzten beschriebenen Zeile in der Spalte.
Wenn das Wort Nein gefunden wurde soll eine MSG Box  mit der Adresse, Spalte und Zeile erscheinen und der anzahle der gefunden Adressen.
Ich bekomme dies einfach nicht mehr hin.
Beim öffenen der Datei erscheint eine Userform, dort ist der CommandButton7 damit soll die suche gstartet werden
Ich hoffe auf eure Hilfe


Angehängte Dateien
.xlsm   Anzeige Rep.xlsm (Größe: 46,03 KB / Downloads: 6)
mfg
Michael
:98:

WIN 10  Office 2019
Top
#2
Hi

In der Excelhilfe findest du zu Range.Find schon das Grundgerüst für deine Anfrage.  
Habe es etwas an deine Beschreibung angepasst, weis jetzt aber nicht ob die MsgBox bei jedem Fund erscheinen sollte oder nur am Schluss als Zusammenfassung.

Code:
Dim rngZ As Range
Dim StrAd As String
Dim n As Long

With Worksheets("Januar").Columns("k")
    Set rngZ = .Find("Nein", LookIn:=xlValues)
    If Not rngZ Is Nothing Then
        Do
          StrAd = StrAd & rngZ.Address & " / "
          n = n + 1
          Set rngZ = .FindNext(rngZ)
        Loop While Not rngZ Is Nothing And rngZ.Address <> Split(StrAd)(0)
    End If
End With
MsgBox StrAd & " Anzahl " & n
End Sub

Gruß Elex
Top
#3
Ich frage mich, was du mit der Msgbox bezweckst. Die hat doch keinen Mehrwert. Und schon gar nicht, wenn jedes gefundene Nein eine Msgbox auslösen soll (was zumindest deiner Beschreibung entspricht).

Die Anzahl lässt sich ganz simpel mittels Zählenwenn feststellen. Wofür du die Adressen der Zellen brauchst, weiß ich nicht.
Code:
Sub Test()
Dim adr As Range
Dim Anz As Integer
Set adr = Worksheets("Januar").Range("K2:K100")
Anz = Application.WorksheetFunction.CountIf(adr, "Nein")
MsgBox "Es wurden " & Anz & " Adressen gefunden"
End Sub
Schöne Grüße
Berni
Top
#4
Hallöchen,

ich denke, wenn die Anzahl ausgegeben werden soll, dass die Msgbox dann eher an's Ende gehört.
Unter drei Voraussetzungen geht das auch ohne Schleife.
1. Es stört Dich nicht, wenn statt Zeile und Spalte die Adresse ausgegeben wird
2. Es stört Dich nicht, wenn bei aufeinanderfolgenden Nein eine Bereichsangabe erfolgt statt die Zellen einzeln aufzulisten
3. Deine Liste filterst Du vorher nach Nein (oder das Makro wird erweitert und übernimmt's für Dich)

Hinweise:
1. Im Makro hab ich den Bereich A2:A6 genommen. Den müsstest Du entsprechend Deiner Liste anpassen. Ansonsten hast Du in der Bereichsangabe noch die leeren Zellen unter Deiner Liste. Wenn die letzte Zeile variabel sein kann, könnte eine Makroerweiterung auch die Zeilennummer feststellen.
2. Beim Zählen kann man auch, wie schon geschrieben, WorkSheetFunction.CountIf verwenden.

PHP-Code:
Sub NoGo()
MsgBox Range("A2:A6").SpecialCells(xlCellTypeVisible).Address vbLf "Anzahl: " Range("A2:A6").SpecialCells(xlCellTypeVisible).Cells.Count
End Sub 
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Hi,

und das Ganze ohne VBA nur mit Formeln:


Code:
=Aggregat(15;6;zeile(K:K)/(K:K="Nein");Zeile(a1))
=Zählenwenn(K:K;"Nein")
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#6
Hallo!
Vielen Dank an alle, für die Hilfe!
Ich habe den Code von Elex erstmal genommen.
Beantworte erstmal alle Fragen:
@ all die MsgBox dient nur zum kontrollieren, wo der Code was gefunden hat.
Ich hoffe damit ist die Frage zur MsgBox beantwortet, sie wird im weiteren Code nicht mehr benötigt.
 @ Opa Edgar es sollte eine VBA Lösung sein, danke für deine Antwort zum Thema
@Andre:


Zitat:ich denke, wenn die Anzahl ausgegeben werden soll, dass die Msgbox dann eher an's Ende gehört.
Unter drei Voraussetzungen geht das auch ohne Schleife.
1. Es stört Dich nicht, wenn statt Zeile und Spalte die Adresse ausgegeben wird
2. Es stört Dich nicht, wenn bei aufeinanderfolgenden Nein eine Bereichsangabe erfolgt statt die Zellen einzeln aufzulisten
3. Deine Liste filterst Du vorher nach Nein (oder das Makro wird erweitert und übernimmt's für Dich)

Zu Punkt 3
Ich filtere die Liste nicht vorher, das Makro soll in der Spalte nach Nein suchen, egal was in der nächsten Zeile steht.
Zu Punk 1+2
Doch es stört mich das die Adresse ausgegeben wird!
Ich möchte lieber eine Ausgabe der Spalte und Zeile!
Habe es wieder mal sehr schlecht beschrieben. Sorry!

Versuche mal dass zu beschreiben wofür es gebraucht wird:

Wir bekommen Täglich Störmeldungen per Mail zugesendet, diese werden auch ausgedruckt und in einer Excel Tabelle hinterlegt. Die Tabelle ist fortlaufend.
Der als erstes da ist, legt die ausgedruckten Meldungen auf eine Tisch. Die Mitarbeiter kommen nach für nach und nehmen sich eine Meldung und gehen zur Störungsbeseitigung. Es kommt dann vor das keiner weiß wo ein Mitarbeiter ist oder ob die Störung schon bearbeitet wird. Dies soll durch eine Ansicht über Excel verbessert werden. Mein Gedanke dann, Warum nicht eine UF wo alle was eintragen können. Ich möchte das visuell  machen.
Der Mitarbeiter geht her und wählt seinen Namen in der UF aus und  trägt die Anfangszeit ein. Name ausgewählt wird das Frame farbig und man weiß dort wird schon dran gearbeitet.
Alle Meldungen die in der Excel Tabelle unter „Abgeschlossen“ mit „Nein“ stehen sollen in der UF sichtbar sein.

Dafür ist es auch hilfreich wenn ich weiß wo das Nein gefunden wurde, Zeile, Spalte und Anzahl.

Die Anzahl damit ich weiß, wie viele Frames eingeblendet werden sollen.
Noch eine Anmerkung, die Meldungen werden in der UF als Frames dargestellt, in dem Frame sind Textboxen,Comboboxen, optionssbutton und
CheckBoxen entahlten. Die geben dem User dann alle Info's,  wie in der Beispiel Datei zu sehen ist.

Ich hoffe ich habe euch nicht allzu sehr verwirrt.

Aber nochmal Danke für die Hilfe
mfg
Michael
:98:

WIN 10  Office 2019
Top
#7
Hallo Michael,
Das hat schon gepasst. Ich wollte nur aufzeigen dass es unter bestimmten Bedingungen einfacher gehen könnte.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste