Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1120to1124
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
String im Array suchen und Treffer anzeigen
Udo
Hallo,
ich bräuchte mal Eure fachmännische Hilfe.
Ich möchte einen Begriff aus einer TextBox in 12 verschiedenen Tabellenbättern suchen, und die gefundenen Einträge mit den entsprechenden Tabellenblatt-Namen anzeigen lassen.
Meine bisherigen "Versuche" lassen mich verzweifeln ...
(mein Versuch)
Private Sub CommandButton_suchen_Click()
Dim arr As Variant, tbsuch As String
arr = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
"September", "Oktober", "November", "Dezember")
tbsuch = TextBox_suchen.Value
For Each tbsuch In arr
If TextBox_suchen.Value = True Then
MsgBox Worksheet.Name
Exit For
End If
Next
End Sub

Für Eure Hilfe im Voraus vielen Dank,
Udo
AW: String im Array suchen und Treffer anzeigen
29.11.2009 00:45:36
IngGi
Hallo Udo,
so?
Private Sub CommandButton_suchen_Click()

Dim arr As Variant
Dim tbsuch As String
Dim intTB As Integer

arr = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
     "September", "Oktober", "November", "Dezember")
tbsuch = TextBox_suchen.Value

For intTB = 0 To 11
  If Not Worksheets(arr(intTB)).Cells.Find(What:=tbsuch, LookAt:=xlPart) Is Nothing Then
    MsgBox Worksheets(arr(intTB)).Name
    Exit For
  End If
Next 'intTB 
   
End Sub
Code eingefügt mit VBA in HTML 2.0.0.3size>
Gruß Ingolf
Anzeige
AW: String im Array suchen und Treffer anzeigen
29.11.2009 01:11:12
Udo
Hallo Ingolf,
ja fast.
Leider gibt er mir immer nur den Wert in "Januar" wieder. Die anderen Monate werden nicht angezeigt (In Februar, März und Juni ist der Wert aber auch vorhanden.).
Kann man das so machen, dass in der Box alle gefundenen Treffer gleichzeitig anzeigt?
Aber ich hab keine Fehlermeldung mehr ... *freu*
Gruß,
Udo
hier mein Vorschlag dazu.
29.11.2009 06:44:06
Tino
Hallo,
Private Sub CommandButton1_Click()
Dim varArr As Variant
Dim tbsuch$
Dim i%, ii%, iTreffer%

varArr = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
     "September", "Oktober", "November", "Dezember")

tbsuch = TextBox_suchen.Value

With Application.WorksheetFunction
    For i = 0 To 11
        ii = IIf(i = 8 Or i = 10, 1, 2)
        iTreffer = .CountIf(Sheets(varArr(i)).UsedRange, tbsuch)
        varArr(i) = varArr(i) & String(ii, vbTab) & " '" & iTreffer & "' " & vbCr
    Next 'intTB 
End With

MsgBox Join(varArr, ""), vbInformation, "Trefferliste"
End Sub
Gruß Tino
Anzeige
AW: hier mein Vorschlag dazu.
29.11.2009 10:31:08
Udo
Hallo Tino,
die MsgBox ist genau so wie ich meinte... Danke !!!
Leider "vergisst" die Formel manchmal einen Treffer anzuzeigen. (wenn ich z.B.: "Miete" suche, zeigt er mir in Februar eine null an).
Aber zum besseren Verständnis habe ich die Datei mal hochgeladen.
https://www.herber.de/bbs/user/66253.xls
Gruß,
Udo
AW: hier mein Vorschlag dazu.
29.11.2009 10:50:03
Nepumuk
Hallo,
dann versuch es mal so:
Private Sub CommandButton_suchen_Click()
    Dim strMonthArray(1 To 12) As String, strFirstAddress As String
    Dim lngMonth As Long, lngCounter As Long
    Dim objCell As Range
    For lngMonth = 1 To 12
        lngCounter = 0
        strMonthArray(lngMonth) = MonthName(lngMonth)
        With Worksheets(strMonthArray(lngMonth))
            Set objCell = .Cells.Find(What:=TextBox_suchen.Text, _
                LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
            If Not objCell Is Nothing Then
                strFirstAddress = objCell.Address
                Do
                    lngCounter = lngCounter + 1
                    Set objCell = .Cells.FindNext(objCell)
                Loop Until objCell.Address = strFirstAddress
            End If
        End With
        strMonthArray(lngMonth) = strMonthArray(lngMonth) & _
            String(IIf(lngMonth = 9 Or lngMonth >= 11, 1, 2), vbTab) & " '" & _
            CStr(lngCounter) & "' " & vbCr
    Next
    Set objCell = Nothing
    MsgBox Join(strMonthArray, ""), vbInformation, "Trefferliste"
End Sub

Gruß
Nepumuk
Anzeige
AW: hier mein Vorschlag dazu.
29.11.2009 10:57:55
Udo
Hallo Nepumuk,
das funktioniert perfekt !!!
DANKE !! (auch an die vorherigen Mithelfer)
Aber eine kleine Frage habe ich dann doch noch ...
Kann man anstatt der "1" ein "Ja", und anstatt der "0" ein leeres Feld anzeigen lassen? (der schnelleren Übersicht wegen)
Aber nur, wenn das nicht viel Aufwand ist.
Ansonnsten vielen herzlichen Dank nochmal,
Gruß,
Udo
AW: hier mein Vorschlag dazu.
29.11.2009 11:10:05
Nepumuk
Hallo,
dann so:
Private Sub CommandButton_suchen_Click()
    Dim strMonthArray(1 To 12) As String
    Dim lngMonth As Long
    Dim blnFound As Boolean
    Dim objCell As Range
    For lngMonth = 1 To 12
        strMonthArray(lngMonth) = MonthName(lngMonth)
        Set objCell = Worksheets(strMonthArray(lngMonth)).Cells.Find( _
            What:=TextBox_suchen.Text, LookIn:=xlValues, _
            LookAt:=xlPart, MatchCase:=False)
        blnFound = Not objCell Is Nothing
        strMonthArray(lngMonth) = strMonthArray(lngMonth) & _
            String(IIf(lngMonth = 9 Or lngMonth >= 11, 1, 2), vbTab) & _
            IIf(blnFound, "Ja", "Nein") & vbCr
    Next
    Set objCell = Nothing
    MsgBox Join(strMonthArray, ""), vbInformation, "Trefferliste"
End Sub

Gruß
Nepumuk
Anzeige
DANKE !!!
29.11.2009 11:14:20
Udo
Hallo Nepumuk,
D A N K E !!!
Das ist perfekt.
Gruß,
Udo
Perfekt ?....
29.11.2009 11:20:22
robert
Hi,
hab mir diesen beitrag angesehen wg.Tino und Nepumuk lösungen-die sind OK ;-)
...aber hast du schon zB.im september ein jänner datum eingetragen ?
sollte doch nicht möglich sein-oder ?
nichts für ungut.. :-)
gruß
robert
AW: Perfekt ?....
29.11.2009 11:27:49
Udo
Hallo Robert,
was ist ein "jänner Datum"?
solltest Du den Text "Übertrag aus 2008" meinen, da kann ich helfen. Ich habe die Datei auf 300kb verkleinern müssen und alle einträge (bis auf die Testeinträge) gelöscht und anschließend umbenannt (damit ich nicht ausversehen im "Original" herumprobiere).
Ansonnsten kläre mich bitte auf.
Gruß,
Udo
Anzeige
AW: Perfekt ?....
29.11.2009 16:53:02
robert
Hi Udo,
ich meinte folgendes:
gib mal zB. im September-Kassabuch bei einer Ausgabe ein Jänner-Datum ein.
ME dürfte im jeweiligen Monatkassabuch nur das jeweilige Monatsdatum möglich sein.
Denn wenn du im Jänner eine Ausgabe hast, kannst Du sie doch nicht im September mit Jänner
Datum eintragen.
Probier es einmal aus.
Gruß
robert
AW: Perfekt ?....
29.11.2009 17:27:55
Udo
Hallo Robert,
nachdem ich erst mal bei Wikipedia nachgelesen habe was ein "Jänner-Datum" ist, weiß ich was Du meintest.
Du hättest aber auch einfach "Januar-Datum" sagen können - nicht wahr? (selten gebräuchlich im Süddeutschen Raum und teilen Österreichs).
Hättest Du Dir meine hochgeladene Datei RICHTIG angeschaut...., dann wüsstest Du, dass bei einer Monats-Auswahl in der Maske AUTOMATISCH zum RICHTIGEN Monats-Blatt gesprungen wird.
Ich fände es einen schönen Zug von Dir, wenn Du in Zukunft erst liest bevor Du die Hilfe und die damit verbundene Arbeit nicht mit diesen unsinnigen kommentaren verunglimpfst.
Danke !
Gruß,
Udo
Anzeige
WAS IST LOS ?..
29.11.2009 18:16:02
robert
..ich hab mir deine datei angeschaut und zB. mit September getestet-
was steht im september ? ein Januar(Jänner) Datum-oder ?
ins monatsblatt wird gesprungen-ok
du hast deine datei gar nicht so getestet wie ich, aber dumme sprüche klopfen!!!!!!!
September
 BCDEFGH
1        Kassenbuch
2       
3       
4       
5MonatSeptember        Blatt Nr. 1
6Jahr2000         
7EinnahmenAusgabenMwSt. 7%MwSt. 19%BestandBeleg DatumText
8   500,00 €Übertrag aus Dezember 2008
9500,00 €0,00 €0,00 €0,00 €1.000,00 €15.01.2008 
10        1.000,00 €   
11        1.000,00 €   
12        1.000,00 €   
13        1.000,00 €   
14        1.000,00 €   
15        1.000,00 €   

verbundene Zellen
F1:H4
B8:E8
G8:H8

verwendete Formeln
Zelle Formel
F8 =August!F98
F9 =B9-C9+F8
F10 =B10-C10+F9
F11 =B11-C11+F10
F12 =B12-C12+F11
F13 =B13-C13+F12
F14 =B14-C14+F13
F15 =B15-C15+F14

Tabellendarstellung in Foren Version 4.28


Anzeige
OT-@R: Take It Easy,...
29.11.2009 18:35:18
Luc:-?
...Robert,
Leute, die andere der eigenen Fehler beschuldigen, wird's wohl immer geben. Und irgendwann erwischt's hier jeden, auch den Friedlichsten, mal... ;-)
Gruß Luc :-?
AW: WAS IST LOS ?..
29.11.2009 18:36:08
Udo
Hey....,
Dumm sind Menschen, die eine Rechnung aus 2008 in die Buchführung von 2000 eingeben wollen ...
Richtig, DAS habe ich nicht getestet - weil ... ICH versuche ja keine Rechnung aus 2008 in 2000 einzugeben... - gelle
Das mal dazu.
Aber weißt Du was?
Du hast einfach Recht.

..das hat doch nichts mit..
29.11.2009 18:44:07
robert
..der Jahreszahl was zu tun !
willst du mich nicht verstehen?
es geht darum, dass momentan in allen monaten ein datum eingegeben werden kann, das
nicht dem monatsblatt entspricht.
das sollte auch keine kritik, sondern nur ein hinweis sein, dass das nicht sein sollte.
warum du so überreagiert hast, ist mir ein rätsel...
gruß
robert
Anzeige
OT: Kritik kratzt am EGO! ;-) Gruß owT
30.11.2009 02:11:15
Luc:-?
:-?
Ego hin, Ego her...
30.11.2009 07:53:28
robert
hi Luc,
es gibt genug gute helfer hier, wenn man eine lösung von ihnen testet und
meldet einen "fehler" , so waren bisher immer alle dankbar und haben
freundlich reagiert.
denn nur wer nichts arbeitet kann keine fehler machen ;-)
gruß
robert
Da haste recht, außer, man stirbt dran! ;-) orT
01.12.2009 01:19:54
Luc:-?
...Gruß :-?
für Teilbegriffe...
29.11.2009 11:03:25
Tino
Hallo,
verwende Platzhalter
z. Bsp.
tbsuch = TextBox_suchen.Value & "*"
oder
tbsuch = "*" & TextBox_suchen.Value & "*"
Gruß Tino
AW: ...Optik
29.11.2009 11:07:58
Udo
Hallo Tino,
der Nepumuk hat das absolut super hinbekommen. So wie er das programmiert hat funktioniert das auch mit Teil-Namen. (ausprobiert).
Jetzt geht es nur noch um eine "Optische" Sache.
Für Deine Hilfe aber vielen Dank !!
Gruß,
Udo
Anzeige
ok. wenn es nur um ja oder nein geht
29.11.2009 11:25:55
Tino
Hallo,
hier die Version mit ja oder nein.
Private Sub CommandButton_suchen_Click()
Dim varArr As Variant
Dim tbsuch$
Dim i%, ii%

varArr = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", _
     "September", "Oktober", "November", "Dezember")

'Stern als Platzhalter verwenden oder dies bei der TextBox_suchen mit angeben. 
tbsuch = "*" & TextBox_suchen.Value & "*"

With Application.WorksheetFunction
    For i = 0 To 11
        ii = IIf(i = 8 Or i = 10, 1, 2)
        If .CountIf(Sheets(varArr(i)).UsedRange, tbsuch) = 0 Then
            varArr(i) = varArr(i) & String(ii, vbTab) & " 'nein' " & vbCr
        Else
            varArr(i) = varArr(i) & String(ii, vbTab) & " 'ja' " & vbCr
        End If
    Next 'intTB 
End With

MsgBox Join(varArr, ""), vbInformation, "Trefferliste"
End Sub
Gruß Tino
DANKE !!!
29.11.2009 11:30:12
Udo
Hey Tino,
vielen lieben Dank für Deine tatkräftige Hilfe !!!
Doch inzwischen ist das Thema erledigt. Es funktioniert alles so wie es sollte ...
Danke Dir nochmal.
Gruß,
Udo

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige