Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

String im Array suchen und Treffer anzeigen | Herbers Excel-Forum


Betrifft: String im Array suchen und Treffer anzeigen von: Udo
Geschrieben am: 28.11.2009 23:39:32

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

  

Betrifft: AW: String im Array suchen und Treffer anzeigen von: IngGi
Geschrieben am: 29.11.2009 00:45:36

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.3

Gruß Ingolf


  

Betrifft: AW: String im Array suchen und Treffer anzeigen von: Udo
Geschrieben am: 29.11.2009 01:11:12

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


  

Betrifft: hier mein Vorschlag dazu. von: Tino
Geschrieben am: 29.11.2009 06:44:06

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


  

Betrifft: AW: hier mein Vorschlag dazu. von: Udo
Geschrieben am: 29.11.2009 10:31:08

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


  

Betrifft: AW: hier mein Vorschlag dazu. von: Nepumuk
Geschrieben am: 29.11.2009 10:50:03

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


  

Betrifft: AW: hier mein Vorschlag dazu. von: Udo
Geschrieben am: 29.11.2009 10:57:55

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


  

Betrifft: AW: hier mein Vorschlag dazu. von: Nepumuk
Geschrieben am: 29.11.2009 11:10:05

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


  

Betrifft: DANKE !!! von: Udo
Geschrieben am: 29.11.2009 11:14:20

Hallo Nepumuk,

D A N K E !!!

Das ist perfekt.

Gruß,
Udo


  

Betrifft: Perfekt ?.... von: robert
Geschrieben am: 29.11.2009 11:20:22

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


  

Betrifft: AW: Perfekt ?.... von: Udo
Geschrieben am: 29.11.2009 11:27:49

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


  

Betrifft: AW: Perfekt ?.... von: robert
Geschrieben am: 29.11.2009 16:53:02

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


  

Betrifft: AW: Perfekt ?.... von: Udo
Geschrieben am: 29.11.2009 17:27:55

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


  

Betrifft: WAS IST LOS ???.. von: robert
Geschrieben am: 29.11.2009 18:16:02

..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




  

Betrifft: OT-@R: Take It Easy,... von: Luc:-?
Geschrieben am: 29.11.2009 18:35:18

...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 :-?


  

Betrifft: AW: WAS IST LOS ???.. von: Udo
Geschrieben am: 29.11.2009 18:36:08

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.



  

Betrifft: ..das hat doch nichts mit.. von: robert
Geschrieben am: 29.11.2009 18:44:07

..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


  

Betrifft: OT: Kritik kratzt am EGO! ;-) Gruß owT von: Luc:-?
Geschrieben am: 30.11.2009 02:11:15

:-?


  

Betrifft: Ego hin, Ego her... von: robert
Geschrieben am: 30.11.2009 07:53:28

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


  

Betrifft: Da haste recht, außer, man stirbt dran! ;-) orT von: Luc:-?
Geschrieben am: 01.12.2009 01:19:54

...Gruß :-?


  

Betrifft: für Teilbegriffe... von: Tino
Geschrieben am: 29.11.2009 11:03:25

Hallo,
verwende Platzhalter

z. Bsp.
tbsuch = TextBox_suchen.Value & "*"

oder

tbsuch = "*" & TextBox_suchen.Value & "*"




Gruß Tino


  

Betrifft: AW: ...Optik von: Udo
Geschrieben am: 29.11.2009 11:07:58

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


  

Betrifft: ok. wenn es nur um ja oder nein geht von: Tino
Geschrieben am: 29.11.2009 11:25:55

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


  

Betrifft: DANKE !!! von: Udo
Geschrieben am: 29.11.2009 11:30:12

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


Beiträge aus den Excel-Beispielen zum Thema "String im Array suchen und Treffer anzeigen"