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

Zoom per Blad aanpassen voor verschillende gebruikers | Select niet gebruiken

Status
Niet open voor verdere reacties.

trainers

Verenigingslid
Lid geworden
8 feb 2012
Berichten
162
Het is een goede gewoonte Select te vermijden, echter heb wat hulp nodig.
Waarom is eigenlijk Select taboe? In de VBA doet het precies wat ik wil.

Toelichting op de titel:
Het bestand wordt gebruikt door 2 personen (1 met toetsenbord + numeriek - breder en groter beeldscherm; de ander zonder numeriek - kleiner beeldscherm).
Als ik het bestand terugkrijg is de Zoom op diverse bladen aangepast (te klein voor mij) en moet ik alles weer aanpassen. Idem omgekeerd, zij moet bij diverse bladen de zoom weer verkleinen. Nogal stompzinnig.

Uiteindelijk wil ik in een Private Sub Workbook_Open() laten constateren wie opent en dan de zooms aanpassen.
(If Username = "ADMIN" Then) heb ik al gevonden incl. de Function Environ("USERNAME"). Moet lukken.

Code:
Sub Macro1()
    Sheets("Blad1").Select
    ActiveWindow.Zoom = 100
End Sub

Sub Macro2()
    Sheets(Array("Blad1", "Blad2", "Blad3", "Blad4", "Blad5", "Blad6")).Select
    Sheets("Blad1").Activate
    ActiveWindow.Zoom = 90
    Application.Goto Reference:="start", Scroll:=True
End Sub
Beide Subs doen het Maar: hoe krijg ik die SELECT eruit?

Groeten,
Trainers
 

Bijlagen

  • Map1.xlsm
    17,7 KB · Weergaven: 32
In dat geval ontkom je er naar mijn mening niet aan.
Zorg er wel voor dat in Macro 2 in de opdracht Sheets("Blad1").Activate Blad1 1 van de geselecteerde sheets is.

Select wordt verder afgeraden omdat het ontzettend vertragend werkt en niet nodig is.
Daarnaast zal je bij het opslaan van het document het Zoom level weer terug moeten zetten naar wat het was als je niet wilt dat andere gebruikers er last van hebben.
 
Laatst bewerkt:
Dank voor je reactie, Edmoor. Jammer dat in dit geval de Select niet is te vermijden.

Ga eens verder knutselen. Het terugzetten naar de zoomniveaus voor de andere gebruiker is niet nodig. Het is de bedoeling dat bij het openen automatisch de zoomniveaus voor de gebruiker worden ingesteld.

Mijn eindproduct zal ik uiteraard hier plaatsen.

Groeten,
Trainers
 
Dit is het geworden (het principe althans).

Groeten,
Trainers
Code:
Private Sub Workbook_Open()
    If UserName = "ADMIN" Then
        Sheets(Array("Blad1", "Blad2", "Blad3", "Blad4", "Blad5", "Blad6")).Select
        Sheets("Blad1").Activate
        ActiveWindow.Zoom = 90
        Application.Goto Reference:="start", Scroll:=True
    Else
        Sheets(Array("Blad1", "Blad2")).Select
        Sheets("Blad1").Activate
        ActiveWindow.Zoom = 70
        Sheets(Array("Blad3", "Blad4")).Select
        Sheets("Blad3").Activate
        ActiveWindow.Zoom = 80
        Sheets(Array("Blad5", "Blad6")).Select
        Sheets("Blad5").Activate
        ActiveWindow.Zoom = 90
        Application.Goto Reference:="start", Scroll:=True
    End If
End Sub
 
In dat geval kan je volstaan met dit:
Code:
Private Sub Workbook_Open()
    If UserName = "ADMIN" Then
        Sheets(Array("Blad1", "Blad2", "Blad3", "Blad4", "Blad5", "Blad6")).Select
        Sheets("Blad1").Activate
        ActiveWindow.Zoom = 90
    Else
        Sheets("Blad1").Activate
        ActiveWindow.Zoom = 70
        Sheets("Blad3").Activate
        ActiveWindow.Zoom = 80
        Sheets("Blad5").Activate
        ActiveWindow.Zoom = 90
    End If
    Application.Goto Reference:="start", Scroll:=True
End Sub
 
Laatst bewerkt:
Dank voor je reactie.

Echter bij de Else worden de bladen 2, 4 en 6 niet aangepast.
Ik hou het dus nog even op mijn eigen code.

Groeten,
Trainers
 
Die had ik gemist ;)
 
Andersom gedacht.

Code:
Private Sub Workbook_Open()
  Sheets(Array("Blad1", "Blad2", "Blad3", "Blad4", "Blad5", "Blad6")).Select
  Sheets("Blad1").Activate
  ActiveWindow.Zoom = 90
  If UserName <> "ADMIN" Then
    Sheets(Array("Blad1", "Blad2")).Select
    Sheets("Blad1").Activate
    ActiveWindow.Zoom = 70
    Sheets(Array("Blad3", "Blad4")).Select
    Sheets("Blad3").Activate
    ActiveWindow.Zoom = 80
  End If
  Application.Goto [Start], True
End Sub
 
Of in de ThisWorkbook sectie:
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Environ("UserName") = "ADMIN" Then
        ActiveWindow.Zoom = 90
    Else
        Select Case Sh.Name
            Case "Blad1", "Blad2":   ActiveWindow.Zoom = 70
            Case "Blad3", "Blad4":   ActiveWindow.Zoom = 80
        End Select
    End If
End Sub
 
Wow VenA en Edmoor:
Kijk nu met rechteroog naar voetbal maar linkeroog wil ook wat :d

Ga dit vanavond eens bekijken of ik dit snap.

Dank dank
 
@ VenA
Code:
Application.Goto [Start], True
Deze schrijfwijze voor
Code:
Application.Goto Reference:="start", Scroll:=True
kende ik niet en is stuk korter. Weer wat geleerd.

@ Edmoor
Jij hebt dus voor mij de moeite genomen om verder te zoeken naar een super oplossing.
Dank je wel want jouw variant is zo simpel en ook makkelijk aan te passen. Geen gedonder meer met het feit dat soms enkele bladen gegroepeerd bleven.
Case: in feite dus "als van toepassing is dan ... "

Even stenografisch :
Code:
Sub dank()
MsgBox Title:="helpmij.nl", Buttons:=vbInformation, prompt:="Thank You." & vbNewLine & "" _
    & vbNewLine & vbNewLine & ""
End Sub

Kan dit korter? :d
 
Code:
Sub GraagGedaan()
    MsgBox "You're welcome!" & vbCrLf & vbCrLf & vbCrLf, vbInformation, "Helpmij.nl"
End Sub
;)
 
Bedankt is korter.
Code:
MsgBox "helpmij.nl", 64, "Thank You."
 
Wat moet ik zeggen?
Allen dank voor de moeite die jullie voor mij hebben willen doen. :thumb:
 
Vraag is opgelost.

Na een paar kwinkslagen in een MsgBox sluit ik de vraag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan