• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bladnaam in userform

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
In mijn Excel toepassing heb ik 7 tabbladen waarvan de naam van het tabblad de naam van de medewerker is.
M.b.v. een userform kunnen de namen aangepast vernieuwd of verwijderd worden.
De naam van het tabblad wordt in de textbox ingelezen.
Tabblad die als reserve(res1 enz) worden aangemerkt moeten in het userform niet met naam getoond worden.
De textbox moet leeg in het userform getoond worden.

Als er maar bv 4 medewerkers zijn zouden 3 tabbladen verborgen zijn.
3 bladen zijn dan reserve. (zouden er ook 10 of meer kunnen zijn maar daar gaat het hier niet om)
Sheets kunnen volgens mij niet zonder naam daarom geef ik ze de naam res1 t/m res7.
Als een tabblad één van deze res namen heeft wordt het verborgen met:
Code:
If Sheets(1).Name = "res1" Then
Sheets(1).Visible = xlVeryHidden
Else
Sheets(1).Visible = True
End If

Als het userform wordt geladen moeten de de aanwezige tabblad namen in een TextBoxworden getoond.
'Als het tabblad de naam res1 enz heeft moet de textbox leeg zijn.
Bij het inlezen worden echter alle namen van de tabbladen in het userform getoond.
Onderstaande code werkt niet.
'Als het tabblad de naam res1 enz heeft moet de textbox leeg zijn
Code:
If Sheets(1).Name = "Res1" Then
TextBox1.Value = " "
Else
TextBox1.Value = Sheets(1).Name
End If
Wat is fout aan dee code?
 
Ik vind je uitleg niet echt duidelijk, een voorbeeld document is altijd beter.
Maar probeer dit eens:
Code:
TextBox1.Text = IIf(LCase(Left(Sheets(1).Name, 3)) = "res", "", Sheets(1).Name)

NB:
Met TextBox1.Value = " " maak je een textbox niet leeg maar zet je er een spatie in.
En Res1 is niet gelijk aan res1
 
Laatst bewerkt:
Ed, bedankt voor je snelle reactie. Ik ga het toepassen..
Ik heb trouwens “ “ en “” geprobeerd.
Met res en Res heb je ook weer gelijk.
 
je kan, in verband met hoofdlettergevoeligheid, bovenin iedere module "option compare text" zetten en dan is "ReS"="res"
Na die toevoeging zou volgende lijn dan ook kunnen
Code:
TextBox1.Text = IIf(Sheets(1).Name Like "res*", "", Sheets(1).Name)
Volgens mij iets leesbaarder, maar daarin kan je van smaak verschillen
 
Laatst bewerkt:
Bijgaand mijn uitgeklede toepassing.
Met behulp van de opdracht knop Namen kunnen er namen ingevuld worden of het veld blijft leeg.
Als het veld leeg is wordt het tabblad niet getoond. Bij het invullen van een naam krijgt het tabblad de naam en wordt getoond.
Het vreemde is dat blad1 met of zonder naam na het sluiten van het userform niet wordt getoond.
Nadat de toepassing opnieuw is gestart is blad1 met naam zichtbaar.
Als je na de naam invulling kijkt bij het tabblad Totaaloverzicht zie je wel de naam die naar het tabblad verwijst.
Ook zie je hier de namen die het tabblad verbergt.
Wat gaat er mis? de VCA code is correct. Waarom wordt blad1 niet direct getoond en de overige bladen wel. (Als dit probleem is opgelost moeten de regels in het Totaaloverzicht met res1 enz verborgen worden)
 

Bijlagen

Laatst bewerkt:
Code:
[COLOR="#FF0000"]Option Compare Text
[/COLOR]
Private Sub CommandButton1_Click()

   [COLOR="#FF0000"]Dim bGeenNaam As Boolean[/COLOR]

   On Error GoTo CommandButton1_Click_Error
   Application.ScreenUpdating = False

   'Naam wijzigen

   [COLOR="#FF0000"]For i = 1 To 7
      bGeenNaam = (Me("TextBox" & i).Text Like "res#" Or Len(Me("TextBox" & i).Text) = 0)
      Sheets(i).Visible = IIf(bGeenNaam, xlVeryHidden, True)
      Sheets(i).Name = IIf(bGeenNaam, "res" & i, CStr(Me("TextBox" & i).Value))
   Next[/COLOR]


   'het werkblad feestdagen verbergen
   Sheets("Feestdagen").Visible = xlVeryHidden

   Application.ScreenUpdating = True

   Unload Me

   On Error GoTo 0
   Exit Sub

CommandButton1_Click_Error:

   MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CommandButton1_Click, line " & Erl & "."

End Sub


Private Sub CommandButton2_Click()
   On Error GoTo CommandButton2_Click_Error
   Unload Me
   On Error GoTo 0
   Exit Sub
CommandButton2_Click_Error:
   MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CommandButton2_Click, line " & Erl & "."
End Sub

Private Sub UserForm_Initialize()


   On Error GoTo UserForm_Initialize_Error
   Application.ScreenUpdating = False

   'Als het tabblad de naam res1 enz heeft moet de textbox leeg zijn

   [COLOR="#FF0000"]For i = 1 To 7
      Me("TextBox" & i).Value = IIf(Sheets(i).Name Like "res#", "", Sheets(i).Name)
   Next[/COLOR]

   Application.ScreenUpdating = True
   On Error GoTo 0
   Exit Sub
UserForm_Initialize_Error:
   MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure UserForm_Initialize, line " & Erl & "."
End Sub
 
Laatst bewerkt:
bovenin de module van totaaloverzicht
Code:
Option Compare Text

Private Sub Worksheet_Activate()
   Me.Unprotect Password:="pirtek"               'beveiliging er af
   Application.ScreenUpdating = False            'scherm bevriezen
   With Me.Range("A50:A250")                     'bereik bepalen
      .EntireRow.Hidden = False                  'alle rijen zichtbaar
      For Each c In .Cells                       'alle cellen 1 per 1 aflopen
         If c.Value Like "res#" Then             'is reserve
            c.Offset(-1).Resize(2).EntireRow.Hidden = True   'die rij en die erboven verbergen
         End If
      Next
   End With
   Me.Protect Password:="pirtek", userinterfaceonly:=True   'normaal hoeft dit maar 1 keer per sessie dat je die werkmap opent, daarna mag een macro alles doen op een beveiligd werkblad
End Sub
 
Waarom geen filter gebruikt ?

Ik zie in Izarc geen gezipt bestand.
 
ik moest de rij erboven ook verbergen, anders moest er een extra kolom toegevoegd worden. Had ook gekund.
Izarc ???
 
Bedankt voor jullie snelle reactie en oplossingen. Ik ga het toepassen.
 
Geweldig bedankt. Het werkt prefect.
 
@Haije, bedankt voor de verduidelijking.
 
Haije, Izarc, goede tip. Het was mbv rar ingepakt zou Izarc toch moeten zien.
Als het mag een aanvullende vraag. Zoals je in mijn bestand kan zien is zijn in het userform 7 textboxen.
Ik zou graag een controle bij het verlaten van het userform op de textboxen willen hebben. als de textbox niet leeg is mag er geen dubbele naam in staan. Er komt dan een msgbox en er wordt gegaan naar de textbox waar de tekst dubbel is.
 
Begin bij het begin.
En ....
Vermijd 'select en 'activate' in VBA.

Code:
Private Sub Workbook_Open()
    For Each it In Sheets
       it.Visible = -1 - 3 * (InStr(1, it.Name, "res", 1) > 0 Or LCase(it.Name) = "feestdagen")
    Next

    Application.Goto Blad3.Cells(1)
End Sub
 
Beste snb. als ik het goed begrijp controleert jouw vba een controle op sheets namen.
Mijn vraag is een controle op 7 textboxen (textbox1 t/m textbox7) in een userform.
Na invulling van namen, de lege textboxen krijgen bij afsluiten een naam, zou er een controle moeten zijn op alle namen die in de 7 textboxen staan. Het userform wordt met een commandbutton afgesloten.
 
Vergelijk eens de code die jij in jouw bestand in
Code:
Private Sub Workbook_Open()
hebt staan met mijn suggestie.
Als je mijn suggestie begrijpt is je 'andere' vraag snel opgelost.
 
ik wou enkel even de sfeer bederven met namen die beginnen met "res", gelukkig weinig bekende.
Eerst jongensnamen, daarna meisjesnamen
 

Bijlagen

  • Aantekening 2020-08-23 212706.png
    Aantekening 2020-08-23 212706.png
    48,3 KB · Weergaven: 38
  • Aantekening 2020-08-23 212820.png
    Aantekening 2020-08-23 212820.png
    17,3 KB · Weergaven: 33
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan