• 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 overvol - melding bij afsluiten

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.732
Door een groot aantal kopieer/plak-bewerkingen in de macro raakt het klembord erg vol en verschijnt er bij het afsluiten de melding:
De Afbeelding is te groot en zal worden afgekapt (zie screenshot)Fst - 20160601_002.jpg
Na vele fora bezocht te hebben (NL en EN) waaronder Helpmij.nl met dito zoveel oplossingen heb ik er nog geen werkend gekregen.
Ik zoek een oplossing om m.b.v. VBA-code voor het legen van het klembord na de laatste kopieer/plak. (Windows 7 pro en Office 2010 NL)
m.vr.gr.
 
Leuk als je zou vertellen wat je allemaal hebt gevonden en uitgetest en met welk resultaat.

Code:
Sub M_snb()
  Cells(1).Copy
  Application.CellDragAndDrop = True
End Sub
 
Leuk als je zou vertellen wat je allemaal hebt gevonden en uitgetest en met welk resultaat.

Code:
Sub M_snb()
  Cells(1).Copy
  Application.CellDragAndDrop = True
End Sub

Ook jij bedankt voor de suggestie.
Het zou leuk zijn als je bij je voorstel een korte verklaring geeft ;) Ik kan deze helaas door mijn gebrekkige kennis van VBA niet doorgronden.
 
Wil je svp niet quoten.

Je kunt beginnen de code eens te testen.
 
Wil je svp niet quoten.

Je kunt beginnen de code eens te testen.

HoHo... zo werkt dat bij mij eigenlijk niet. Ik wil graag weten wat en hoe.
Aangezien ik je naam in het verleden wel vaker tegengekomen ben heb ik je script toch maar eens laten runnen.
Hij werk niet. Voegt een lege posititie toe in het klembord en laat de anderen gewoon staan. Zie screenshot (2e post heb ik verminkt)Fst - 20160601_004.jpg
 
Je quoot een helper die je nadrukkelijk vraagt om dat niet te doen.
Wil je geholpen worden of alleen je frustratie afreageren dat het niet lukt?
 
Laatst bewerkt:
Test eens deze functie:
Code:
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long   
Public Declare Function EmptyClipboard Lib "user32" () As Long   
Public Declare Function CloseClipboard Lib "user32" () As Long   
  
Public Function ClearClipboard()   
    OpenClipboard (0&)   
    EmptyClipboard   
    CloseClipboard   
End Function
 
Je quoot een helper die je nadrukkelijk vraagt om dat niet te doen.
Wil je geholpen worden of alleen je frustratie afreageren dat het niet lukt?

Sorrie, Nergens heb ik die uitdrukkelijke wens gelezen.
Ik heb quote toegepast omdat ik 2 reacties achter elkaar binnenkreeg en dat ik individueel wilde reageren.
Zo ook nu bij deze.
Ik ben heus niet gefrustreerd maar wil wel graag weten en enigszins begrijpen wat me aangeboden wordt.

Trouwens. Als je geen toegevoegde waarde kunt leveren aan dit topic, adviseer ik je om geen andere discussies te starten.
 
Laatst bewerkt:
Test eens deze functie:
Code:
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long   
Public Declare Function EmptyClipboard Lib "user32" () As Long   
Public Declare Function CloseClipboard Lib "user32" () As Long   
  
Public Function ClearClipboard()   
    OpenClipboard (0&)   
    EmptyClipboard   
    CloseClipboard   
End Function

Sorrie voor de quote.
Deze oplossing heb ik op diverse plaatsen ook gevonden maar kreeg hem niet werkend. Moet deze in een module geplaatst worden (had ik wel gedaan) ? Hoe kan ik deze testen ?
 
Code in een module plakken en aanroepen via:
Call ClearClipboard

lijkt mij voldoende.
 
Cobbe,
Bedankt voor de aanvulling. Helaas ook met deze aanpak geraakt het klembord niet leeg.
Als tijdelijke (?) oplossing heb ik een code gevonden voor kopieer/plak waarden die geen gebruik maakt van het klembord. Het werkt wel.
Ik blijf wel nog steeds zoeken voor een werkende code voor het legen van het klembord.
Hulp is nog steeds welkom.

'Instead of:
Sheet1.Range("A1:A200").Copy
Sheet1.Range("A1:A200").PasteSpecial xlPasteValues
Application.CutCopyMode=False 'Clear Clipboard

'Use:
Sheet1.Range("A1:A200") = Sheet1.Range("A1:A200").Value

zie http://www.ozgrid.com/VBA/SpeedingUpVBACode.htm
 
De functie van Cobbe werkt prima. Alleen zeggen dat hij het niet doet is niet voldoende, vertel wat je ermee hebt gedaan en of je er een foutmelding op krijgt. Heb je toevallig een 64-bit Office?
 
OK.
In het betreffende Excel bestand een nieuwe module ingevoerd.
Daarin de code zoals Cobbe aangegeven en ook op vele sites te vinden is.
Daaronder de macro voor het aanroepen.
Zie schermafdrukFst - 20160601_006.jpg
Na het runnen daarvan geen foutmelding en geen legen van het klembord. De schermafdruk geeft een beeld dat gelijk is vóór en na het runnen.
Fst - 20160601_005.jpg
 
En hoe "run" je die functie?
 
Door Klembord_leeg te kiezen en vervolgens op Uitvoeren
Fst - 20160601_008.jpg
 

Bijlagen

  • Fst - 20160601_007.jpg
    Fst - 20160601_007.jpg
    38,4 KB · Weergaven: 94
Je hebt het dus over het Office klembord. De code van Cobbe leegt het Windows klembord. Deze is er wel onderdeel van. Na het runnen van de code kan je met CTRL-V niks meer plakken en ook niet met de plak functies van Excel. Het Office klembord wordt helaas niet leeg gemaakt en voor zover ik weet is daar via VBA ook geen mogelijkheid voor.
 
edmoor, bedankt.
Dit topic staat in de rubriek Excel en ja ik heb het over het Office klembord en niet over dat van Windows. Ik was al ergens tegengekomen (uit 2009 ?) dat er geen code zou bestaan voor het legen van het Office klembord, maar in 7 jaar kan e.e.a. meer bekend zijn. Dan maar handmatig of zoals ik eerder vermeld op met de code het gebruik van het klembord overslaan bij grote bereiken of de opmerking bij het sluiten van het bestand negeren.
PS. Hoewel ik de code van Cobbe gerund heb blijven de plakfuncties intact.
 
Je PS is dan vreemd want bij mij lukt het dan niet meer. Hoewel, vreemd? Het blijft Microsoft natuurlijk... :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan