Avatar billede nerox Nybegynder
08. januar 2007 - 14:14 Der er 7 kommentarer og
1 løsning

Problem med makro i excel

Hej folkens,

Jeg har en lille forespørgsel. Jeg har en excel fil hvor jeg har 12 måneders data der skal opdateres løbende. Det har jeg en macro til. Macroen flytter bare månedsdataen en måned bagud, og gør derfor plads til sidste månede i ark 12.

Som en sikkerhedsfunktion for at undgå at skubbe data'en 2 måneder fremfor kun 1 kunne jeg godt tænke mig at makroen kontrollerede om celle L7 på arket ved navn parametre var tomt. Hvis cellen ikke var tom skulle makroen ikke køres. Hvis den var tom skulle makroen køres som normalt. Hvis makroen kørte færdig skulle den også taste dags dato i samme celle.

Makroen ser sådan ud indtil videre:

Sub Opdatering()
'
' Opdatering Makro
' Makro indspillet 08-01-2007 af Lars Andersen
'

'
    Sheets("2.").Select
    Cells.Select
    Selection.Copy
    Sheets("1.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("3.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("2.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("4.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("3.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("5.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("4.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("6.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("5.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("7.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("6.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("8.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("7.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("9.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("8.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("10.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("9.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("11.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("10.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("12.").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("11.").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("12.").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-1
    Range("A1").Select
    Sheets("Parametre").Select
End Sub


Det skal lige siges at jeg har absolut intet forstand på makroer, så den anden er indspillet.

Nogen der kan sige hvordan den skal laves? På forhånd tak.

Lars Andersen
Avatar billede kabbak Professor
08. januar 2007 - 15:19 #1
Var det ikke hurtiger, via VBA at omdøbe arkene, og så tømme Ark(12.) til sidst
Avatar billede nerox Nybegynder
08. januar 2007 - 15:27 #2
Arkene har nogle områder med navne som der laves opslag i. Alt data'en trækkes fra disse ark da det er forbrugsoversigter på månedsbasis. Derfor skal data'en flyttes for at gøre det opdateret på månedsbasis.

Det kunne sikkert godt have været lavet smartere fra start af, men jeg arbejder bare videre med det som det er.
Avatar billede kabbak Professor
08. januar 2007 - 15:28 #3
Public Sub FlytArkNavne()
    Dim I As Integer
    For I = 1 To 12
        Sheets(I & ".").Name = I - 1 & "."
    Next
    Sheets(0 & ".").Name = 12 & "."
    Sheets("12.").Cells.ClearContents
End Sub
Avatar billede kabbak Professor
08. januar 2007 - 16:09 #4
Ok, så er kopieringen her

Public Sub FlytArkNavne()
    Dim I As Integer
    For I = 2 To 12
        Sheets(I & ".").Cells.Copy Sheets(I - 1 & ".").Range("A1")
    Next
    Sheets("12.").Cells.ClearContents
    Sheets("Parametre").Select
End Sub
Avatar billede kabbak Professor
08. januar 2007 - 16:15 #5
Der var lige det med L7 og så datoen

Public Sub FlytArkNavne()
    Dim I As Integer
    If Sheets("Parametre").Range("L7") = "" Then
        For I = 2 To 12
            Sheets(I & ".").Cells.Copy Sheets(I - 1 & ".").Range("A1")
        Next
        Sheets("12.").Cells.ClearContents
        Sheets("Parametre").Range("L7") = Date
        Sheets("Parametre").Select
       
    End If
End Sub
Avatar billede nerox Nybegynder
08. januar 2007 - 19:29 #6
Super, det virker som det skal.

Kan der eventuelt laves en advarsel hvis celle L7 ikke er tom, så man ved at makroen ikke er kørt?
Avatar billede kabbak Professor
08. januar 2007 - 22:08 #7
Public Sub FlytArkNavne()
    Dim I As Integer
    If Sheets("Parametre").Range("L7") = "" Then
        For I = 2 To 12
            Sheets(I & ".").Cells.Copy Sheets(I - 1 & ".").Range("A1")
        Next
        Sheets("12.").Cells.ClearContents
        Sheets("Parametre").Range("L7") = Date
        Sheets("Parametre").Select
        MsgBox "Kopieringen udført"
    Else
        MsgBox "Cellen 'Parametre!L7' er ikke tom, kopiering annulleret"
    End If
End Sub
Avatar billede nerox Nybegynder
08. januar 2007 - 22:57 #8
Super - mange tak for hjælpen
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