Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketOverfør og slet data

 Besvar Besvar
Forfatter
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Emne: Overfør og slet data
    Sendt: 02.Mar.2013 kl. 09:58
Hejsa Forum Big smile

nå nyt projekt og nye problemer.

Kan man lave en VBA kode der flytter data over fra et ark til et andet via en knap.

Jeg er ved at lave en tidsregistrering på medarbejder og daglige arbejdsopgaver,
jeg har lavet en skabelon i startsiden, som man så udfylder, nogle gør et vær dag andre vær 14 dag.

meningen var så at når man havde været inde og udfylde, trykker man på knappen, og datarene bliver lagt ind i et skema der ligger under fanen tidsregister samtidigt med at skemaet på startsiden bliver renset.

de data der skal flyttes er "dato" "ID" "FRA" "TIL" 

er det nogen som har en ide om hvordan det klares smartest.
sender en prøve fil med så man kan se hvad jeg mener.

Mvh
Michael
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top



Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 13:30
Hvilken af de 2 ID's og hvor skal den indsættes ?
 
Sub Overfør()
Set sh1 = Sheets("startside")
Set sh2 = Sheets("tidsregistrer")
rk1 = sh1.Cells(65536, "C").End(xlUp).Row
For Each c In Range("C10:C" & rk1)
rk2 = sh2.Cells(65536, "B").End(xlUp).Row + 1
sh2.Cells(rk2, "B") = c
sh2.Cells(rk2, "G") = c.Offset(0, 12)
sh2.Cells(rk2, "H") = c.Offset(0, 14)
Next
sh1.Range("C3") = ""
sh1.Range("C10:AF188").SpecialCells(xlCellTypeConstants, 23).ClearContents
End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 14:46
mange tak

den virker fint nu, slettede lige den linie til ID "C3" det var ikke medarbejder ID der skulle slettes, 
men hvor skulle du vide det fra når jeg ikke kan forklare ordenligt,

har lige 2 spørgsmål:

øh hvorfor smider den datarene på vær anden linie i tidsregisteret, har kikket om jeg kunne finde ud af om den var sat til det, 

jeg har lavet en boks der spørger om jeg vil slette skemaet......hm den har slettet inden den spørger,
kunne den evt laves så man har en NEJ mulighed Tongue

MVH

Michael



Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 16:08
koden kører ok her, prøv lige at indsætte koden som den er nu her i forummet
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 17:16
her er den så:

Sub Overfør()
Set sh1 = Sheets("startside")
Set sh2 = Sheets("tidsregister")
rk1 = sh1.Cells(65536, "C").End(xlUp).Row
For Each c In Range("C10:C" & rk1)
rk2 = sh2.Cells(65536, "B").End(xlUp).Row + 2
sh2.Cells(rk2, "B") = c
sh2.Cells(rk2, "G") = c.Offset(0, 12)
sh2.Cells(rk2, "H") = c.Offset(0, 14)

Next

sh1.Range("C10:AF188").SpecialCells(xlCellTypeConstants, 23).ClearContents

MsgBox "Vil du slette skemaet" & Worksheets("startside").Range("B3")

End Sub

den linie der er markeret med rød kommer engang imellem med en fejl "1004" har prøvet at søge på den, men det blev jeg ikke klogere af Big smile

efter at have testet den lidt, har jeg fundet ud af at i startsiden hvor det øverste stykke er "frosset" skriver den de det med som står i det frosne område når jeg ruller linien op under,
så kører jeg op så række 11 er den første, flytter den det som står lige oven over med over på tidsregister siden, det er nok ikke noget at gøre ved,? 

Michael
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 17:26
hov glemte helt at spørge om man kan gøre den kode variabel, så når det står 1. i medarbejder ID så er det et ark. og står det 2 er det et andet o.s.v.

så de forskellige medarbejder har foskellige ark. meningen er at jeg med tiden vil ha sat pasword på medarbejder ID "C3" så de ikke kan se hinandens oplysninger, ellers skal jeg bare ha lavet en forside mere hvor man går videre til den som er er nu, men det er et helt andet problem Wink

bare så ved du lidt om hvad mine tanker er.
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 18:08
Sub Overfør()
On Error Resume Next
Set sh1 = Sheets("startside")
Set sh2 = Sheets(sh1.Range("C3") + 1)
rk1 = sh1.Cells(65536, "C").End(xlUp).Row
If rk1 > 9 Then
For Each c In Range("C10:C" & rk1)
rk2 = sh2.Cells(65536, "B").End(xlUp).Row + 1
sh2.Cells(rk2, "B") = c
sh2.Cells(rk2, "G") = c.Offset(0, 12)
sh2.Cells(rk2, "H") = c.Offset(0, 14)
Next
If MsgBox("Vil du slette skemaet ", vbYesNo, sh1.Range("F3")) = vbYes Then
sh1.Range("C10:AF188").SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End If
End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 18:40
1000 tak, det var dejligt, nu virker det, og smider det der hvor det skal være.

hvis du har tid kunne jeg få dig til at give en lille forklaring på nogle af dele i koden, så kan jeg selv rette den lidt til hvis det er.

Sub Overfør()
On Error Resume Next
Set sh1 = Sheets("startside")
Set sh2 = Sheets(sh1.Range("C3") + 1)  mener det er her du fortæller at det kun må overføres når det står 1 i C3
rk1 = sh1.Cells(65536, "C").End(xlUp).Row
If rk1 > 9 Then
For Each c In Range("C10:C" & rk1)
rk2 = sh2.Cells(65536, "B").End(xlUp).Row + 1
sh2.Cells(rk2, "B") = c
sh2.Cells(rk2, "G") = c.Offset(0, 12)kunne godt tænke mig at vide hvad 12 og 14 står for, eks. hvis jeg vil ha lavet en celle "E"
sh2.Cells(rk2, "H") = c.Offset(0, 14)
Next
If MsgBox("Vil du slette skemaet ", vbYesNo, sh1.Range("F3")) = vbYes Then
sh1.Range("C10:AF188").SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End If
End Sub

men 1000 tak for en dejlig hjælp, man lærer det jo nok en gang Tongue


Mvh
Michael
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 19:20
velbekom
 
Sub Overfør()
On Error Resume Next ' Forhindrer at koden fejler hvis den skal slette et tomt skema
Set sh1 = Sheets("startside") ' jeg gider ikke at skrive Sheets("xxxxx") flere gange
Set sh2 = Sheets(sh1.Range("C3") + 1) ' koden forudsætter du navngir arkene 1,2,3 osv..
rk1 = sh1.Cells(65536, "C").End(xlUp).Row ' tester hvor mange rækker med data
If rk1 > 9 Then ' resten af koden udføres kun hvis der er i række 10 eller flere
For Each c In Range("C10:C" & rk1) ' løkke fra række 10 til række rk1
rk2 = sh2.Cells(65536, "B").End(xlUp).Row + 1 ' test hvor næste ledige række er i dataark
sh2.Cells(rk2, "B") = c ' dato (B) hentes fra kolonne C
sh2.Cells(rk2, "G") = c.Offset(0, 12) ' fratid (G) hentes 12 kolonne fra kolonne C i sh1
sh2.Cells(rk2, "H") = c.Offset(0, 14) ' tiltid (H) hentes 14 kolonne fra kolonne C i sh1
Next
If MsgBox("Vil du slette skemaet ", vbYesNo, sh1.Range("F3")) = vbYes Then
sh1.Range("C10:AF188").SpecialCells(xlCellTypeConstants, 23).ClearContents ' sletter kun konstanter, ikke formler
End If
End If
End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 19:39
Tak for en god forklaring. nu kan jeg da se logikken i det. havde godtnok talt kolonner...men i det forkerte arkSmile

kunne man med fordel flytte MsgBox i toppen af koden, problemet kom jeg til at se at hvis du svarer nej til at slette, så bliver data flyttet alligevel. så får man dem 2 gang, for datarne skal jo slettes.

eller vil det bare give noget andet vrøvlConfused 
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 21:15
Det kan du såmænd godt, så skal den blot indsættes efter linien med Set sh1 = Sheets("startside")
du kunne også have en begge steder hvor du spørger om data skal kopieres
og med den nederst spørge om data skal slettes
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 02.Mar.2013 kl. 22:53
takkerClap

så blev det fikset og kolonne E blev sat ind, så nu virker altThumbs Up

mange tak for hjælpen

Mvh
Michael
Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
mik1960 Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 14.Feb.2012
Status: Offline
Point: 76
Direkte link til dette indlæg Sendt: 05.Mar.2013 kl. 11:33
Hejsa igen Tongue

vil lige høre, efter at jeg er ved at udbygge det er jeg løbet ind i nogle problemer.

denne linie :Set sh2 = Sheets(sh1.Range("C3") + 1) ' koden forudsætter du navngir arkene 1,2,3 osv..

kan den ændres, så hvis det for eks. står 1020 i C3 bliver den lagt ind i en mappe eks. 1020 eller ark 1.
og står der 2030 i en anden mappe efter nr. eller andet.

C3 er den som styrer mit lopslag så kan den komme til at virke som adgangskode.

løb også ind i et andet problem. den linie som sletter, vil ikke slette når jeg beskytter arket, selvfølgelig er kolonnerne låst op dem som skal slettes, 

jeg har prøvet lidt forskellige koder, men den eneste der duede brugte 20-30 sek. til at slette en rækkeBig smile

så er det nok hurtigere manuelt Big smile

kunne være at du havde en ide til noget.

på forhånd tak for god service

mvh Michael

Glemmer altid at skrive hvad jeg bruger......Excel 2007 :-)
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk