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

excel macro plakken werkt niet

Status
Niet open voor verdere reacties.

lexcellern

Gebruiker
Lid geworden
15 okt 2015
Berichten
130
Ik heb een probleem met een macro die niet werkt: hij raakt een gekopieerde regel kwijt en kan hem dus niet plakken.
Wat doe ik fout?

Hieronder de macro.
Hij selecteert en kopieert eerst een regel in een sheet.
Dan moet hij 2 regels in een andere regel leegmaken.
Vervolgens moet hij de gekopieerde regel plakken op de 1e regel in de sheet waar hij net 2 regels heeft verwijderd.
Maar hij raakt die gekopieerde regel uit z'n geheugen kwijt en kan dus niets meer plakken.
hij geeft dan een foutmelding in 'Paste'.

Selection.Copy
Sheets("fact_voorb").Select
Rows("1:2").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
Sheets("fact_voorb").Select
ActiveSheet.Paste
de rest van de macro is niet van belang, dat deel gaat goed en staat hieronder

Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("mei").Select
End Sub
 
probleem komt omdat je application.cutcopymode = false doet na de copy maar voor de paste. daarmee gooi je je copy weer uit het geheugen en valt er niks te plakken.
maar verder ook veel te veel code voor wat je doet. hoop nutteloze selects voor vba

Dit zou moeten werken.
Code:
Selection.Copy
Sheets("fact_voorb").Rows("1:2").ClearContents
Sheets("fact_voorb").Range("A1").Paste
[COLOR="#FF0000"]Application.CutCopyMode = False[/COLOR]

In jou versie van de code de cutcopymode regel verplaatsen onder de paste zal ook werken.
 
hoi,
haal volgende regel uit je code (2x)
Code:
Application.CutCopyMode = False
en plak de regel (1x) op het einde van je sub net boven End Sub.

Dit stukje code zonder de overbodige selects
Code:
Selection.Copy
With Sheets("fact_voorb")
.Rows("1:2").ClearContents
.Range("A1").Paste
End With
de rest van de macro is niet van belang, dat deel gaat goed en staat hieronder
 
Laatst bewerkt:
Dank voor de reacties, echter het lukt nog niet, heb nu de volgende allen geprobeerd, maar overal foutmeldingen:

Selection.Copy
Sheets("fact_voorb").Rows("1:2").ClearContents
Sheets("fact_voorb").Range("A1").Paste
Application.CutCopyMode = False
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("juni").Select
End Sub

En deze werkt ook niet:

Selection.Copy
Sheets("fact_voorb").Select
Rows("1:2").Select
Selection.ClearContents
Range("A1").Select
Sheets("fact_voorb").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("mei").Select
End Sub

En dan de suggestie van gast0660 die dus ook een foutmelding geeft:

Selection.Copy
With Sheets("fact_voorb")
.Rows("1:2").ClearContents
.Range("A1").Paste
End With
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("mei").Select
Application.CutCopyMode = False
End Sub


Wat doe ik nog fout?
 
die dus ook een foutmelding geeft
Kan je ook vermelden welke foutmelding(en)?
Plaats je code tussen codetags met de # toets.
Dan is het makkelijker om de code te lezen en de inspringingen blijven ook behouden.
 
De volgende foutmeldingen bij de volgende codes:

#Selection.Copy
Sheets("fact_voorb").Rows("1:2").ClearContents
Sheets("fact_voorb").Range("A1").Paste
Application.CutCopyMode = False
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("juni").Select
End Sub#


Fout 438 tijdens uitvoering
Deze eigenschap of methode wordt niet ondersteund door dit object


#Selection.Copy
Sheets("fact_voorb").Select
Rows("1:2").Select
Selection.ClearContents
Range("A1").Select
Sheets("fact_voorb").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("mei").Select
End Sub#

Fout 1004 tijdens uitvoering
Methode Paste van klasse Worksheet is mislukt

#Selection.Copy
With Sheets("fact_voorb")
.Rows("1:2").ClearContents
.Range("A1").Paste
End With
Sheets("fact").Select
ActiveWindow.SmallScroll Down:=3
Range("D35").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
IncludeDocProperties:=True, _
OpenAfterPublish:=True
Sheets("mei").Select
Application.CutCopyMode = False
End Sub#

Fout 438 tijdens uitvoering
Deze eigenschap of methode wordt niet ondersteund door dit object
 
sorry, de codetags verkeerd gebruikt, maar je kunt het wel lezen denk ik zo.
 
Dank voor de reactie.
Ik heb naar mijn mening juist wel de tips doorgevoerd, maar ik ben vrijwel een leek op dit gebied dus ben op zoek naar hulp en aangezien het maar een klein dingetje is in mijn ogen zou een aanpassing niet heel ingewikkeld hoeven te zijn.
Allereerst kan ik niet programmeren in vba, ik 'record' alleen de macro's. Ik kan dan achteraf wel de code wat aanpassen, wat ik dus nu ook gedaan heb.
dus de vele kennelijk onnodige regels zijn ontstaan uit het 'opnemen'van de macro.

ik kan helaas niet het spreadsheet zelf meesturen, want het bestaat voor 99,99% procent uit privacy gevoelige info.
Maar nogmaals, het is niet een heel ingewikkeld proces in mijn ogen, alleen ik kan dat laatste stapje niet zelf maken en zoek hulp.

Welke situatie is wenselijk:

Er moet een selectie (dat zijn altijd 1 of 2 rijen) uit een tabblad/sheet gekopieerd worden naar een ander tabblad/sheet.
Eerst moeten de 2 bovenste regels uit dat sheet leeggemaakt worden en dan moet de selectie geplakt worden.
Vervolgens gaat de macro verder, maar daar zit geen probleem in.
Het enige probleem is, dat hij de gekopieerde regels uit z'n geheugen kwijtraakt, als ik het via de 'macro opnemen' methode doe.

Vervolgens heb ik 1 voor 1 de adviezen doorgevoerd.
Daarvan heb ik de code en de foutmeldingen gekopieerd.

Begrijp ik het goed, maar is dit nog niet voldoende om geholpen te worden?
 
Loop de code eens met F8 door, kom je misschien het probleem tegen.
 
Toch nog een aanvulling.
Ik heb een sterk vereenvoudigd spreadsheet gemaakt, zie bijlage.

Hier de 1e methode met foutmelding:

Code:
Sub facttest()
'
' facttest Macro
'
' Sneltoets: Ctrl+m
'
    Selection.Copy
    Sheets("Blad1").Rows("1:2").ClearContents
    Sheets("Blad1").Range("A1").Paste
    Application.CutCopyMode = False
    Sheets("Blad2").Select
End Sub

Fout 438 tijdens uitvoering
Deze eigenschap of methode wordt niet ondersteund door dit object


Hier de 2e methode met foutmelding:

Code:
Sub facttest()
'
' facttest Macro
'
' Sneltoets: Ctrl+m
'
    Selection.Copy
    Sheets("Blad1").Select
    Rows("1:2").Select
    Selection.ClearContents
    Range("A1").Select
    Sheets("Blad1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Blad2").Select
End Sub

Fout 1004 tijdens uitvoering
Methode Paste van klasse Worksheet is mislukt

Hier de 3e methode met foutmelding:

Code:
Sub facttest()
'
' facttest Macro
'
' Sneltoets: Ctrl+m
'
    Selection.Copy
    With Sheets("Blad1")
    .Rows("1:2").ClearContents
    .Range("A1").Paste
    End With
    Sheets("Blad2").Select
    Application.CutCopyMode = False
End Sub

Fout 438 tijdens uitvoering
Deze eigenschap of methode wordt niet ondersteund door dit object
 
Code:
Sub VenA()
  Sheets("Blad1").Rows("1:2").ClearContents
  Selection.Copy Sheets("Blad1").Range("A1")
End Sub
 
Nee dat is niet de oplossing.

De sheet waarvandaan de rijen (1 of 2 rijen) gekopieerd moet worden wisselt steeds. Je kunt dus niet beginnen met verwijderen van de 2 regels.
Voordat de macro begint moet je dus eerst in een tabblad de regel(s) selecteren die je gekopieerd en geplakt wil hebben in het standaard tabblad.
Dan moet de macro starten met kopiëren van de regels, en plakken op het standaard tabblad (Blad1 in mijn voorbeeld), maar eerst moeten dan wel de bovenste 2 regels uit dat tabblad (Blad1) geleegd worden.
Anders kan je namelijk de situatie krijgen dat als er al 2 regels gevuld stonden en er deze keer maar 1 regel gekopieerd hoeft te woren, dat regel 2 blijft staan.

Iemand de juiste oplossing?
 
Jazeker, het werkt niet, er gebeurt niets.
Voorzover ik vba kan lezen klopt dit ook helemaal niet.
Er moet eerst een vooraf geselcteerde rij gekopieerd worden vanaf een willekeurig (wisselend) tabblad, daarna geplakt worden op Blad1 op een locatie waar eerst 2 rijen leeggehaald moeten worden.
Dat doet jouw suggestie in ieder geval niet, ik heb hem letterlijk geplakt en getest.
 
Dat er niet heen en weer geknipperd wordt tussen de bladen wil niet zeggen dat er niets gebeurt.

Selecteer de cellen die je wilt kopiëren. Start de macro en kijk daarna op Blad1.
 
Ik heb nu weer de jouw nieuwe deel samengevoegd met het oude deel om de macro verder te laten gaan, maar er zit nog een foutje in, dat eerst wel werkte.

Allereerst de code hieronder, die ik nu heb:

Code:
Sub facttest()
'
' facttest Macro
'
' Sneltoets: Ctrl+m
'
    Sheets("fact_voorb").Rows("1:2").ClearContents
    Selection.Copy Sheets("fact_voorb").Range("A1")
    Sheets("fact").Select
    ActiveWindow.SmallScroll Down:=3
    Range("D35").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-3
    ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="C:\Users\info\Documents" & Sheets("fact").Range("D35"), _
    IncludeDocProperties:=True, _
    OpenAfterPublish:=True
    Sheets("juni").Select
    End Sub

Er behoort nu een document te worden opgeslagen, waarna de macro weer terugkeert, naar sheet "juni".
Tevens behoort hij cel D35 in z'n geheugen te behouden.
Dat opslaan en de cel in z'n geheugen houden doet hij nu niet meer, voorheen dus wel.

Wat gaat zit er nu fout in de code?

Het mooiste zou eigenlijk zijn, dat de macro altijd laat terugkeren naar de tab met de actuele maand-naam (in dit geval dus juni). Maar als de huidige maand bijv augustus zou zijn, dan dus terugkeren naar de tab augustus.
Nu moet ik iedere maand de macro aanpassen met de actuele maandnaam. niet heel erg, maar als dit geautomatiseerd kan worden, extra mooi natuurlijk.
 
Dus het werkt toch?

Gebruik geen select dan blijf je gewoon op het actieve werkblad. De eerdere berichten even aanpassen is te veel moeite?
 
Sorry ja, je hebt helemaal gelijk, ik zat ernaast en jouw stukje code werkte wel. Inderdaad zag ik niets flitsen waardoor ik dacht dat er niets gebeurde.

Als je weinig kennis hebt blijft het altijd ploeteren met dit soort dingetjes en ben erg blij met jullie hulp.
Het is wel enorm leuk en je leert ervan :)

Ik denk dat ik de macro nu toch correct werkende heb en hopelijk alle overbodige zaken eruit:

Code:
Sheets("fact_voorb").Rows("1:2").ClearContents
    Selection.Copy Sheets("fact_voorb").Range("A1")
    Sheets("fact").Select
    Range("D35").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="C:\Users\info\Documents\" & Sheets("fact").Range("D35"), _
    IncludeDocProperties:=True, _
    OpenAfterPublish:=True
    Sheets("juni").Select
End Sub

Dank voor alle hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan