VBA procedurenaam uit variabele

Status
Niet open voor verdere reacties.

Diniz

Gebruiker
Lid geworden
1 jun 2009
Berichten
62
Als ik in een procedure een andere procedure wil opstarten doe ik dit door de procedure naam in te vullen. Als ik onderstaande code uitvoer wordt de sub werktzeker vanuit sub test uitgevoerd.

Code:
Public Sub test()

    werktzeker

End Sub

Public Sub werktzeker()

    MsgBox "werkt"

End Sub

Nu wil ik de procedure via een variabele uitvoeren. Alleen dit krijg ik niet voor elkaar. Heb al vele varianten geprobeerd om dit voor elkaar te krijgen, zoals bijvoorbeeld onderstaand. Is dit mogelijk en zo ja hoe?

Code:
Public Sub test()

    varProcedureNaam = "werktzeker"
    
    varProcedureNaam


End Sub

Public Sub werktzeker()

    MsgBox "werkt"

End Sub
 
Misschien met Select Case?
Public Sub test()

varProcedureNaam = "werktzeker"

Select Case varProcedureNaam
Case "werktzeker1"
werkzeker1()
Case "werktzeker2"
werkzeker2()
End Select

End Sub
 
Probeer deze maar eens.
Ze moeten wel in een module staan.

Code:
Public Sub test()
    varProcedureNaam = "werktzeker"
    
    Call Run(varProcedureNaam)
End Sub
 
Probeer deze maar eens.
Ze moeten wel in een module staan.

Code:
Public Sub test()
    varProcedureNaam = "werktzeker"
    
    Call Run(varProcedureNaam)
End Sub

Dit is wat ik bedoel, werkt pefect! Mijn dank!
 
Call is ovebodig sinds 1997.

Code:
sub M_snb()
  application.Run "werkzeker"
end sub
 
Kun je daarmee ook parameters aan de te runnen procedure doorgeven en procedures uit andere addins aanroepen?
 
Ja. kijk maar in de hulpbestanden (en intellisense) van de VBEditor.

Code:
Sub M_snb()
    Application.Run "macro1", 12
End Sub

Code:
Sub Macro1(c00)
    MsgBox c00
End Sub

De macro kan ook in de codemodule van een werkblad of een werkboek staan.
Je moet hem dan met de codename van werkblad resp. werkboek aanroepen:

Code:
Sub M_snb()
    Application.Run "Blad1.macro1", 12
    Application.Run "Thisworkbook.macro1", 23
End Sub
 
Laatst bewerkt:
Net gedaan en inderdaad geen probleem.
Ik zal de oude stempels eens opzoeken en wegmikken :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan