Toon posts:

[Excel] Zoekbox naar tabblad maken?

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik wil graag een zoekbox maken in excel waarin ik zoek naar een tabblad.
Ik werk namelijk op een bedrijf waar ze meer dan 500 opslagtanks hebben en ik wil graag als een soort van dashboard een eerste hoofdpagina maken waarin ik een zoek naar de juiste pagina van de betreffende opslagtank.

Ik weet dat je makkelijk met een knop en hyperlink al een heel eind moet komen maar dat betekent dat ik meer dan 500 knoppen op mijn dashboard moet hebben en dat wil ik dus niet.
Gewoon een vak waarin ik de betreffende tanknaam typ en dan zoeken en me brengt bij de juiste sheet/tabblad.
Er zijn ook andere manieren om snel het juiste tabblad te vinden maar ik wil dat het voor iedereen een makkelijke tool wordt zonder eerst uit te moeten leggen.

Heb al gezocht hier in de topics maar nog niet gevonden wat ik zoek.

Ik hoor graag of hier oplossingen voor bestaan.

alvast dank voor jullie tijd!

gr Evert

Alle reacties


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 27-09 22:07

MAX3400

XBL: OctagonQontrol

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Welkom op GoT :)

Maar:
ZOEKBOX NAAR HET JUISTE TABBLAD
SCHREEUW NIET ZO! ;) Ik pas de topictitel aan zodat het wat minder schreeuwerig over komt - en zodat duidelijker is om welk programma het eigenlijk gaat. Tenslotte: je kon bij openen van het topic aangeven of je een vraag had, of een discussie wilde starten. Ik maak er alsnog een vraag-topic van (edit: zodat je tzt het antwoord als zodanig kunt aanduiden).

Bovenstaande werkt inderdaad prima - in de zin dat het dan een pulldownmenu wordt ipv lange lijst snelkoppelingen (al moet in een NL versie van Windows/Excel de , een ; worden en kunnen volgens mij de ' weg). Scheelt een slok op een borrel. Misschien kan je het concept verder verbouwen tot ook een zoekfunctie. VBA gebruiken kan altijd ook nog.
=HYPERLINK("#" & A1 & "!A1";"Go to sheet") dus met in A1 de naam van de sheet.

[ Voor 3% gewijzigd door F_J_K op 17-12-2017 14:08 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:08
uiteraard VBA oOo :Y

kies een werkblad

broncode macro
Visual Basic:
1
2
3
4
5
Option Explicit

Sub KiesWerkblad()
  frmSelecteerWerkblad.Show
End Sub


broncode userform
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit

Public listGekozenWerkblad As String

Private Sub cmdGo_Click()
  If listGekozenWerkblad <> "" Then
    ActiveWorkbook.Sheets(listGekozenWerkblad).Activate
    Unload Me
  Else
    Unload Me
  End If
End Sub

Private Sub lstWerkblad_AfterUpdate()
    listGekozenWerkblad = lstWerkblad.Text
End Sub

Private Sub UserForm_Initialize()
  Dim i As Long
  For i = 1 To ActiveWorkbook.Sheets.Count
      lstWerkblad.AddItem ActiveWorkbook.Sheets(i).Name
  Next i
End Sub

[ Voor 10% gewijzigd door breew op 17-12-2017 19:12 . Reden: oude code geplakt. nu klopt ie wel ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heren,

Prachtig allemaal maar het is niet geheel wat ik zoek.
Ik zoek dus een leeg vak waar ik de naam van het betreffende tabblad ingeef en vervolgens op zoek klik.
Meer niet.
Een pulldown menu ken ik maar daar schiet ik niet heel veel mee op.

Bovendien ben ik niet bekend met macro's dus iemand zal me er toch even stap voor stap doorheen moeten loodsen :)

En sorry voor het schreeuwen! :)

Groet Evert

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:08
Ik kan dat alleen met vba (als je verder niets aan de excel wilt wijzigen)... dus daar zul je jezelf een beetje over moeten inlezen dan, ben ik bang.
Bovenstaande code is vrij basic, en snel om te bouwen naar een zoekfunctie. Maar als je niet begrijpt wat de code doet, dan kan ik niet aanraden hem te gebruiken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok eerst hartstikke bedankt voor je reactie!
ik ga wat vogelen maar ik heb wel een engelse versie en ik zie dat jouw code voor een nederlandse versie is.
Wat moet ik veranderen om het te laten werken in een engelse versie?

Ik neem daan dat ik eerst een textvak moet aanmaken in de developer en daar deze code achterhangen?

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:08
Verwijderd schreef op maandag 18 december 2017 @ 08:03:
Ok eerst hartstikke bedankt voor je reactie!
ik ga wat vogelen maar ik heb wel een engelse versie en ik zie dat jouw code voor een nederlandse versie is.
Wat moet ik veranderen om het te laten werken in een engelse versie?

Ik neem dan dat ik eerst een textvak moet aanmaken in de developer en daar deze code achterhangen?
VBA-code is onafhankelijk van het taalpakket in office. De taal van de code is Engels, maar je bent uiteraard vrij om de namen van procedures, functies en variabelen te kiezen; ikzelf kies die meestal beschrijvend in het Nederlands. De code loopt dus in elke installatie van excel, ook die van jou :)

Voor jouw leerproces in vba, zal ik hieronder de code nader toelichten.

De code bestaat uit functioneel 2 gedeelten:
  1. Een procedure (Sub KiesWerkblad() ) die bij uitvoering een formulier opent;
  2. Een formulier met daarop alle werkbladen in het huidige werkboek, waarop je een werkblad selecteert, welke vervolgens geopend wordt bij een klik op de knop "GA DAN!!!"
Dan de code zelf,hieronder voorzien van commentaar.

broncode macro
Visual Basic:
1
2
3
4
5
6
7
8
'het is een best practice deze regel altijd als bovenste regel van je code te zetten. 
'google maar op het nut er van.
Option Explicit

Sub KiesWerkblad()
  'open het formulier met de werkblad-selectie
  frmSelecteerWerkblad.Show
End Sub


broncode userform
Het userform bestaat (in mijn voorbeeld) uit twee elementen:
  1. een listbox (lstWerkblad), waarin ik alle werkbladen weer wil geven
  2. een commandbutton (cmdGo), bij daarop drukken wil ik het in lstWerkblad geselecteerde werkblad activeren
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'het is een best practice deze regel altijd als bovenste regel van je code te zetten. 
'google maar op het nut er van.
Option Explicit

'declareer een publieke variabele (een variabele die in meerdere procedures gebruikt kan worden)
'met daarin de naam van het werkblad dat geopend moet worden.
Public listGekozenWerkblad As String

'onderstanade code wordt uitgeveord zodra het formulier wordt geladen
Private Sub UserForm_Initialize()
  Dim i As Long    'een lusteller, om mee door de werkbladen te loopen
  'vul de listbox op het formulier met de namen van alle werkbladen in het actieve werkboek
  'voor i = 1 tot het aantal werkbladen in het werkboek
  For i = 1 To ActiveWorkbook.Sheets.Count
      'voeg aan de listbox een item toe met de naam van het i-de werkblad
      lstWerkblad.AddItem ActiveWorkbook.Sheets(i).Name
  Next i
End Sub

'onderstaande code wordt uitgevoerd bij elke wijziging van een keuze uit de listbox op het formulier
Private Sub lstWerkblad_AfterUpdate()
    listGekozenWerkblad = lstWerkblad.Text
End Sub

'voer onderstaande code uit zodra op de knop cmgGO (GA DAN!!!) wordt geklikt.
Private Sub cmdGo_Click()
  'als de naam van het gekozen werkblad ongelijk is aan "" (leeg), dan
  If listGekozenWerkblad <> "" Then
    'activeer het gekozen werkblad
    ActiveWorkbook.Sheets(listGekozenWerkblad).Activate
    'sluit het formulier
    Unload Me
  'is de naam van het gekozen werkblad gelijk aan "' (leeg)
  Else
    'doe niets, sluit het formulier
    Unload Me
  End If
End Sub



Als jij niet een werkblad uit een listbox wilt kiezen, maar op basis van input in een tekstvak een sheet wilt selecteren, dan zul je de code bij lstWerkblad achterwege kunnen laten.
Bij drukken op cmdGo, pak je dan niet de geselecteerde waarde uit de listbox, maar de ingevoerde tekst uit het tekstvak.

Let op; dit is case insensitve, maar moet (op hoofdletters na) wel exact overeenkomen met een bestaand werkblad. Anders krijg je de volgende error:
oeps, error

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Super! dankjewel.
Nu is het al wat in jip en janneke taal! ;)
Ik ga ermee aan de slag!

Gr Evert
Pagina: 1