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

te lange regel in VBA?

Status
Niet open voor verdere reacties.

Pander

Gebruiker
Lid geworden
14 okt 2014
Berichten
198
Beste mensen,

Ik krijg een foutmelding bij de volgende sub

Code:
Sub telefoon()
        If Environ("Username") = "pan1" Or Environ("Username") = "pan2" Or Environ("Username") = "pan3" Or Environ("Username") = "pan4" Or Environ("Username") = "pan5" Or Environ("Username") = "pan6" Or Environ("Username") = "pan7" Or Environ("Username") = "pan8" Or Environ("Username") = "pan9" = "aandr2" Or Environ("Username") = "pan10" Or Environ("Username") = "pan11" Or Environ("Username") = "pan12" Or Environ("Username") = "pan13" Or Environ("Username") = "pan14" Or Environ("Username") = "pan15" Or Environ("Username") = "pan16" Or Environ("Username") = "pan17" Or Environ("Username") = "pan18" Or Environ("Username") = "pan19" Or Environ("Username") = "pan20" Or Environ("Username") = "pan21" Or Environ("Username") = "pan22" Or Environ("Username") = "pan23" Or Environ("Username") = "pan24" Or Environ("Username") = "pan25" Or Environ("Username") = "pan26" Or Environ("Username") = "pan27" Or Environ("Username") = "pan28" Or Environ("Username") = "pan29"
Or Environ("Username") = "pan30" Then
With Selection
    .Value = "t"
    .Interior.Color = 909581
    .Font.Color = 909581
End With
         End If
End Sub

het stukje: Or Environ("Username") = "pan30" Then kleurt dan rood. Bij bij staat dat op de 3de regel omdat het niet meer past op de 2de. Gebruik ik dan een verkeerde notatie ?

gr,
P
 
Laatst bewerkt:
je moet de regel aan elkaar verbinden met een underscore _


Code:
Sub telefoon()
        If Environ("Username") = "pan1" Or Environ("Username") = "pan2" Or Environ("Username") = "pan3" Or Environ("Username") = "pan4" Or Environ("Username") = "pan5" Or Environ("Username") = "pan6" Or Environ("Username") = "pan7" Or Environ("Username") = "pan8" Or Environ("Username") = "pan9" = "aandr2" Or Environ("Username") = "pan10" Or Environ("Username") = "pan11" Or Environ("Username") = "pan12" Or Environ("Username") = "pan13" Or Environ("Username") = "pan14" Or Environ("Username") = "pan15" Or Environ("Username") = "pan16" Or Environ("Username") = "pan17" Or Environ("Username") = "pan18" Or Environ("Username") = "pan19" Or Environ("Username") = "pan20" Or Environ("Username") = "pan21" Or Environ("Username") = "pan22" Or Environ("Username") = "pan23" Or Environ("Username") = "pan24" Or Environ("Username") = "pan25" Or Environ("Username") = "pan26" Or Environ("Username") = "pan27" Or Environ("Username") = "pan28" Or Environ("Username") = "pan29" [COLOR="#FF0000"]_[/COLOR]
Or Environ("Username") = "pan30" Then
With Selection
    .Value = "t"
    .Interior.Color = 909581
 
Laatst bewerkt:
Ik zou het zo doen:
Code:
Sub telefoon()
    For i = 1 To 29
        Gebruikers = Gebruikers & "pan" & i & "|"
    Next i
    
    If InStr(1, Gebruikers, LCase(Environ("username"))) > 0 Then
        With Selection
            .Value = "t"
            .Interior.Color = 909581
            .Font.Color = 909581
        End With
    End If
End Sub

Of controleer of de eerste 3 tekens van Environ("Username") gelijk is aan "pan".
If Left(Environ("username"), 3) = "pan" then
 
Laatst bewerkt:
hoi beiden,

dank voor jullie reacties.

De underscore lost het probleem op.

Edmoor gezien het voorbeeld is jouw oplossing ook een hele mooie.
Ik had voor het voorbeeld alleen alle gebruikersnamen (behalve de nummering) gelijk gesteld. In de praktijk zijn ze allemaal wel verschillend.

gr,
 
Ipv tig keer Or

Code:
Sub telefoon()
  ar = Array("pan1", "pan2", "pan3")
  If Not IsError(Application.Match(Environ("Username"), ar, 0)) Then
    With Selection
      .Value = "t"
      .Interior.Color = 909581
      .Font.Color = 909581
    End With
  End If
End Sub
 
Aan het gebruik van de underscore zit het maximum van 25.
Persoonlijk zou ik er voor kiezen om de lijst met gebruikers namen in een tabel op een 'Very Hidden' werkblad te zetten.
Als er dan gebruikers bij komen of afvallen hoeft de code niet aangepast te worden.
Hierbij heb ik aangenomen dat de naam van de tabel 'Table1' is en de naam van de kolom met usernamen 'users'.
Code:
Sub telefoon2()
    Dim i As Integer
    
    For i = 1 To Range("Table1").Rows.Count
        If Range("Table1[Users]")(i) = Environ("UserName") Then
            With Selection
                .Value = "t"
                .Interior.Color = 909581
                .Font.Color = 909581
            End With
            Exit For
        End If
    Next i
    

End Sub

Groet,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan