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

kopieren/plakken na activering macro

Status
Niet open voor verdere reacties.

uchhie

Gebruiker
Lid geworden
29 jan 2009
Berichten
34
Hallo allemaal,

Ik loop ergens tegen aan met een excelbestand dat ik heb gemaakt. Het excelbestand is gedeeld en wordt door meerdere gebruikers gebruikt. Doordat de gebruikers bij elkaar de instellingen steeds gingen wijzingen, gaf dit problemen met het bestand. Ik heb daarom bij het activeren van een elk werkblad een macro gemaakt waardoor de instellingen telkens terug worden gezet naar de oorspronkelijke instellingen. Alleen het probleem is nu dat de gebruiker niet iets kan kopieren en vervolgens kan plakken op een ander werkblad

Is er een mogelijkheid dat als een gebruiker tekst kopieert, vervolgens naar een andere wekblad gaat om vervolgens de gegevens op dat werkblad kan plakken zodat ik de macro nog wel kan blijven gebruiken

De volgende macro code heb ik gebruikt
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
    ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-80
    ActiveWindow.SmallScroll ToRight:=-40
    Range("H6").Select
    ActiveWindow.FreezePanes = True
    ActiveWindow.Zoom = 75
    Columns("AM:AQ").Select
    Range("AQ1").Activate
    Selection.EntireColumn.Hidden = True
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
    End With
Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Ik zou de code in ThisWorkbook zetten zodat ze voor alle werkbladen gelden.
Bovendien is het beter om een ander Event te kiezen (ipv Activate).

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
    ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-80
    ActiveWindow.SmallScroll ToRight:=-40
    Range("H6").Select
    ActiveWindow.FreezePanes = True
    ActiveWindow.Zoom = 75
    Columns("AM:AQ").Select
    Range("AQ1").Activate
    Selection.EntireColumn.Hidden = True
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
    End With
Application.ScreenUpdating = True
End Sub

Je code kan overigens een stuk korter.

Met vriendelijke groet,


Roncancio
 
Bedankt voor je reactie.
Ik heb dit in het verleden ook al eens geprobeerd, maar doordat niet elke werkblad dezelfde activeringsmacro heeft, werkt dit helaas niet. :(
 
Kan je je code hier plaatsen want ik vermoed dat de code flexibeler gemaakt kan worden. In ieder geval een stuk korter.

Met vriendelijke groet,


Roncancio
 
Sorry voor het late reageren Roncancio,

Omdat niet alle werkbladen dezelfde activeringscode hebben, heb ik deze voor elke werkblad apart gemaakt.

In totaal heb ik 15 werkbladen met dezelfde activeringscode. de code hiervan is:
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
    ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-80
    ActiveWindow.SmallScroll ToRight:=-40
    Range("H6").Select
    ActiveWindow.FreezePanes = True
    ActiveWindow.Zoom = 75
    Columns("AM:AQ").Select
    Range("AQ1").Activate
    Selection.EntireColumn.Hidden = True
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
    End With
Application.ScreenUpdating = True
End Sub

Daarnaast heb ik nog een 2 werkbladen die de volgende activeringscode heeft:
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
    ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-80
    ActiveWindow.SmallScroll ToRight:=-40
    Range("B5").Select
    ActiveWindow.FreezePanes = True
    ActiveWindow.Zoom = 75
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
    End With
Application.ScreenUpdating = True
End Sub

En tenslotte nog 1 werkblad met de volgende code:
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
    ActiveWindow.FreezePanes = False
    ActiveWindow.SmallScroll Down:=-80
    ActiveWindow.SmallScroll ToRight:=-40
    Range("A22").Select
    ActiveWindow.FreezePanes = True
    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
    End With
Application.ScreenUpdating = True
End Sub

Doordat de code bij het activeren van een werkblad in werking wordt gezet, wordt hierdoor het gekopieerde van een werkblad leeggegooid, waardoor het nu niet mogelijk is om van ene werkblad naar een ander werkblad te kopieren. De gebruikers moeten nog wel eens gegevens kopieren, ik hoop dat hiervoor een oplossing is.

Bedankt dat je er naar wil kijken Roncancio
Ik denk niet geheel onbelangrijk, wij werken hier helaas nog met XL97
 
De titelblokkering is steeds op een andere plek.
Wat is het verschil tussen deze werkbladen dat de titelblokkering steeds op een andere plek is?

Met vriendelijke groet,


Roncancio
 
De lay out en de gegevens van de andere werkbladen zien er anders uit, vandaar dat de titelblokkeringen op een andere regel ingesteld staat
 
Uchhie,

en het is niet mogelijk (bv door lege rijen/kolommen toe te voegen) om overal de titelblokkering op dezelfde cel te krijgen?
 
Laatst bewerkt door een moderator:
Het lastige is, dat ik op de 15 werkbladen zowel een horizontale als een verticale titelblokkering heb. Op de overige werkbladen heb ik alleen een horizontale titelblokkering. Als de titelblokkering bijvoorbeeld onder een validatielijst komt te staan, dan werkt deze lijst niet meer (waarschijnlijk een bug in XL97:(
 
Laatst bewerkt door een moderator:
In totaal dus 18 werkbladen.
Op welke positie (van de 18) staan de 3 afwijkende werkbladen?

Met vriendelijke groet,


Roncancio
 
In totaal heeft het bestand 22 werkbladen:
18 werkbladen hebben een activeringscode, deze hebben de volgende verschillen

15 werkbladen
  • Spliting titelblokkering op cel H6 (verticale/horizontaal)
  • de kolomen AM:AQ worden verborgen in deze werkbladen
  • De autoseerteerfunctie wordt gereset
2 werkbladen
  • Spliting titelblokkering op cel B5 (verticale/horizontaal)
1 werkblad
  • Spliting titelblokkering op cel A22 (horizontaal)
4 werkbladen nog niet genoemd
  • heeft geen spliting, deze werkbladen hebben ook geen activeringcode bij het activeren van het werkblad
 
Laatst bewerkt door een moderator:
Sorry, maar dat bedoel ik niet.
Ik zit namelijk te denken om gebruik te maken van de Indexnummer van de werkbladen.

Oftewel:
Het 1e werkblad heeft indexnummer 1
Het 2e werkblad heeft indexnummer 2
etc.

De indexnummer is de volgnummer (van links naar rechts) van de werkbladen.

Met vriendelijke groet,


Roncancio
 
Oke ik begrijp hem nu;)

De volgorde van links naar rechts wordt dan:
  • Eerste 3 werkbladen hebben geen activeringscode (werkblad 1-3)
  • Daarna 1 werkblad die een afwijkende activeringscode heeft(werkblad 4)
  • Vervolgens 15 werkbladen met dezelfde activeringscode (werkblad 5-19)
  • De volgende 2 werkbladen hebben dezelfde activeringscode, maar afwijkend van de bovengenoemden (werkblad 20-21)
  • Tenslotte nog een werkblad die geen activeringscode heeft (werkblad 22)
 
Onderstaande code voor ThisWorkbook

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim sActCel As String
Dim iZM As Integer
    On Error Resume Next
    iZM = 0
    rActCel = ""
    Select Case ActiveSheet.Index
        Case 4
            rActCel = "A22"
        Case 5 To 19
            rActCel = "H6"
            iZM = 75
        Case 20, 21
            rActCel = "B5"
            iZM = 75
    End Select
    If rActCel <> "" Then
        With ActiveWindow
            Range(rActCel).Activate
            .FreezePanes = True
            .SmallScroll Down:=-80
            .SmallScroll ToRight:=-40
            .DisplayGridlines = False
            .DisplayHeadings = False
            If iZM <> "" Then .Zoom = iZM
        End With
        If rActCel = "H6" Then Range("AQ1").EntireColumn.Hidden = True
        If iZM = 75 Then ActiveSheet.ShowAllData
    End If
End Sub

Met vriendelijke groet,


Roncancio
 
Bedankt Roncanio,:d

Deze code is veeeeel efficienter :thumb:

Ik heb hem getest en de instellingen worden op alle werkbladen naar de juiste oorspronkelijke instellingen teruggebracht. Alleen als ik wil gaan kopieren van ene naar ander werkblad wil dit nog niet lukken. Op een of andere manier wordt het klembord leeggegooid als ik een andere werkblad activeer:(
 
Je kan m.i. nog steeds via CTRL-C en CTRL-V gegevens kopiëren naar andere werkbladen.

Met vriendelijke groet,


Roncancio
 
Ik heb jou VBA geplaatst in ThisWorkbook. De VBA code die ik had gemaakt per werkblad heb ik verwijderd, maar toch kan ik niet kopieren/plakken ook niet met ctrl+C en ctrl+V

Ik ga het ook eens proberen op een andere excel versie, ik heb een vermoeden dat het aan XL97 ligt :confused: en niet aan jou code
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan