Hi, all

I'm encountering a weird problem my VBA code opens the vba editor withoout my intention and I want to close it afterwards so user can not click the vba editor open and do "bad" things.


Situation
I have a form with dynamic buttons these buttons are made visible and vba code is added to the form vba module from the database.
The code behind the click buttons depends on the user (or in fact the groups he or she im a member off)

This is the code that creates the problem:


Code:
Private Function PlaceDynamicButtons(GebruikerID As Long, FormulierNaam As String) As Long

    Dim DB As DAO.Database
    Dim Rs As DAO.Recordset

    Dim Frm As Form
    Dim Mdl As Module
    Dim Ctrl As Control
    Dim Btn As CommandButton
    Dim BtnName As String

    Dim StrSqlSelect As String
    Dim StrSqlFrom As String
    Dim StrSqlWhere As String
    Dim StrSQLOrder As String

    '---- Objecten instellen ----------------
    DoCmd.OpenForm FormulierNaam, acDesign, , , , acHidden
    Set Frm = Forms.Item(FormulierNaam)
    Set Mdl = Frm.Module
    ' ---------------------------------------


    StrSqlSelect = "SELECT Distinct TblGebruikerGroep.GebruikerID, TblCommandButtons.DisplayOrder, TblCommandButtons.Naam, TblCommandButtons.Caption, TblCommandButtons.Code, TblCommandButtons.Parent "
    StrSqlFrom = "FROM TblGebruikers INNER JOIN (TblGebruikerGroep INNER JOIN (TblCommandButtons INNER JOIN TblControlGroep ON TblCommandButtons.ControleId = " & _
                 "TblControlGroep.ControleId) ON TblGebruikerGroep.GroepId=TblControlGroep.GroepId) ON TblGebruikers.GebruikerID=TblGebruikerGroep.GebruikerID "
    StrSqlWhere = "WHERE TblGebruikerGroep.GebruikerID = " & GebruikerID & " AND TblCommandButtons.Parent = '" & Frm.Name & "' AND  TblGebruikers.InDienst <Date() AND ( TblGebruikers.UitDienst >Date() OR TblGebruikers.UitDienst Is Null)"
    StrSQLOrder = "ORDER BY TblCommandButtons.DisplayOrder, TblCommandButtons.Naam;"


    Set DB = CurrentDb
    Set Rs = DB.OpenRecordset(StrSqlSelect & StrSqlFrom & StrSqlWhere & StrSQLOrder, dbOpenDynaset, dbSeeChanges, dbReadOnly)

    ' verberg alle dynamisch gebruikte knoppen.
    For Each Ctrl In Frm.Controls
        If TypeOf Ctrl Is CommandButton Then

            Set Btn = Ctrl
            If InStr(1, Btn.Tag, HIDESTRING) > 0 Then
                Btn.Left = 100
                Btn.Top = 100
                Btn.Width = 200
                Btn.Visible = False
            End If
        End If
    Next

    Set Btn = Nothing

    BtnName = ""


    Do While Not Rs.EOF

        ' voorkom dubbele knoppen
        If BtnName <> Rs.Fields("Naam") Then

            ' ------------------------------------------------------------------------
            ' Selecteer 1 van de 10 button templates.
            ' ------------------------------------------------------------------------
            BtnName = Rs.Fields("Naam")
            Set Btn = Frm.Controls.Item("Btn" & BtnCounter + 1)
            BtnName = Rs.Fields("Naam")
            Btn.Tag = HIDESTRING
            Btn.Width = BUTTON_WIDTH
            Btn.Top = FIRST_BUTTON_TOP + (BtnCounter * (BUTTON_HEIGHT + BUTTON_SPACING))
            Btn.Height = BUTTON_HEIGHT
            Btn.Left = BUTTON_LEFT
            Btn.Caption = Rs.Fields("Caption") & ""

            ' verwijder bestaande click event code
            If Mdl.Find(Btn.Name & "_Click", 0, 0, Mdl.CountOfLines, 100) Then
                Mdl.DeleteLines Mdl.ProcStartLine(Btn.Name & "_Click", vbext_pk_Proc), Mdl.ProcCountLines(Btn.Name & "_Click", vbext_pk_Proc)
            End If

            
            
            ' voeg code voor click event toe
            Mdl.CreateEventProc "Click", Btn.Name
            Mdl.InsertLines Mdl.ProcBodyLine(Btn.Name & "_Click", vbext_pk_Proc) + 1, "'-- Dynamisch gegenereerde code --" & vbCrLf & Rs.Fields("Code") & vbCrLf & "' ---------------------------------"

            Btn.OnClick = "[Gebeurtenisprocedure]"
            BtnCounter = BtnCounter + 1
            Btn.Visible = True

        End If

        Rs.MoveNext

    Loop

    
    
    

    If Not (Btn Is Nothing) Then
        PlaceDynamicButtons = Btn.Top + Btn.Height
    Else
        PlaceDynamicButtons = FIRST_BUTTON_TOP
    End If

    DoCmd.Close acModule, Mdl.Name
    

    Set Ctrl = Nothing
    Set Mdl = Nothing
    Set Frm = Nothing

    Rs.Close
    Set Rs = Nothing
    Set DB = Nothing


    DoCmd.SetWarnings False
    DoCmd.Close acForm, FormulierNaam
    DoCmd.SetWarnings True

End Function

I treid to find the process or application, but the weird thing is... the vba editor is listed as a sepparate application, but it's proccess is MSAccess.
I don't wan't to kill MsAccess completly as it's running my application.

How can I kill the vba editor thread but leave MsAccess alive?

thanks in advance?