Deppodi Posted July 25, 2022 Posted July 25, 2022 Hej! Första inlägget här på forumet - har tidigare suttit på eforum IDG. Hoppas att det finns några bekanta ansikten här framöver Jag har ett makro som jag har spelat in på jobbet, som jag skulle behöva lite hjälp med. Makrot är inspelat så att det är kopplat till C2:C31. Jag undrar hur jag skriver om koden så att makrot istället kopierar till sista tomma raden. Det kommer inte alltid vara C:31 som är sista raden. Någon som kan hjälpa mig? Makrot är egentligen ganska enkelt, jag vill bara infoga en ny rad höger om priset (som kommer i kolumn b) och avrunda alla tal i kolumn B:B till 0 decimaler. Sedan kopiera alla priser med 0 decimaler som värden. Ett steg i en process för att kunna ladda upp en prisfil i affärssystemet. Makrot: Sub Avrunda_0_Decimaler() ' ' Avrunda_0_Decimaler Makro ' ' Range("C2").Select ActiveCell.FormulaR1C1 = "=ROUND(RC[-1],0)" Range("C2").Select Selection.AutoFill Destination:=Range("C2:C31"), Type:=xlFillDefault Range("C2:C31").Select Range("C2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub Quote
Solution MH_ Posted July 26, 2022 Solution Posted July 26, 2022 du kan använda samma kod som du kör när du hämtar formlerna Range(Selection, Selection.End(xlDown)).Select Fast i B kolumnen. Dvs samma sak som att stå i B2 och trycka Ctrl+shift+nedpil : Sub Avrunda_0_Decimaler() Range("B2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Offset(rowOffset:=0, columnOffset:=1).Select Selection.FormulaR1C1 = "=ROUND(RC[-1],0)" Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub Och om Monshi skulle få syn på det här så gör vi en variant utan en massa Select och Copy Offset är bara ett sätt att flytta hela området (i vårt fall +1=en kolumn till höger, dvs kolumn C) Sub Avrunda_0_Decimaler() Dim mittOmråde As Range ' bestämm urspungsområde Set mittOmråde = Range("B2", Range("B2").End(xlDown)) 'Skriv in formel i C kolumnen (Mittområde offsetat 1 kolumn) mittOmråde.Offset(rowOffset:=0, columnOffset:=1).FormulaR1C1 = "=ROUND(RC[-1],0)" 'Och ange att B kolumnen skall vara lika med värdena i C mittOmråde.Value = mittOmråde.Offset(0, 1).Value ' Ta bort data från C, om du vill ' mittOmråde.Offset(0, 1).ClearContents Range("A1").Select End Sub 1 Quote
Deppodi Posted August 4, 2022 Author Posted August 4, 2022 On 2022-07-26 at 20:24, MH_ sade: du kan använda samma kod som du kör när du hämtar formlerna Range(Selection, Selection.End(xlDown)).Select Fast i B kolumnen. Dvs samma sak som att stå i B2 och trycka Ctrl+shift+nedpil : Sub Avrunda_0_Decimaler() Range("B2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Offset(rowOffset:=0, columnOffset:=1).Select Selection.FormulaR1C1 = "=ROUND(RC[-1],0)" Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub Och om Monshi skulle få syn på det här så gör vi en variant utan en massa Select och Copy Offset är bara ett sätt att flytta hela området (i vårt fall +1=en kolumn till höger, dvs kolumn C) Sub Avrunda_0_Decimaler() Dim mittOmråde As Range ' bestämm urspungsområde Set mittOmråde = Range("B2", Range("B2").End(xlDown)) 'Skriv in formel i C kolumnen (Mittområde offsetat 1 kolumn) mittOmråde.Offset(rowOffset:=0, columnOffset:=1).FormulaR1C1 = "=ROUND(RC[-1],0)" 'Och ange att B kolumnen skall vara lika med värdena i C mittOmråde.Value = mittOmråde.Offset(0, 1).Value ' Ta bort data från C, om du vill ' mittOmråde.Offset(0, 1).ClearContents Range("A1").Select End Sub Stort tack för ett återigen exemplariskt svar! Funkade perfekt Haha ja, tack för räddningen. Alltid bra att ha en reservplan om monshi hittar hit! (Kul med lite humor ibland också ;)) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.