Avatar billede degnens Mester
14. oktober 2005 - 14:03 Der 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
Avatar billede degnens Mester
14. oktober 2005 - 14:06 #1
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.
Avatar billede bak Forsker
14. oktober 2005 - 15:23 #2
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
Avatar billede degnens Mester
14. oktober 2005 - 15:51 #3
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.
Avatar billede bak Forsker
14. oktober 2005 - 16:36 #4
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
Avatar billede degnens Mester
19. oktober 2005 - 11:56 #5
Det ser ikke ud til at virke. Den siger stadig væk "Dato ikke fundet"?
Avatar billede bak Forsker
19. oktober 2005 - 14:43 #6
Jeg er ikke helt med. Det skal virke...
Prøv at sende filen til mig
excel snabela tbdl.dk
Avatar billede degnens Mester
21. oktober 2005 - 15:23 #7
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.
Avatar billede degnens Mester
21. oktober 2005 - 15:24 #8
Hov, jeg mangler et svar at give points til...
Avatar billede bak Forsker
22. oktober 2005 - 11:57 #9
jamen det kommer så her :-)
Avatar billede degnens Mester
12. december 2005 - 19:26 #10
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel