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

klembord wordt gewist bij uitvoeren sub

Status
Niet open voor verdere reacties.

willema

Gebruiker
Lid geworden
26 aug 2005
Berichten
308
Beste,

Bij activeren van een worksheet heb ik onderstaande code om een aantal cellen van kleur te doen veranderen.
Ik geef toe, het zal wellicht een pak eenvoudiger kunnen, maar ben tevreden dat deze zelfgemaakte VBA het doet in normale omstandigheden.

Maar er is één probleem(pje): als ik op een ander werkblad een bereik kopieer om het op dit werkblad te plakken, dan lukt dat niet.
Blijkbaar wist onderstaande code het klembord, want als ik vooraan de code Exit Sub zet, dan kan er wel worden geplakt.

Hoe kan je kopieren en plakken wel toelaten samen met deze Sub ?

Code:
Private Sub Worksheet_Activate()
    
[COLOR="#339933"]'Exit Sub[/COLOR]
    
    Dim x As Integer

    Range(Columns(3), Columns(4)).Interior.Pattern = xlNone
    
    Range(Columns(11), Columns(12)).Interior.Pattern = xlNone
    Range(Columns(11), Columns(12)).Font.Bold = True
    Range(Columns(11), Columns(12)).Font.ColorIndex = xlAutomatic
    Range(Columns(11), Columns(12)).Font.TintAndShade = 0
    Range(Columns(11), Columns(12)).HorizontalAlignment = xlCenter
    Range(Columns(11), Columns(12)).VerticalAlignment = xlCenter
    Range(Columns(11), Columns(12)).WrapText = False
    Range(Columns(11), Columns(12)).AddIndent = False
    Range(Columns(11), Columns(12)).IndentLevel = 0
    Range(Columns(11), Columns(12)).ShrinkToFit = False
    Range(Columns(11), Columns(12)).ReadingOrder = xlContext
    Range(Columns(11), Columns(12)).MergeCells = False
    
    Columns(16).Interior.Pattern = xlNone
    Columns(16).Font.Bold = True
    Columns(16).Font.ColorIndex = xlAutomatic
    Columns(16).Font.TintAndShade = 0
    Columns(16).HorizontalAlignment = xlCenter
    Columns(16).VerticalAlignment = xlCenter
    Columns(16).WrapText = False
    Columns(16).AddIndent = False
    Columns(16).IndentLevel = 0
    Columns(16).ShrinkToFit = False
    Columns(16).ReadingOrder = xlContext
    Columns(16).MergeCells = False
    
    Range(Cells(1, 11), Cells(1, 12)).Interior.Color = 65535
    Cells(1, 16).Interior.Color = 65535

    x = ActiveCell.Row
    If x < 2 Then Exit Sub

    Range(Cells(x, 3), Cells(x, 4)).Interior.Color = 65535
    Range(Cells(x, 11), Cells(x, 12)).Interior.Color = 65535
    Cells(x, 16).Interior.Color = 65535
    
End Sub
 
Kopieer eens een cel en ga vervolgens een van die handelingen uit de macro handmatig uitvoeren.
Je zult zien dat je klembord dan weg is. Handelingen uitvoeren tijdens een copy/paste actie gaat niet. Je zal het bereik opnieuw moeten kopiëren.
 
Als eerste statement:
Code:
If Application.CutCopyMode <> False Then Exit Sub
 
Dankjewel JVeer, Jan Karel en Ed voor de snelle respons.

De extra regel van Jan Karel lost het euvel op.
Ik ga zeker het artikel dat Ed postte eens lezen. Benieuwd wat het verband is tussen een code die enkel invloed heeft op de opmaak en het bewaren van data (gegevens) in een klembord. Op het eerste zicht zou ik zeggen: "Niets ?" ;)
 
Zie de laatste regel in mijn vorige reactie.
 
Ook bvb het centreren heeft invloed
 
Dat is duidelijk. En dankzij die ene regel van Jan Karel opgelost.
Ik vroeg me gewoon af. Waarom ?
Kopieren van data naar het klembord en instellen van een opmaak met VBA hebben toch niets met elkaar te maken ?
Of stel ik me nu gewoon te veel vragen en moet je deze eigenaardigheden van Excel er gewoon bijnemen ? :p
 
Het kopiëren op die manier heeft een totaal andere werking dan het kopiëren van een tekst in de formulebalk.
 
Waarom iedere keer opnieuw opmaak instellen ?
Dat doe je toch in 1 keer met de hand ?
Hele kolommen opmaken lijkt me evenmin een goed idee.
In VBA kun je kopiëren zonder klembord: Sheet1.cells(2,2)=Sheet2.cells(10,2).value
 
Laatst bewerkt:
Het heeft niets met VBA te maken maar met wanneer Excel het klembord leeggooit. Probeer dit maar eens:
Kopieer cel A1
Selecteer cel A2
Druk op de knop om vet te maken: Klembord leeg.
 
Het office klembord blijft overigens wel intact
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan