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

Sheet zichtbaar obv userid

Status
Niet open voor verdere reacties.

arvie76

Gebruiker
Lid geworden
14 sep 2016
Berichten
84
Wat zie ik over het hoofd ?

dit is mijn code

Code:
Private Sub Workbook_Open()
Sheets("Locaties").Range("L3") = Environ("UserName")
Sheets("voorraadtelling").Range("C2").Value = Now
[B][COLOR="#FF0000"]If Sheets("Locaties").[UserId] = "aartj03" Or "verhr07" Then[/COLOR][/B]
Sheets("Waarden").Select
Else
Sheets("Voorraadtelling").Select
'Keuze = MsgBox("Ben je Teamleider?", vbYesNo + vbQuestion, "Keuze maken")
'Sheets("Waarden").Select
'If Keuze = vbYes Then
'Exit Sub
'Else
'Sheets("Voorraadtelling").Select
End If
End Sub

Het gaat mis bij het rode. Als ik daar maar één userid vermeld loopt deze keurig door en gaat hij naar juiste sheet maar zodra ik er meer userid's vermeld zoals in voorbeeld loopt de macro vast.

Werkte eerst met msgbox en op basis van het antwoord ging deze naar juiste sheet, maar wil het nu o.b.v. userid doen.
 
Maak er dit van:
Code:
Private Sub Workbook_Open()
    Sheets("Locaties").Range("L3") = Environ("UserName")
    Sheets("voorraadtelling").Range("C2").Value = Now
    
    Select Case Sheets("Locaties").[UserID]
        Case "aartj03", "verhr07"
            Sheets("Waarden").Select
        Case Else
            Sheets("Voorraadtelling").Select
    End Select
End Sub
 
Laatst bewerkt:
Opgelost !!!

Thnx Edmoor !!! :thumb:

Wilde eerst zeggen werkt niet. Maar door een slordigheid van mijn kant, door voor de rode regel geen ' te zetten ging hij steeds naar voorraadtelling wat logisch. ' weg hallen en hij werkt wel. Foutje

Code:
Private Sub Workbook_Open()
Sheets("Locaties").Range("L3") = Environ("UserName")
Sheets("voorraadtelling").Range("C2").Value = Now

Select Case Sheets("Locaties").[UserId]
        Case "aartj03", "vos0j13", "kloog04", "gielm00", "verhr07"
            Sheets("Waarden").Select
        Case Else
            Sheets("Voorraadtelling").Select
    End Select
'If Sheets("Locaties").[UserId] = "verhr07" Then
'Sheets("Waarden").Select
'Else
[COLOR="#FF0000"][B]Sheets("Voorraadtelling").Select[/B][/COLOR]
'Keuze = MsgBox("Ben je Teamleider?", vbYesNo + vbQuestion, "Keuze maken")
'Sheets("Waarden").Select
'If Keuze = vbYes Then
'Exit Sub
'Else
'Sheets("Voorraadtelling").Select
'End If
End Sub
 
Een kopie en plakken van mijn voorbeeld was voldoende geweest.
Dan ben je de overhead aan commentaar kwijt en staan ook de inspringpunten zoals ze horen.
 
Code:
Sheets("Locaties").[UserId]
Met bovenstaande vraag je de compiler om aan Excel te vragen wat UserId voor ding is, waarna het wordt opgehaald en dat is langzaam. Beter is:
Code:
Sheets("Locaties").Range("UserId").Value
 
@jkpietse

In
Code:
Sheets("Locaties").[UserId]
staat [UserId] voor de cel("l3") waar het userid vermeld staat. Heb deze cel een naam gegeven zodat als de layout aangepast wordt ik de VBA niet hoef aan te passen, want dan blijft die cel Userid heten.

&Edmoor

Klopt wat je zegt maar ben gewent voor ik ding verwijder uit een Macro de oude optie's uit te schakelen voor geval nieuwe marco niet doet wat ik wil.
 
Er hoeft helemaal niets naar het werkboek geschreven te worden.

Code:
Private Sub Workbook_Open()
  Sheets("voorraadtelling").Range("C2").Value = Now
    
  Sheets("Waarden").Visible=instr("aartj03verhr07",Environ("Username"))
End Sub
 
In
Code:
Sheets("Locaties").[UserId]
staat [UserId] voor de cel("l3") waar het userid vermeld staat. Heb deze cel een naam gegeven zodat als de layout aangepast wordt ik de VBA niet hoef aan te passen, want dan blijft die cel Userid heten.

Dat hoef je mij niet uit te leggen, ik schrijf al 25 jaar VBA code :-) Maar mijn syntax is aan te bevelen boven die met de rechte haken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan