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

Macronaam in vba

  • Onderwerp starter Onderwerp starter AatB
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

AatB

Gebruiker
Lid geworden
15 dec 2007
Berichten
257
Hallo,

Ik zoek naar een mogelijkheid om de macronaam van de macro welke op dat moment draait in een variable te zetten ivm een errorafhandeling.
Nu heb ik al een beetje op internet gezocht, maar kon alleen onderstaande functie vinden welke alle macro's toont.
Wellicht dat dit als basis kan dienen om de running macronaam te achterhalen.

Code:
Private Sub ProcLst()

Dim i As Long, i2 As Long, MyProc As String
Dim vBcomp As Object
Dim xlApp As Object, xlWb As Object

Set xlApp = GetObject(, "Excel.Application")
Set xlWb = xlApp.Workbooks(1)

For Each vBcomp In xlWb.VBProject.VBComponents
    With vBcomp.CodeModule
        For i = 1 To .CountOfLines
            If Not MyProc = .ProcOfLine(i, 0) And _
                Not .ProcOfLine(i, 0) = vbNullString Then
                MyProc = .ProcOfLine(i, 0)
                i2 = i
                Do Until CBool(Len(.Lines(i2, 1)))
                    i2 = i2 + 1
                Loop
                Debug.Print MyProc
            End If
        Next i
    End With
Next vBcomp

Set xlWb = Nothing: Set xlApp = Nothing

End Sub

ik hoor graag van jullie,

mvg,

Aat
 
Als je in een macro de naam van de macro nodig hebt, haal je hem toch gewoon uit Private Sub ProcLst()?
Code:
Private Sub ProcLst()
Dim sMacroNaam As String
sMacroNaam = "ProcLst"
Waarom zo moeilijk?
 
Als je in een macro de naam van de macro nodig hebt, haal je hem toch gewoon uit Private Sub ProcLst()?
Code:
Private Sub ProcLst()
Dim sMacroNaam As String
sMacroNaam = "ProcLst"
Waarom zo moeilijk?

Als je een error afhandeling wilt doen, dan werkt dit niet als er meerdere macro's achter elkaar afgehandeld worden. Ik zoek dus een mogelijkheid om een macronaam te kunnen bepalen, zonder deze zoals in jouw geval van te voren te benoemen.
 
Complete berichten quooten is vrij zinloos; zou je de quoot willen verwijderen?
En je kunt de macronaam toch meegeven als je de volgende macro's start?
 
Laatst bewerkt:
Dat zou het hele gebeuren vrij complex maken. Ik gebruik meer dan 150 macro's.
Als ik vlak voor de errorafhandeling kan bepalen in welke macro ik zit zou dit veel simpeler zijn.
 
Even de klapper uit mijn oren laten zakken..... 150 macro's die je achter elkaar laat draaien?
 
Wellicht kun je iets met het Application.Caller object? Weliswaar bedoeld om objecten te achterhalen die een macro triggeren, maar het kan ook wat beperkte macro's afvangen.
 
Geen 150 maar vaak zijn het 4 of 5 macro's....
Ik zal even kijken naar je suggestie applicaton.caller object
 
Kun je vertellen wat je met die informatie vervolgens wil doen ?
Heel simpeltjes kun je bijv. in Excel iedere macro laten beginnen door zijn/haar eigen naam naar de statusbalk te laten schrijven.
 
Laatst bewerkt:
Ja , maar hoe krijg je de naam van de macro zonder hem zelf te benoemen in de macro?
Dus een soort functie die de macronaam ophaalt.
 
Wat je zoekt is de eigenschap Source van het Err object: zoek even op in de help. Maar helaas levert Source niet wat jij wilt. Dat kun je voor elkaar krijgen door in elke procedure een constante te definieren met de naam van de procedure. Of bijv zo:
Code:
Public Function MijnProcedure()
    On Error GoTo ErrorHandler

    ' hier je code
    
ExitSub:
    Exit Function
ErrorHandler:
    MError.HandleError "Module1.MijnProcedure"
    Resume ExitSub
End Function
Dit hoef je niet zelf in te typen, dat doet een tool als MZ-Tools voor je.
 
Waarom zou je niet in iedere macro zetten:

Code:
Sub tst()
    Application.StatusBar = "tst"
    -----------
End Sub
 
Sub M_snb()
    Application.StatusBar = "M_snb"
    -----------
End Sub
 
Laatst bewerkt:
Hi Frans,

prima tip aangaande MZ-Tools.
Ik ga het op die manier oplossen.

Bedankt iedereen voor jullie input.

mvg,

Aat
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan