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

VBA sub script vraag

Status
Niet open voor verdere reacties.

Koos Timmer

Gebruiker
Lid geworden
1 jul 2007
Berichten
72
Hallo.

waar moet ik nu een sub neerzetten als ik deze wil runnen voor ik opstart.
kan ik ook een sub roetiene in een sub hebben ?



ik wil dus iets laten doen voor dat ik mijn sheet voor het scherm heb en weer iets gaan doen tijdens het afsluiten.

b.v. iets aan en uitschakellen hoe en of waar moet ik nu zoiets neerzetten en onder wat voor een noemer b.v. Public Sub beforopen()

dit heeft te maken met een vorige vraag ( EnableControl / Application ??? )


Groeten Koos.
 
Koos, dat doe je in de ThisWorkbook module van je VBE (Visual Basic Editor). Je kan daar 2 event-procedures (uiteraard méér, maar dit is wat je wilt:D ) opgeven:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    'hier je code die moet werken vóórdat het workbook gesloten wordt

End Sub

Private Sub Workbook_Open()

    'hier je code die moet werken als het workbook geopend wordt

End Sub

Je kan een procedure vanuit een andere procedure aanroepen met het commando: Call (Het mag óók zonder dit commando! Dus alléén de sub die je wilt aanroepen. Dat vind ik persoonlijk op een gegeven moment zéér onleesbaar worden!!!!)
VOORBEELD: Stel je voor dat je aan het werk bent in een procedure genaamd Test(). Je wilt dan op een gegeven moment de beveiliging in je werkblad opheffen. Dat kan je dan door door in iedere procedure deze handeling op te nemen, maar je kan er óók een aparte procedure (bijvoorbeeld met de naam: 'onbeveilig_sheet()') van maken die je iedere keer vanuit welke procedure dan, aanroept. Je zet dan op de juiste plaats in je code (dus daar waar de aanroep moet plaatsvinden) deze regel: Call onbeveilig_sheet().
Eventueel kan je nog de modulenaam er aan koppelen voor het geval dat je met veel modules werkt: Call Module1.onbeveilig_sheet(). Dat kan het naderhand lezen van je code een stuk duidelijker maken.
Je 1e sub blijft trouwens 'actief'! Dus als de aangeroepen 2e sub is beëindigd, zal er worden teruggekeerd naar de 1e...

Groet, Leo
 
Laatst bewerkt:
Hallo.

bedankt voor de reactie.

ik heb het zo gedaan:

Code:
Private Sub Workbook_Open()

Sheets("blad1").Activate

Call VerbergToolbars

End Sub
Public Sub VerbergToolbars()
'
' verbergtoolbar Macro
' De macro is opgenomen op 24-7-2007 door K Timmer.
'

'
    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = False
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = True
volgende:
End Sub
Sub Workbook_BeforeClose(Cancel As Boolean)

ActiveWorkbook.Save

'
' toontoolbar Macro
' De macro is opgenomen op 24-7-2007 door K Timmer.
'

'
    Dim i As Integer
    For i = 1 To CommandBars.Count
      CommandBars(i).Enabled = True
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = False
volgende:

End Sub

Het vreemde is dat het wel werkt als macro en hier werkt het niet.
of ben ik verdwaald ?

Groeten Koos.
 

Bijlagen

  • Test Toolbars 2e.zip
    9,5 KB · Weergaven: 27
Laatst bewerkt:
Het vreemde is dat het wel werkt als macro en hier werkt het niet
Huh??? Wat staat daar?

'============================================================

Op deze manier moet het wel lukken dacht ik zo...:

Module:
Code:
Sub VerbergToolbars()
    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = False
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = True
[B]Exit Sub[/B]
volgende:
    msgBox Err.Description
End Sub

ThisWorkbook:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveWorkbook.Save

    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = True
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = False
[B]Exit sub[/B]
volgende:
    msgbox Err.Description
End Sub
 
Hallo.

het werkt dus niet !

en die error melding via msgbox Err.Description

laat ik maar weg .:confused:

die melding zit niet op te wachten .
bij mij werkt het alleen via macro.

Dat van jou ( Ginger ) heb ik ook geprobeerd maar werkt ook niet.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    'hier je code die moet werken vóórdat het workbook gesloten wordt

End Sub

Private Sub Workbook_Open()

    'hier je code die moet werken als het workbook geopend wordt

End Sub
 
Ik snap niet wat je doet, want hij doet het hier prima.

Plaats nu 2 commandbuttons, uit "Werkset Besturingselementen", op blad 1
Open de VBA Editor (Alt+F11)

Plaats deze code in een module:
Code:
Option Explicit

Sub VerbergToolbars()
    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = False
    Next i
    CommandBars("NaamCommandBar").Enabled = True
End Sub

Sub Toontoolbar()
    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = True
    Next i
    CommandBars("NaamCommandBar").Enabled = False
End Sub

Plaats deze code in Blad1
Code:
Option Explicit

Private Sub CommandButton1_Click()
    VerbergToolbars
End Sub

Private Sub CommandButton2_Click()
    Toontoolbars
End Sub

Sluit de VBA en klik eens op CommandButton1 en daarna op CommandButton2. ;)

Even een algemene tip: Je moet dergelijke macro's nimmer door derden laten openen zonder mede te delen wat deze doet. Ik zou er zelfs boos om kunnen worden wanneer mijn CommandBars zo maar even weg worden gewerkt. :p Wees er dus voorzichtig mee en gebruik het alleen als je weet waar je mee bezig bent.
 
Laatst bewerkt:
Ik zie overigens dat het nog wel eens fout kan gaan. Je moet zelf even zien en codes toevoegen en/of aanpassen wanneer het fout gaat. Als dat niet lukt, dan hoor ik het wel.
 
Hallo Radjesh Klauke.

Hartelijk dank voor de hulp.

Het is gelukt.
Ik had alles in Workbook geplaatst.
Dit heb ik nu in mijn Workbook staan.


Code:
Private Sub Workbook_Open()
Call VerbergToolbars
End Sub
Code:
Sub Workbook_BeforeClose(Cancel As Boolean)
Call Toontoolbar
End Sub

En dit heb ik in Algemeen staan :
Code:
Sub VerbergToolbars()
    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = False
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = True
Exit Sub
volgende:
End Sub
Code:
Sub Toontoolbar()
    ActiveWorkbook.Save

    Dim i As Integer
    For i = 1 To CommandBars.Count
        CommandBars(i).Enabled = True
    Next i
    On Error GoTo volgende:
    CommandBars("mnuCloseForm").Enabled = False
Exit Sub
volgende:
End Sub

En het werkt nu goed.

Let OP. :mad:
Het gebruik van dit soort scrips is niet zonder gevaar.
somige mensen worden erg boos als hun werkbalkjes verdwenen zijn en niet terug komen.
zorg er altijd voor dat je iets achter de hand hebt om de werkbalken etc weer aan te zetten.

Het is maar dat je het weet.

ik ga maar weer eens zoeken naar CommandBars nr: etc

Alle info is welkom.

Groeten Koos. :thumb:
 
En eens je dat onder de knie hebt, probeer dan eens de Excel 2007 ribbon te programmeren...

(En stuur de code maar door, dan moet ik het werk niet meer doen ;))

Wigi
 
Hallo Wigi.

Ik wil beslist mijn beperkte kennis wel doorgeven, dat is geen probleem.
werk hier trouwens met office2003 heb het ooit gekocht een paar jaar geleden en
ben er zeer tevreden mee.

alleen heb ik me nooit bezig gehouden met VBA.

Ik kreeg in de gaten dat er veel meer mogelijk is in excel.
ik wil ook best een goed boek kopen over dit onderwerp maar
ben een al vaak teleurgesteld met de inhoud van boeken doordat ze
vaak niet diep genoeg in gaan op de het geen ik graag wil weten.
en als je alles experimenteel moet ontdekken je erg vaak vastloopt.

kleine goed werkende voorbeeld files zijn dan ook altijd zeer leerzaam is
mijn ervaring. je kunt er veel uithalen om het te gebruiken in andere programma`s.

maar vaak moet je ook gewoon een vraag stellen en hopen op reactie van
goedwillende.

Dit is niet mijn dagelijkse kost, ik ben dus geen ICT`er ben op de helft van 100 jaar
en dan gaat alles een ietsje langzamer zal ik maar zeggen.

Groeten Koos.
 
Ik ben ook verre van een ICT'er, dit is vrije tijd... ;)

Als je je wil verdiepen in VBA, ga dan voor:

Microsoft Excel 2002 Power Programming with VBA (Engels!) - John Walkenbach

2003 is gelijkaardig (of misschien is er een editie van het boek daarvoor, dat weet ik niet).

Dat boek is een aanrader. Heb het zelf "cover-to-cover" uitgelezen.

Wigi
 
Hallo.

Hartelijk dank voor de info.

Hier kan ik ook weer iets mee.

Elke dag leer ik weer iets.

Groeten Koos.:thumb:
 
Voor een overzicht van alle werkbalken en of deze wel of niet zichtbaar zijn kun je de volgende macro gebruiken.

Code:
Sub ToonAlleWerkbalken()

Dim balk As CommandBar

Range("A1").Formula = "Menubalk c.q. Werkbalknaam"
Range("B1").Formula = "Lokale balknaam Excel"
Range("C1").Formula = "Zichtbaar"
Range("D1").Formula = "Nummer"

Range("A2").Select
    For Each bar In Application.CommandBars
        ActiveCell.Formula = bar.Name
        ActiveCell.Offset(0, 1).Formula = bar.NameLocal
        ActiveCell.Offset(0, 2).Formula = bar.Visible
        ActiveCell.Offset(0, 3).Formula = bar.Index
        ActiveCell.Offset(1, 0).Select
    Next bar
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan