Macro buiten userform

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Toch nog even een vraag waar ik niet uit kom.

Ik wil een macro buiten een userform aanroepen om hiervan de tekst op de knop te veranderen.

De macro is in eerste om het instellingen menu te benaderen. Zodra je op deze activeert door op een knop te klikkken volgt er een userform die vraagt om de toegangscode. Hierna ga ik naar het userform alwaar ik instellingen kan wijzigen en wordt de tekst op de knop veranderd en kan ik het instellingenmenu zonder verdere invoer van code direct benaderen. Userform is hierna telkens verborgen (Hide).

Tot hier geen probleem. Maar zodra ik het betreffende userform afsluit, moet dit weer ongedaan worden gemaakt en dat wordt het niet. De tekst op de knop verandert namelijk niet. Deze moet veranderen zodra het userform wordt afgesloten. De tekst op de knop is namelijk de trigger voor de "if" functie.

De macro van de knop staat in een module alszijnde Sub Instellingen()
 
Is volgens mij niet eens mogelijk. Knop is gemaakt via invoegen en vormen in excel 2007. Kan er alleen een opdracht achter zetten. Formulier oproepen.
 
Natuurlijk kan dat wel. Als je een knop in je document maakt kun je daar een macro aan hangen.
Deze is niet afhankelijk van een formulier. Als je met formulier tenminste een userform bedoeld.
 
Ja dat bedoel ik. De ene knop staat op een spreadsheet in Excel. Getekend door wat ik eerder schreef. Hier is de tekst op de normale manier invult.

Ik weet voor deze knop geen macro om de tekst die op de knop staat bij triggeren te veranderen. Van een userform ken ik het wel.

Die knop heeft nu gewoon een macro: Application.goto sheets("Voorbeeld").Range("A1") en frm_001.show.
 
Een voorbeeld documentje maakt het een stuk makkelijk ;)
 
Beste Edmoor. Omdat jij verder niet hebt gereageerd, begrijp ik dat jij de oplossing niet hebt, cq. dat dit inderdaad niet mogelijk is.

Mocht je nog wel een oplossing hebben of dat je er mee bezig bent dan hoor ik het graag.

Mvg

Maarten
 
Sorry, deze is er helemaal bij in geschoten om 1 of andere reden.
Vanavond gaat dat niet lukken maar ik zal er nog even naar kijken en kom er dan denk ik zondag op terug.
Mijn bureaublad is op een klokje na normaal gesproken helemaal leeg maar er prijkt nu een snelkoppeling naar je vraag :)
 
Laatst bewerkt:
Maakt niet uit. Ik ben al blij met jou reactie. Geeft aan dat er toch nog hoop is :D.

Ik ben ook druk met een hoop dingen met name prive heb ik ook sinds vandaag erg veel te regelen. Kreeg een zeer vervelend bericht van de bank en laat je die nu net niet tegen je willen hebben. Laten ik kort zeggen dat de recessie nu ook hier zijn vervelende werk gaat doen. Leuk ondernemer zijn, maar het brengt ook vele ongemakken en risico's met zich mee. Ik raad wat dat aan gaat een ieder af om voor zichzelf te beginnen tenzij je echt iets kunt bijdragen op een specifiek vak waar weinig mensen voor zijn. Maar goed dit ter zijde.

Verder ben ik een onnodig formulier aan het wegwerken. Het is niets dat ik er nu zo veel mee bezig ben, maar ik zie steeds meer dingen die makkelijker kunnen. Het tijdperk die jij cq velen van jullie hier al gehad hebben en ver achter jullie hebben gelaten.

Wellicht dat ik straks ook hier met oplossingen aan kom zetten en ben ik het gegeven : Senior Member meer waard.;)

Oefening Baart Kunst zegt men altijd maar en zelfs dan weet je nog niet alles en leer je nog steeds van elkaar.
 
Laatst bewerkt:
Ik zeg altijd, niemand weet alles maar samen komen we ver. Dat is de hele bedoeling van een site als Helpmij.
Sterkte met je vervelende bericht, ook dat zal wel weer z'n weg vinden.
 
Ik denk altijd in oplossingen en soms is een oplossing niet altijd de gewenste, maar soms wel de beste op dat moment. Soms moet je niet schromen om je te laten adviseren. Het kan namelijk ook zijn dat een ongewenste oplossing een stap naar de oplossing is die men wilt hebben.

Maar goed. Ik hoor het van je. In elk geval bedankt.

Mvg

Maarten
 
Twee stappen vooruit en 1 achteruit is nog altijd een stap vooruit :)
 
Die is mooi. Zal ik onthouden. Thanks.

Voor nu, on topic. :thumb:
 
Maarten,

Code:
Sub Start()
 Sheets("Blad1").Shapes(1).TextFrame.Characters.Text = "Geslaagd"
 UserForm1.Show
End Sub
Code:
Private Sub cb_Einde_Click()
 Sheets("Blad1").Shapes(1).TextFrame.Characters.Text = "TEST" 'Tekst op knop veranderen in TEST
 Unload Me
End Sub
 
Dat kan lijkt me eenvoudiger:

Gebruik de initialize gebeurtenis van het userform om te controleren of de gebruiker dit userform mag gebruiken:

Code:
Private sub Userform_Initialize()
  if instr("|ik|jij|hij|zij|wij|jullie|","|" & environ("username")& "|")=0 then unload me
End Sub

Val een gebruiker niet lastig met inlogprocedures: dat lijkt me meteen 4 stappen vooruit.
 
Laatst bewerkt:
Ik hoef het al niet meer te doen zie ik :)
 
Ik ga de code hier neer knallen, want bovenstaande vind ik hartstikke mooi, maar ????????????????? Ik snap er eerlijk gezegd weinig van.
 
De macro van de knop: Instellingen. De tekst moet na invoeren van de code gewijzigd worden in "Instellingen vrij toegankelijk".

Macro onder de knop "Instellingen".

Code:
Sub Instellingen()
'Knop
    Sheets("Wachtwoord").Select
    frm_005.Show

Dan de code van formulier 5.

Code:
Private Sub UserForm_Initialize()

    frm_005.Caption = "Frm_005"

    tb_Aantal.Value = 1
    tb_Aantal.Visible = False
    tb_Aantal.BackColor = &HFFFFC0 'Kleur Lichtblauw
    lb_Vraag.Caption = " Voer uw autorisatiecode in" & vbNewLine & " en kik op OK om verder te gaan." & vbNewLine & vbNewLine & " U heeft 3 pogingen"
    lb_Vraag.BackColor = &HC0FFFF 'Kleur Geel
    cb_OK.Caption = "OK"
    cb_OK.BackColor = &HC0E0FF 'Kleur Roze
    cb_Annuleren.Caption = "Annuleren"
    cb_Annuleren.BackColor = &HC0E0FF 'Kleur Roze
    
End Sub

Private Sub cb_OK_Click()

Const strPass As String = ""
Dim lPassAttempts As Long
On Error GoTo 0
lPassAttempts = tb_Aantal.Value
  If lPassAttempts <= 2 Then
    lb_Vraag.Caption = " U heeft een onjuiste code ingevoerd." & vbNewLine & " Voer nogmaals uw code in." & vbNewLine & vbNewLine & " Ingave " & lPassAttempts & " van 3 is foutief."
        If tb_Wachtwoord <> strPass Then
            With Me
                tb_Wachtwoord.Value = vbNullString
                tb_Wachtwoord.SetFocus
                tb_Aantal.Value = lPassAttempts + 1
            End With
        Else
Vervolg:
                Unload Me
                frm_006.Show
        End If
        
ElseIf lPassAttempts > 1 Then
        If tb_Wachtwoord <> strPass Then
            Unload Me
            MsgBox "U heeft 3 keer een verkeerde code ingevoerd." & vbNewLine & vbNewLine & "De toegang tot dit menu is geweigerd." & vbNewLine & vbNewLine & "Klik op de knop OK om verder te gaan.", vbOKOnly + vbInformation, "Toegang geweigerd"
            Sheets("Hoofdmenu").Select
            
        Else
            GoTo Vervolg
        End If
    End If
    
End Sub

Private Sub cb_Annuleren_Click()

    Unload Me
    Sheets("Hoofdmenu").Select
    
End Sub

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

Het moet dus zo zijn dat de code maar 1 maal hoeft worden ingevoerd. Zodra formulier 6 daadwerkelijk wordt afgesloten (Unload) dan moet de zaak weer teruggedraaid worden en de tekst op de knop Instellingen weer naar "Instellingen" gaan.

Even aanvulling.

Het stukje sub afsluiten van formulier 6.

Code:
Private Sub cb_Afsluiten_Click()
 
    With Application
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
        .DisplayFormulaBar = False
        .DisplayStatusBar = False
        .OnKey "%{F8}", ""
        .OnKey "%{F11}", ""
    End With
            
    ActiveWindow.DisplayWorkbookTabs = False
    
    Dim wsSheet As Worksheet
    On Error Resume Next
    For Each wsSheet In Worksheets
        wsSheet.Protect "1235"
    Next wsSheet
    
    On Error GoTo 0
    
    Unload Me
    Sheets("Hoofdmenu").Select
    
End Sub
 
Laatst bewerkt:
We hebben niets aan code; plaats je bestand.
 
Oei. De macro is nog een beetje een zootje. Ik heb er veel in aangepast en staat een beetje door elkaar. Ik ben dat nog allemaal beter aan het indelen waardoor een beetje het overzicht weer terugkomt. Plus dat het huidig VBA bestand niet bij deze layout hoort. De layout ziet er namelijk iets anders uit. Ik ben de macro apart aan het maken. Beide werken wel op elkaar, maar ik ben bang dat dit voor jullie ook meer onduidelijkheid geeft. De betreffende sub's waar het omgaat staan hierboven. Mag ik vragen waarom jullie dan het bestand nodig hebben? In feite heb ik jullie alle info gegeven. Behalve dan dat de knop op tabblad: Hoofdmenu staat en dat het betreffende formulier op een apart tabblad wordt geopend. Daarnaast is het VBA project al zodanig ingesteld dat bij openen van het bestand alles staat uitgeschakeld en dat je niet zomaar de bladen kan aanpassen dan via het menu instellingen.

Komen jullie met bovenstaande echt niet verder dan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan