Print side | Luk vindue

Forfine indspillede makroer

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=2484
Udskrevet den: 04.Feb.2025 kl. 07:07


Emne: Forfine indspillede makroer
Besked fra: ZXCVB
Emne: Forfine indspillede makroer
Posteringsdato: 17.Mar.2016 kl. 17:27
Hej!

Excel er nu opgraderet til 2013. Det forløb nogenlunde nemt, efter at filerne var blevet konverteret.

Jeg har et par små delvis indspillede makroer, som jeg gerne vil have forfinet lidt. 

 1) 

Sub indkøb()

    Sheets("indkøb").Select

    Range("d5:" & [H3]).Select

    Selection.Copy

    Sheets("MD").Select

    ActiveWindow.SmallScroll Down:=0

    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=False

    Application.CutCopyMode = False

'   Calculate

End Sub

 Krav til indsættelse i MD : Markering skal være i kolonne F og række >29.

  Fejl :"FEJL : Marker celle under <K>" 

2)

Sub Pbs() 

    Sheets("pbs").Select

    Range("aa5:" & [w3]).Select

    Selection.Copy

    Sheets("MD").Select

    ActiveWindow.SmallScroll Down:=0

    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=False

    Application.CutCopyMode = False

'   Calculate

End Sub

 Krav til indsættelse i MD : Markering skal være i kolonne E og række >29.

  Fejl :"FEJL : Marker celle under <dag>"




-------------
Med venlig hilsen

Knud Evendorff



Svar:
Besked fra: EXCELGAARD
Posteringsdato: 17.Mar.2016 kl. 17:32
Hmmm....
Kræver begge makroer ikke, at du allerede står i den ønskede destinationscelle???
Hvordan finder du ellers ud af, hvad...
Selection.PasteSpecial
...skal indsætte i?

-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: ZXCVB
Posteringsdato: 17.Mar.2016 kl. 20:50
Nej, den sætter ind der hvor jeg har markeret. Arket er beskyttet, så det er i princippet makroen, der får en på pullen.
Uddybning 1:
I <Indkøb> ligger (i kæde til pgm. Indkøb i forretning) købsdata, som jeg i praksis først danner samlet for en ti dages periode - det er "grydefærdige" posteringer summeret på konto og underkonto + beløb.
I h3 ligger indirekte Range("d5:" & [H3]) områdets sidste række Fx.

Kravet til indsættelse i <MD> er at markering skal være i kolonne F og række >29. Der skal ikke tages hensyn til om der data i rækker efter, for hvis der er, så er det meningen, at de skal erstattes.

Uddybning 2:
I <PBS> ligger Konto træk (BetalingsService m.m.) som er Copy og Pastet som Unicode. Med tekst genkendelse bliver disse dannet til posteringer med : dato, konto, underkonto og beløb. Resten er som under 1, bortset fra at rækken skal være E.



-------------
Med venlig hilsen

Knud Evendorff


Besked fra: EXCELGAARD
Posteringsdato: 18.Mar.2016 kl. 08:03
Citat: ZXCVB ZXCVB skrev:

Nej, den sætter ind der hvor jeg har markeret.
Ja, det var osse det, jeg mente/ spurgte om  Smile

Anway, jeg ved ikke, som det kan hjælpe dig, men her er et par fiduser...

Indsæt en celle værdi, i en anden celle:
Range("A1").Value = Range("B2").Value
Indsæt en celles værdi i den markerede celle:
Selection.Value = Range("B2").Value
Indsæt den markerede celle værdi i en anden celle:
Range("A1").Value = Selection.Value
I begge ovenstående tilfælde, hvor det drejer sig om en enkelt celle, vil det dog nok være bedre og mere fejl sikker, at benytte ActiveCell i stedet for Selection:
ActiveCell.Value = Range("B2").Value
Skal du gøre alle ovenstående mellem to ark/faner, så indsætter du blot arknavnet foran, f.eks.
Sheets("MD").Range("A1").Value = Sheets("PBS").Range("B2").Value
Kort sagt: Man behøver slet ikke benytte Select/Copy/PasteValues, hvis man blot har behov for at kunne flytte nogle værdier.

PS: Husk lige, at stille dine nye spørgsmål i nye tråde - ellers skal du nok ikke regne med at få ret mange svar - heller ikke fra min side af...


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.



Print side | Luk vindue