Naam zoeken werkblad - gedeeltelijk en in lijst

Status
Niet open voor verdere reacties.

sdevries60

Gebruiker
Lid geworden
12 mrt 2012
Berichten
7
Onderstaand een macro die gedeeltelijk werkt.
Ik wil de naam van een werkblad kunnen zoeken, ook op gedeeltes van de naam van het werkblad (bij bijv 'december 2013', wil ik kunnen zoeken op 'dec' en '2013')
Met deze functie werkt het gedeeltelijk, maar vreemd genoeg vind het sommige woorden niet. Ik heb bijvoorbeeld een tabblad met de naam 'wishlist ~'. Wanneer ik wish of wishlist invoer, vindt het deze niet. (???)

Het liefst zou ik willen dat er een 'lijst' ontstaat met betreffende tabbladen (nu pakt de macro 'een van de' tabbladen, als deze toevallig dezelfde tekens bevatten). Als ik bijvoorbeeld drie tabbladen heb met '13' en voer in '13', kiest het 'een' tabblad.


Code:
Sub FindWS()
    Dim strWSName As String
    
    strWSName = InputBox("Enter the sheet name to search for")
    If strWSName = vbNullString Then
        Exit Sub
    End If
    
    If SheetExists(strWSName) Then
        Worksheets(strWSName).Activate
    Else
        'look if it at least contains part of the name
        Dim s As Worksheet
        For Each s In ThisWorkbook.Sheets
            If InStr(s.Name, strWSName) > 0 Then
                s.Activate
                Exit Sub
            End If
        Next s
        MsgBox "That sheet name does not exist!"
    End If
    
End Sub
Code:
Function SheetExists(strWSName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = Worksheets(strWSName)
    If Not ws Is Nothing Then SheetExists = True
End Function
Iemand een idee?
Bvd.
 
Laatst bewerkt door een moderator:
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie.
 
Dan zou onderstaande code voldoende moeten zijn.
Code:
Sub FindWS()
Dim strWSName As String, s As Worksheet, sName As String
 strWSName = InputBox("Enter the sheet name to search for")
    If strWSName = vbNullString Then
        Exit Sub
     End If
        For Each s In ThisWorkbook.Sheets
            If InStr(s.Name, strWSName) > 0 Then
              sName = sName & s.Name & vbLf
            End If
        Next s
     If sName = vbNullString Then
        MsgBox "That sheet name does not exist!"
      Else
    MsgBox sName
  End If
End Sub
 
Thanks, wat goed! Nu vind ik inderdaad wel gedeelten. Is er ook nog een optie om dit aanklikbaar te maken (dat je dus ook naar dit betreffende tabblad kan navigeren door te klikken op de gevonden treffer(s)?? Dit gaat mijn kennis te boven:-)...
 
Laatst bewerkt door een moderator:
Een userform met een listbox?
 

Bijlagen

Ja super! Helemaal wat ik bedoel. Mijn dank is groot!
 
Laatst bewerkt door een moderator:
Graag gedaan.

Ik zou deze regel:
Code:
If InStr(s.Name, strWSName) > 0 Then
nog wel veranderen in deze:
Code:
If InStr(1, s.Name, strWSName, 1) > 0 Then

Je tekst in de inputbox is dan nl. niet hoofdletter gevoelig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan