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

Werking macro beperken tot 1 werkmap

Status
Niet open voor verdere reacties.

CoCodex

Gebruiker
Lid geworden
20 okt 2006
Berichten
10
Hallo

Hoe kun je voorkomen dat een macro wordt uitgevoerd in een andere werkmap dan de actieve werkmap?

Ik heb meerdere geopende werkmappen met dezelfde inhoud (en macro's). Als ik een macro start wordt deze uitgevoerd in de eerste werkmap die geopend is (vlgs het indexnummer). De macro mag echter alleen worden uitgevoerd in de werkmap die op dat moment actief is. Kan dat?

Groet,
CoCodex
 
En hoe ziet de code eruit?

Plaats die hier, tussen code tags (dus klik op het # symbool en plak de code ertussen).
 
CoCodex, Hoe krijg jij die code in die andere werkmap dan opgstart? Normaal gesproken start je je code met iets van een knop of een change-event. Dus dan zal er altijd in dat active workbook gekeken worden want dáár roep je de code aan.
Bij het nogmaals doorlezen van je post. Je hebt het toch echt over een werkmap (Workbook = het bestand) en niet over een tabblad in een werkmap?

Groet, Leo
 
?

Hoe bedoel je precies...ik heb eens bij mij gecheckt, maar algemene Macro's gaan bij mij in principe atijd op voor de map en werkblad die ik actief heb staan. Of is de macro opgenomen in het bewuste bestand?

In ieder geval, als ik wil voorkomen dat de macro wordt uitgevoerd in een map anders dan bedoeld, dan neem ik de volgende code boven in de macro op..

Sub Macronaam()
If ActiveWorkbook.Name <> "Mapnaam" Then Exit Sub Else de rest van de code

End Sub
 
Hallo Wigi,

Ik heb de code een stukje ingekort maar het komt op het volgende neer:


Code:
Sub BeveiligingInstellen()

    Application.ScreenUpdating = False
    ThisWorkbook.Activate
    ActiveWorkbook.Protect Password:="x", Structure:=False, Windows:=False
    
' Beveiliging werkbladen opheffen
'
    Sheets("OVZ").Select
    Worksheets("OVZ").Unprotect
    Worksheets("VULGEW").Unprotect
    Worksheets("NETTOGEW").Unprotect
    
' Rijen verbergen en startpositie van de cursor per werkblad instellen
'
    Sheets("OVZ").Activate
    ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
    Range("A1").Select
    Range("Aantalverpgeprod").Select
    ActiveCell.Offset(0, 0).Range("A1").Select
    Application.MoveAfterReturn = False
    
    Sheets("VULGEW").Activate
    ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
    Range("VulgewBronrij").EntireRow.Hidden = True
    Range("HomeVulgew").Select
    ActiveCell.Offset(3, 1).Select
    Application.MoveAfterReturn = False
    
    Sheets("NETTOGEW").Activate
    ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
    Range("NettogewBronrij").EntireRow.Hidden = True
    Range("HomeNettogew").Select
    ActiveCell.Offset(3, 1).Range("A1").Select
    Application.MoveAfterReturn = False
    
' Zichtbare rijen in OVZ instellen
'
    Sheets("OVZ").Select
    ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
    Range("Afdrukbereik").EntireRow.Hidden = False
        
    If Range("VulgewRFP1") < 1 Then
    Range("RapVulgew").EntireRow.Hidden = True
    Else

    End If
    
    If Range("NetgewRFP2") < 1 Then
    Range("RapNettogew").EntireRow.Hidden = True
    Else
    
    End If

' Scroll bereik per werkblad instellen
'
    Worksheets("OVZ").ScrollArea = "A1:J140"
    Worksheets("VULGEW").ScrollArea = "A1:P200"
    Worksheets("NETTOGEW").ScrollArea = "A1:P200"
   
' Celblokkering per werkblad instellen
'
    With Worksheets("OVZ")
         .EnableSelection = xlUnlockedCells
         .Protect Contents:=True, UserInterfaceOnly:=True
    End With
    
    With Worksheets("VULGEW")
         .EnableSelection = xlUnlockedCells
         .Protect Contents:=True, UserInterfaceOnly:=False
    End With
    
    With Worksheets("NETTOGEW")
         .EnableSelection = xlUnlockedCells
         .Protect Contents:=True, UserInterfaceOnly:=True
    End With
        
' Schermweergave van alle werkbladen instellen
'
   Sheets(Array("OVZ", "VULGEW", "NETTOGEW")).Select
    With ActiveWindow
        .DisplayFormulas = False
        .DisplayGridlines = False
        .DisplayHeadings = False
        .DisplayOutline = False
        .DisplayZeros = True
        .DisplayHorizontalScrollBar = False
        .DisplayVerticalScrollBar = False
        .DisplayWorkbookTabs = False
    End With
   
' Beveiliging werkbladen instellen
'
    Sheets("OVZ").Select
    Worksheets("OVZ").Protect
    Worksheets("VULGEW").Protect
    Worksheets("NETTOGEW").Protect
    ActiveWorkbook.Protect Password:="x", Structure:=True, Windows:=True
  
' De beginpositie van de cursor ingestellen
'
    Sheets("OVZ").Select

' Venster instellen en werkbalken onzichtbaar maken
'
    ThisWorkbook.Activate
    Application.DisplayFormulaBar = False
    Application.CommandBars("Standard").Visible = False
    Application.CommandBars("Formatting").Visible = False
    Application.CommandBars("Forms").Visible = False
    Application.CommandBars("Stop Recording").Visible = False
    Application.CommandBars("Drawing").Visible = False
    Application.CommandBars("Visual Basic").Visible = False
    With Application
        .DisplayFormulaBar = False
        .DisplayStatusBar = False
    End With
    
    Application.ScreenUpdating = True
    ActiveWindow.WindowState = xlMaximized

End Sub
 
Opgelost

Ik ben erachter wat de oorzaak is van het probleem. Ginger zette mij op het spoor met de vraag hoe de macro werdt gestart. Dit gebeurt namelijk middels een sneltoets. Wanneer ik twee identieke werkmappen (alleen de data verschilt) heb geopend is de sneltoets in beide werkmappen gekoppeld aan een identieke macro. Wanneer ik de sneltoets activeer wordt de macro uitgevoerd in de werkmap die als eerste is geopend. Door de macro te activeren middels een knop hoop ik dit probleem te omzeilen.

Iedereen bedankt voor de snelle reactie:thumb::thumb:

Groet,
CoCodex
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan