ewaldmauritz
Gebruiker
- Lid geworden
- 19 okt 2011
- Berichten
- 87
Ik van internet de volgende macro's gevonden om kopiëren/knippen te blokkeren. Ze staan in Thisworkbook.
Op zich werkt dat prima, maar ik heb een macro die zelf kopieert en plakt. Dat is de volgende (staat in de werkbladmodule Blad1 Planning):
Die macro werkte goed, maar nu de macro's om het kopiëren/knippen te blokkeren zijn toegevoegd, krijg ik een 400-foutmelding. Waarschijnlijk omdat het kopieren/knippen is geblokkeerd. Nu wil ik het kopiëren/knippen dus tijdens het draaien van de macro Sub Sorteer_projecttrekker tijdelijk deblokkeren. Aan het einde van de macro kan het kopiëren/knippen weer worden geblokkeerd.
Ik heb het volgende daarom al geprobeerd:
1. Op de eerste regel van Sub Sorteer_projecttrekker heb ik toegevoegd: Call ThisWorkbook.Workbook_Deactivate --> ik krijg dan een compileerfout.
2. Daarom heb ik in de macro's in Thisworkbook Private veranderd in Public. Maar dan krijg ik een 400-foutmelding.
Wat doe ik fout? Hoe moet ik een macro in Thisworkbook aanroepen in een werkbladmodule? En waar komt die 400-foutmelding vandaan?
Code:
Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl
'Disable all Cut menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = False
Next oCtrl
'Disable all Copy menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = False
Next oCtrl
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Deactivate()
Dim oCtrl As Office.CommandBarControl
'Enable all Cut menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = True
Next oCtrl
'Enable all Copy menus
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = True
Next oCtrl
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Application
.CellDragAndDrop = False
.CutCopyMode = False 'Clear clipboard
End With
End Sub
Code:
Sub Sorteer_projecttrekker()
Sheets("Uren per dag").Select
Call Uren_kopieren
Call Verticaal_zoeken
Sheets("Planning").Select
Range("A12:BG41").Select
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Add Key:=Range( _
"A12:A41"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Add Key:=Range( _
"B12:B41"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Planning").Sort
.SetRange Range("A12:BG41")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Uren per dag").Select
Call Plakken_als_waarden
Call Hulpoutput_verwijderen
Sheets("Planning").Select
Range("A12").Select
Call Lege_rijen_planning_verbergen
End Sub
Ik heb het volgende daarom al geprobeerd:
1. Op de eerste regel van Sub Sorteer_projecttrekker heb ik toegevoegd: Call ThisWorkbook.Workbook_Deactivate --> ik krijg dan een compileerfout.
2. Daarom heb ik in de macro's in Thisworkbook Private veranderd in Public. Maar dan krijg ik een 400-foutmelding.
Wat doe ik fout? Hoe moet ik een macro in Thisworkbook aanroepen in een werkbladmodule? En waar komt die 400-foutmelding vandaan?