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

Macro in verborgen werkblad

Status
Niet open voor verdere reacties.

Yasmin

Gebruiker
Lid geworden
22 mei 2004
Berichten
184
Ik heb een werkmap met 2 werkbladen, blad 1 (Invoer) en blad 2 (Database).
Op blad (Invoer) geef ik o.a. een week nr. en tijden in.
Op blad (Database) zijn met een koppeling de gegevens uit blad (Invoer) gezet.
(bereiknaam dbwk0).
Vanaf blad (Invoer) start ik met een opdrachtknop een macro (zie hieronder) op blad (Database).
Nu wil ik echter blad (Database) verbergen (2-xlSheetVeryHidden) maar als ik dat doe loopt mijn macro vast. Weet iemand hier een oplossing voor?


Sub Kopie_nrdb()
'
' Kopie_nrdb Macro

' Sneltoets: CTRL+k
'
Sheets("Database").Select
Range("A2").Select
If ActiveCell.Value = 1 Then
Application.Goto Reference:="dbwk0"
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="dbwk1"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If

Sheets("Database").Select
Range("A2").Select
If ActiveCell.Value = 2 Then
Application.Goto Reference:="dbwk0"
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="dbwk2"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If

Sheets("Database").Select
Range("A2").Select
If ActiveCell.Value = 3 Then
Application.Goto Reference:="dbwk0"
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="dbwk3"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWindow.ScrollRow = 1
Range("A2").Select
End If
End Sub

Ook wil ik dit macro nog uitbreiden van 3 naar 53 weken. Is er misschien een kortere versie mogelijk?

Vr.gr. André
 
Hoi André,

Zodra een sheet hidden is kun je er niets meer in selecteren, waarschijnlijk liep je macro daarom vast. Gelukkig is het niet nodig om cellen te selecteren om er mee te werken, het is zelfs beter om dat niet te doen. Voor 53 weken zou je code er zo uit komen te zien:

Sub Andre()
Const intAANTAL_WEKEN As Integer = 53
Dim intWeekNr As Integer

ThisWorkbook.Sheets("Database").Visible = xlVeryHidden
For intWeekNr = 1 To intAANTAL_WEKEN
With ThisWorkbook.Sheets("Database").Range("A2")
If .Value = intWeekNr Then
Range("dbwk" & intWeekNr) = Range("dbwk0")
End If
End With
Next intWeekNr
End Sub

Ik ken je specifieke werkboek niet, dus ik kan je niet garanderen dat het gaat werken, maar zoiets moet het worden.
 
André,

Een andere optie is om het beveiligen en het opheffen van de beveiliging te regelen in je macro. Voor het beveiligen en opheffen kun je ook een macro opnemen.
Die plak je dan als volgt in elkaar:
1. Beveiliging opheffen
2. Bestaande macro
3. Beveiliging er weer opzetten.
En niemand die iets in de gaten heeft.

Mieke.
 
Hoi ExcelExpert,

Jouw oplossing is bijna goed, het wegschrijven naar een hidden sheet gaat nu goed en de macro is flink korter, alleen wordt de data van de verschillende weken naar dezelfde range(“dbwk0” (=A2:A10)) geschreven. Dit moet zijn voor week 1 range:(“dbwk1” (=A12:A20)), voor week 2 zijn range(“dbwk2” (=A22:A30)), voor week 3 zijn range(“dbwk3” (=A32:A40)) enz.
Als je hier nog een oplossing voor weet zou dat geweldig zijn.

Vr.gr. André
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan