Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten 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)
Antworten 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.
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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