Avatar billede nunbaggi Nybegynder
14. august 2010 - 10:42 Der er 18 kommentarer og
1 løsning

Gemme data fra dags dato

Kan jeg på nogen måde logge data fra dags dato på et aandet ark?
Har set et sted hvor man kunne trykke på en knap(rude) og så gemte man data på andet ark, og næste gang der blev trukket gemte excel i næste række
Avatar billede Ialocin Novice
14. august 2010 - 12:04 #1
Hej nunbaggi

Hvor kommer de data fra, som man skal kunne gemme/logge på et andet ark ?

Og hvad mener du med: "og næste gang der blev trukket gemte excel i næste række" ?

mvh Nicolai
Avatar billede nunbaggi Nybegynder
14. august 2010 - 12:46 #2
Hej Nicolai
De data som skal gemmes er på ark1, og skal gemmes på ark2
og der skulle stå "næste gang der bliver trykket, gemmer excel i næste række på ark2"

EKS.
100    1,3    6,8    0,3    1,8    0,0    39,1
Hvert tal står i hver sin rude i ark1 og skal "logges" i ark2 på samme måde det står i ark1
Avatar billede Thyge Nybegynder
14. august 2010 - 13:45 #3
Prøv denne funktion. Du skal selv udfylde første række i ark2; ellers kommer teksten til at starte i 2. række.

Application.ScreenUpdating = False

    Sheets("Ark1").Range("A1:G1").Copy
    Sheets("Ark2").Activate
    Range("A10000").End(xlUp).Offset(1, 0).Activate
    ActiveCell.PasteSpecial

    Application.CutCopyMode = False
    Sheets("Ark1").Activate
    Range("A1").Select
Application.ScreenUpdating = True

Er du bekendt med at bruge VBA? Eller kan jeg sagtens guide dig igennem.

Mvh Thyge
Avatar billede nunbaggi Nybegynder
14. august 2010 - 14:59 #4
Det der forstår jeg slet ingenting af desværre :-)
Avatar billede Thyge Nybegynder
14. august 2010 - 17:03 #5
Helt ok :)

VBA (Visual Basic for Applications) er et program i Officepakken som bl.a. bruges til at lave funktioner/programmering - også kaldet "makroer".

Det du gør i Excel er at trykke på fanen -Udvikler- og så vælge -Visual Basic-. Det åbner et nyt vindue - VBA. For at du kan lave en funktion (makro) skal du i VBA trykke på -Insert- og vælge -Module- - det åbner en rude hvor du kan skrive din funktion - altså programmere din makro.

Alle makroer starter med at man skriver ordet "Sub", trykker mellemrum og giver makroen et navn, f.eks. "Makro1". Navnet kan ikke indeholde mellemrum, så hvis du skriver flere ord skal du bruge "underscore"-tegnet, f.eks. "Sub dags_dato". Når du har gjort det trykker du enter og ser at VBA indsætter "End sub".

Imellem "Sub" og "End sub" indsætter du din funktion - altså den jeg har skrevet ovenfor. Den fortæller computeren hvad den skal gøre når du kører makroen.

Det næste du gør at at gå ind i Excel igen og (stadig under fanen -Udvikler-) vælger -Indsæt- og i øverste venstre hjørne vælger knap. Knappen indsætter du hvor du selv synes. I det vindue der åbnes vælger du hvilken makro knappen skal køre - her dobbeltklikker du på det navn som du har givet makroen og voila, så skulle det gerne virke.

Jeg håber det er til at gå til.
Avatar billede nunbaggi Nybegynder
14. august 2010 - 18:07 #6
Tak for svaret.. det lyder til at være simpel.. Men jeg kan slet ikke finde fanen udvikler. Jeg bruger 2007 version.
Avatar billede Thyge Nybegynder
14. august 2010 - 18:14 #7
Klik på knappen i øverste venstre hjørne (Microsoft Office-knappen), og klik på Excel-indstillinger nederst til højre. Marker derefter -Vis fanen Udvikler-.
Avatar billede nunbaggi Nybegynder
14. august 2010 - 18:15 #8
Bare glem det. har fundet fanen.. jeg prøver lige dit forslag :-)
Tak
Avatar billede nunbaggi Nybegynder
14. august 2010 - 19:19 #9
Synes ikk jeg kan få det til at virke.

Jeg skal have logget ruderne C86:I86 fra ark1
De skal gemmes i ark3, det er tomt lige nu så kan ligges hvor som helst. kunne være C1:I1
Hvordan skulle hele koden se ud så??
Avatar billede Thyge Nybegynder
14. august 2010 - 19:41 #10
Sub Dit_makronavn()

Application.ScreenUpdating = False

    Sheets("Ark1").Range("C86:I86").Copy
    Sheets("Ark3").Activate
    Range("A10000").End(xlUp).Offset(1, 0).Activate
    ActiveCell.PasteSpecial

    Application.CutCopyMode = False
    Sheets("Ark1").Activate
    Range("C86").Select

Application.ScreenUpdating = True

End Sub
Avatar billede nunbaggi Nybegynder
16. august 2010 - 10:11 #11
Nu har jeg næsten fået det til at virke.
Jeg får ikk de tal til at stå som jeg gerne vil.
16-08-2010    #REFERENCE!    #REFERENCE!    #REFERENCE!    #REFERENCE!    #REFERENCE!    #REFERENCE!

Hvor det skulle være
16-08-2010    36,1    574,4    5,0    53,3    0,0    2594,0

Der hvor der står #referance er en sum af nogle tal.
Avatar billede nunbaggi Nybegynder
16. august 2010 - 17:02 #12
Det ser ud til at excel logger formlerne i stedet for de tal jeg gerne vil have. Kan det lade sig gøre at gøre det på en anden måde?
Avatar billede Ialocin Novice
16. august 2010 - 23:01 #13
Hej nunbaggi


Som C_Thyge skriver i #5, så kopier følgende kode ind mellem "Sub" og "End sub" i din allerede oprettetde kommandoknap:



Dim r As Integer


Application.ScreenUpdating = False

    'kopier cellerne "C86:I86" på Ark 1
    Sheets("Ark1").Range("C86:I86 ").Copy

    'gør Ark3 til det aktive ark
    Sheets("Ark3").Activate
   
    'vælg celle "C" i første række
    ActiveSheet.Range("C1").Select
   
   
    'hvis den aktive celle er tom
    If ActiveCell.Value = "" Then
       
        'indsæt det kopierede, startende fra den aktive celle
        ActiveCell.PasteSpecial

        'fjern kopimarkeringen fra Ark1
        Application.CutCopyMode = False

        'gør Ark1 til det aktive ark
        Sheets("Ark1").Activate

        'vælg celle "A1" på det aktive ark
        Range("A1").Select


    Else
   
        'tildel variablen r, rækkenummeret på sidste række med data
        r = ActiveSheet.Range("C65536").End(xlUp).Row

   
          'vælg celle "C" i rækken efter sidste række indeholdende data
        ActiveSheet.Range("C" & r + 1).Select

        'indsæt det kopierede, startende fra den aktive celle
        ActiveCell.PasteSpecial

        'fjern kopimarkeringen fra Ark1
        Application.CutCopyMode = False

        'gør Ark1 til det aktive ark
        Sheets("Ark1").Activate

        'vælg celle "A1" på det aktive ark
        Range("A1").Select
       
    End If


Application.ScreenUpdating = True



------------------ o -------------------------

Koden kopierer værdierne fra "C86:I86" på Ark 1 .... og sætter dem ind på Ark 3 i "C1:I1".

Og du behøver IKKE selv, at taste noget i første række på Ark 3.


Mvh Nicolai
Avatar billede nunbaggi Nybegynder
17. august 2010 - 08:50 #14
Hej Nicolai

Jeg kan ikke få din kode til at virke.
Avatar billede Ialocin Novice
17. august 2010 - 11:50 #15
Hej nunbaggi

Hmm ?

Hvis du er interesseret ? ... må du gerne maile mig dit regneark, så skal jeg kigge på det.

Ellers så kan jeg maile dig en test Excel fil med knap og kode ??

Mvh Nicolai
Avatar billede nunbaggi Nybegynder
17. august 2010 - 17:01 #16
Jeg kunne rigtig godt tænke mig at lære det selv..
Men vil gerne have din hjælp. Der er en del der skal laves før mit projekt er færdig endnu, og den her kode er kun lidt af det :-)
Du må meget gerne sende den testfil til at starte med ;-)
Avatar billede Ialocin Novice
17. august 2010 - 20:54 #17
Hej nunbaggi

Har du en mailadresse, som jeg kan poste Excel filen til ?

mvh Nicolai
Avatar billede Thyge Nybegynder
23. august 2010 - 12:10 #18
Hej nunbaggi,

Jeg smuttede en tur på ferie i sidste uge, men beklager at jeg ikke har svaret.

Jeg håber Nicolai har kunnet løse dit problem.
Avatar billede Ialocin Novice
28. august 2010 - 21:48 #19
Hej Nunbaggi

Hermed koderne bag click_hændelserne på dine 2 knapper: "cmdGemSomNyRet" og "cmdLogKostForIdag" ...



Private Sub cmdGemSomNyRet_Click()
Dim r As Integer

'sæt Excel´s opdatering ud af kraft
Application.ScreenUpdating = False


    'kopier cellerne "C13:I13" på Kostplan
    Sheets("Kostplan").Range("C13:I13").Copy

    'gør Fødevarer til det aktive ark
    Sheets("Fødevarer").Activate
   
    'vælg celle "C" i tiende række
    ActiveSheet.Range("C10").Select
   
   
    'hvis den aktive celle er tom
    If ActiveCell.Value = "" Then
       
            'indsæt det kopierede, startende fra den aktive celle
            ActiveCell.PasteSpecial (xlPasteValues)
   
            'fjern kopimarkeringen fra Kostplan
            Application.CutCopyMode = False
   
            'gør Kostplan til det aktive ark
            Sheets("Kostplan").Activate
   
            'vælg celle "C13" på det aktive ark
            Range("C13").Select


    Else
   
            'tildel variablen r, rækkenummeret på sidste række indeholdende data
            r = ActiveSheet.Range("C65536").End(xlUp).Row
   
       
              'vælg celle "C" i rækken efter sidste række indeholdende data
            ActiveSheet.Range("C" & r + 1).Select
   
            'indsæt det kopierede, startende fra den aktive celle
            ActiveCell.PasteSpecial (xlPasteValues)
   
            'fjern kopimarkeringen fra Kostplan
            Application.CutCopyMode = False
   
            'gør Kostplan til det aktive ark
            Sheets("Kostplan").Activate
   
            'vælg celle "C13" på det aktive ark
            Range("C13").Select
       
    End If


'slå Excel´s opdatering til igen
Application.ScreenUpdating = True
End Sub



--------------------------------------------------------



Private Sub cmdLogKostForIdag_Click()
Dim r As Integer

'sæt Excel´s opdatering ud af kraft
Application.ScreenUpdating = False


    'kopier cellerne "C92:I92" på Kostplan
    Sheets("Kostplan").Range("C92:I92").Copy

    'gør Kostlog til det aktive ark
    Sheets("Kostlog").Activate
   
    'vælg celle "B" i fjerde række
    ActiveSheet.Range("B4").Select
   
   
    'hvis den aktive celle er tom
    If ActiveCell.Value = "" Then
       
            'indsæt det kopierede, startende fra den aktive celle
            ActiveCell.PasteSpecial
   
            'fjern kopimarkeringen fra Kostplan
            Application.CutCopyMode = False
   
            'gør Kostplan til det aktive ark
            Sheets("Kostplan").Activate
   
            'vælg celle "C92" på det aktive ark
            Range("C92").Select


    Else
   
            'tildel variablen r, rækkenummeret på sidste række indeholdende data
            r = ActiveSheet.Range("C65536").End(xlUp).Row
   
       
              'vælg celle "B" i rækken efter sidste række indeholdende data
            ActiveSheet.Range("B" & r + 1).Select
   
            'indsæt det kopierede, startende fra den aktive celle
            ActiveCell.PasteSpecial
   
            'fjern kopimarkeringen fra Kostplan
            Application.CutCopyMode = False
   
            'gør Kostplan til det aktive ark
            Sheets("Kostplan").Activate
   
            'vælg celle "C92" på det aktive ark
            Range("C92").Select
       
    End If


'slå Excel´s opdatering til igen
Application.ScreenUpdating = True
End Sub


Med venlig hilsen, Nicolai
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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