14. oktober 2005 - 14:03Der er
9 kommentarer og 1 løsning
Flytte data til variabel række i andet ark med en knap/makro
Jeg har to regneark i samme projektmappe til arbejdstidsregistrering. På Ark1 har jeg en række for hver dag i året, kolonne A indeholder datoen. Hver dag indtaster jeg både min samlede arbejdstid og hvordan denne fordeler sig på forskellige arbejdskategorier. På Ark2 kan jeg i løbet af dagen registrere hvad jeg gør og således samle data for, hvor meget tid jeg bruger på de enkelte arbejdskategorier. Når dagen er omme ønsker jeg at flytte de opsamlede data på Ark2 til de tilsvarende arbejdskategorier på Ark1. Jeg har indspillet en makro, der kan flytte dataen fra Ark2 til en foruddefineret række på Ark1. Men hvordan får jeg den til at finde den variable række på Ark1, som svarer til dags dato?
Makroen ser således ud:
Sub Gemdagenstider() Range("B2:Q2").Select Selection.Copy Sheets("Timeseddel - sagsregnskab").Select Range("U325:AJ325").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Detaljeregistrering").Select Application.CutCopyMode = False Selection.ClearContents Range("B2").Select End Sub
Det er altså rækkenummeret 325 i makroens 5. linie, der skal gøres variabel for hver dag. Jeg forestiller mig, at det må være noget med at finde rækken ved at slå dags dato op i Ark1, kolonne A, og så returnere rækkenummeret til makroens 5. linie.
Sub Gemdagenstider() Dim c As Range Dim lRow As Long With Sheets("Timeseddel - sagsregnskab").Range("A1:A400") Set c = .Find(Sheets("Detaljeregistrering").Range("A2"), LookIn:=xlValues) If Not c Is Nothing Then lRow = c.Row Sheets("Detaljeregistrering").Range("B2:Q2").Copy Sheets("Timeseddel - sagsregnskab").Range("U" & lRow).PasteSpecial Paste:=xlPasteValues Else MsgBox "Dato ikke fundet" End If End With End Sub
Hmmm, der er noget af det rigtige, men ikke helt. Den finder ikke rækken med dags dato i kolonne A. Derimod finder den den første række i kolonne A, der er blank (der er nemlig nogle blanke rækker omkring hvert månedsskift) Dvs. at værdierne indsættes i rækken mellem januar og februar (række 44) og ikke i rækken, der hører til i dag (række 325). Hvor i din kode fortæller du at den skal lede efter dags dato? Og hvorfor er det at du nævner felt A2 i linien "Set c"? Felt A2 er blank på mit ark "Detaljeregistrering". Jeg kender ikke meget til dette kodesprog, og har svært ved at gennemskue, hvor jeg skal redigere. Jeg forsøgte at skrive "A1" i stedet i "Set c"-linien, da jeg i dette felt har indsat en funktion, så det viser dags dato. Men det gav blot fejlmeddelelsen fra MsgBox: Dato ikke fundet.
Jeg gik ud fra at du havde skrevet DD i Detaljeregistrering A2.
ellers skulle dette hjælpe
Sub Gemdagenstider() Dim c As Range Dim lRow As Long With Sheets("Timeseddel - sagsregnskab").Range("A1:A400") Set c = .Find(Date, LookIn:=xlValues) If Not c Is Nothing Then lRow = c.Row Sheets("Detaljeregistrering").Range("B2:Q2").Copy Sheets("Timeseddel - sagsregnskab").Range("U" & lRow).PasteSpecial Paste:=xlPasteValues Else MsgBox "Dato ikke fundet" End If End With End Sub
Tak til Bak, nu virker det. Problemet var, at der skulle tilføjes en linie til beskrivelse af datoformatet et par steder. koden der virker ser således ud: Sub Gemdagenstider() ' ' Gemdagenstider Makro ' Makro indspillet 14-10-2005 af Lars Mollerup-Degn ' ' Genvejstast:Ctrl+g Dim v As Variant Dim c As Range Dim lRow As Long With Sheets("Timeseddel - sagsregnskab").Range("A1:A400") v = Format(Date, "dd.mm.yy") Set c = .Find(v, LookIn:=xlValues) If Not c Is Nothing Then lRow = c.Row Sheets("Detaljeregistrering").Range("B2:Q2").Copy Sheets("Timeseddel - sagsregnskab").Range("U" & lRow).PasteSpecial Paste:=xlPasteValues Else MsgBox "Dato ikke fundet" End If End With End Sub
Jeg giver glad og gerne mine points til Bak for rigtig god, seriøs og præcis hjælp. Tak for det.
Jeg har oprettet et nyt spørgsmål, der ligger i forlængelse af dette, men jeg har ikke fået nogle bud på det endnu. Mon nogen af jer, der hjalp eller kiggede med her, har en ide til en løsning? Mit nye spørgsmål med nye points ligger her: http://www.eksperten.dk/spm/670872
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.