CommandButton in Sheet

Status
Niet open voor verdere reacties.

IJf

Gebruiker
Lid geworden
5 nov 2006
Berichten
40
in een Excel bestand heb ik een Userform1 gemaakt met commandbutton die verwijst naar een website

Code:
Sub CommandButton1_Click()
ActiveWorkbook.FollowHyperlink _
Address:="https://www.google.nl/" 'voorbeeld
End Sub

Private Sub UserForm_Initialize()
Me.Left = 750
Me.Top = 200
End Sub

In this Workbook staat:
Code:
Private Sub Workbook_Open()
UserForm1.Show
With UserForm1
        .Top = Application.Top + 400 '< change to what u want
        .Left = Application.Left + 1250 '< change to what u want
    End With
End Sub

Tot hier werkt dit ook naar behoren, voor de mooiigheid wil ik dit nog wat finetunen maar krijg het niet voor elkaar.

Ik wil dat:
- de commandbutton alleen op blad1 verschijnt (en niet op alle (3) werkbladen
- Als de commandbutton wordt weggeklikt dat deze weer 'automatisch' tevoorschijn komt (of met een toetscombinatie of helemaal niet weggeklikt kan worden wat nog beter is)
- dat alles ook nog werkt als de naam van het werkbook wijzig en/of het de naam van het werkblad.

Wie ziet het licht..?
 
Laatst bewerkt:
Je hebt het over een command button op een werkblad waar je geen code van hebt geplaatst. Een command button op een werkblad verschijnt alleen maar op dat werkblad en niet op andere werkbladen.
Plaats je document hier.
 
Als je dit in ThisWorkbook zet?

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Blad1.Name = ActiveSheet.Name Then
UserForm1.Show
Else
UserForm1.Hide
End If
End Sub

En deze in je userform.

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

Om te kunnen wisselen tussen werkbladen zal je de Userform-eigenschap Showmodal op False moeten zetten.
 
Laatst bewerkt:
Volgens mij staat in het eerste stukje de code van de CommandButton.
En deze verschijnt toch echt op drie werkbladen.
 
Dank SjonR! Super!! Dit is wel wat ik bedoel. Nog een kleinigheidje: Als ik de werkmap open met het eerste werkblad dan verschijnt de button niet. Daartoe moet ik eerst heen en terug van werkblad wisselen.
 
dan zet je deze toch in WorkbookOpen

Code:
If Blad1.Name = ActiveSheet.Name Then UserForm1.Show
 
Volgens mij staat in het eerste stukje de code van de CommandButton.
En deze verschijnt toch echt op drie werkbladen.

Nee.
Dat is een commandbutton in een userform, niet op een werkblad.
Dat is het grote verschil.
Je kan dus ook een commandbutton direct op een werkblad hebben, zonder userform.
Sterker nog, dat kan zowel een ActiveX als een worksheet button zijn.
2 verschillende dus.

Omdat je hebt hebt over een commandbutton in Sheet is daar de verwarring ontstaan.
 
Laatst bewerkt:
@ Edmoor: Ah, dank voor de uitleg. Weer wat geleerd.

@ SjonR: dat lijkt niet te werken.
 
Zou wel moeten werken, dus plaats je bestand eens.
 
Dit dus:
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Blad1.Name = "Rooster" Then
UserForm1.Show
Else
UserForm1.Hide
End If
With UserForm1
        .Top = Application.Top + 250 '< change to what u want
        .Left = Application.Left + 1250 '< change to what u want
    End With
End Sub
 
Wijzig Blad1.Name in Sh.name
Of plaats, zoals gevraagt, je bestand.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Rooster" Then
        With UserForm1
            .Top = Application.Top + 250 '< change to what u want
            .Left = Application.Left + 1250 '< change to what u want
        End With
        UserForm1.Show
    Else
        UserForm1.Hide
    End If
End Sub
 
Laatst bewerkt:
Je hebt iets gewijzigd aan de code. dan gaat het niet goed.

kijk eens naar het bestand. dat doet wat je wilt?
 

Bijlagen

  • IJF.xlsm
    18,4 KB · Weergaven: 60
Volgens mij moet je alleen deze nog toevoegen om te zorgen dat hij ook de button laat zien als je het bestand opent.

Code:
Private Sub Workbook_Open()
If Blad1.Name = ActiveSheet.Name Then UserForm1.Show
With UserForm1
        .Top = Application.Top + 250 '< change to what u want
        .Left = Application.Left + 1250 '< change to what u want
    End With
End Sub

Maar even uit nieuwsgierigheid: Waarom zet je niet gewoon een button op de plek waar je nu de Userform laat verschijnen?
 
Laatst bewerkt:
Als ik deze code er in zet, komt de button dus ook op blad 2 en 3. Ik werk nu met Excel 2013 en weet niet of er verschillen zijn t.o.v. vorige- dan wel volgende versie.
Ook krijg ik een foutmelding als ik UserForm1.Show niet op een volgende regel zet.

En ja, om de nieuwsgierigheid te beantwoorden... Ik wist het niet. zie antwoord op Edmoor.
Bij het zoeken naar 'hoe maak ik een button' en 'kan ik deze een vaste plek geven' kwam ik op een minicursus waar de userform werd gebruikt.
Na wat (heel wat) gepiel kreeg ik het zo voor elkaar dat het -bijna- werkte zoals ik wilde. Wel veel geleerd...

Morgen verder.. maar tot zover in ieder geval bedankt!
 
Bijna drie weken geleden was dit BIJNA helemaal goed. Inmiddels is het HELEMAAL goed. Voor de liefhebber hier de uiteindelijke versie van de code. Wel merk ik daarbij op dat bij een andere beelschermweergave de button op een andere plek kwam. Dit heb ik nu opgelost door deze een ander plek toe te wijzen. Eigenlijk zou het dynamisch moeten kunnen, maar daar heb ik nu geen tijd meer ingestoken.
Edmoor en Sjonr: bedankt voor de hulp.
Dit topic mag dicht.

Code:
Private Sub Workbook_Open()

If Blad1.Name = ActiveSheet.Name Then UserForm1.Show

End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Blad1.Name = ActiveSheet.Name Then
UserForm1.Show
Else
UserForm1.Hide
End If

With UserForm1
        .Top = Application.Top + 500 '< change to what u want (pas dit ook aan in de prog. code van de userform)
        .Left = Application.Left + 500 '< change to what u want (pas dit ook aan in de prog. code van de userform)
    End With

End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan