Avatar billede HugoScarface Nybegynder
16. maj 2013 - 11:50 Der er 1 løsning

Hjælp til optimering (minimering) af kode (VBA og Excel)

Hej,

Jeg har et beregningsark, hvor jeg udregner priser på nogle kanaler. De kanaler skal så bagefter laves om til posteringsoversigt i .CSV, som jeg kan indlæse i Navision, for at kunne trække statistik på det senere.

Jeg har taget et lille screenshot af en del af beregningssheetet.
Noget er skjult, da det er fortrolige oplysninger. Sorry.
Det kan evt. sendes per mail.

Derudover har jeg lavet lidt makro, som laver opsætningen i et nyt worksheet, som jeg gerne vil have det stillet op, men koden bliver forfærdelig lang.

Kan en eller anden hjælpe med at gøre den kortere/smartere?
Jeg er stadig helt i VBA, så jeg har lidt svært ved at gennemskue en bedre måde at gøre det på.

Opsætning i .CSV:
Vederlagsår;Forbrugsperiode; Programprodukt;Programpakkenummer;Programkode;Tilslutninger;

Makro:
Sub Test_Oplysn()
Worksheets("Posteringstest").Activate
Range("A2").Select
If Range("A2").Value = "" Then
    Range("A2").Activate
Else
    Range("A2").CurrentRegion.Select
    ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
If Sheets("XXX TV Basis Q1 2013").Range("A5") >= 0 Then
    With ActiveCell
        .Value = 2013
        .Offset(0, 1).Value = "JANUAR"
        .Offset(0, 2).Value = "BASIS"
        .Offset(0, 3).Value = "1"
        .Offset(0, 3).Activate
    End With
        ActiveCell.Offset(0, 1).Activate
        Sheets("XXX TV Basis Q1 2013").Select
        Range("A5").Select
        Selection.Copy
        Sheets("Posteringstest").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.Offset(0, 1).Activate
        Sheets("XXX TV Basis Q1 2013").Select
        Range("J4").Select
        Selection.Copy
        Sheets("Posteringstest").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.Offset(1, -5).Activate
End If
If Sheets("XXX TV Basis Q1 2013").Range("A6") >= 0 Then
    With ActiveCell
        .Value = 2013
        .Offset(0, 1).Value = "JANUAR"
        .Offset(0, 2).Value = "BASIS"
        .Offset(0, 3).Value = "1"
        .Offset(0, 3).Activate
    End With
        ActiveCell.Offset(0, 1).Activate
        Sheets("XXX TV Basis Q1 2013").Select
        Range("A6").Select
        Selection.Copy
        Sheets("Posteringstest").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.Offset(0, 1).Activate
        Sheets("XXX TV Basis Q1 2013").Select
        Range("J4").Select
        Selection.Copy
        Sheets("Posteringstest").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.Offset(1, -5).Activate
End If

End Sub
Avatar billede HugoScarface Nybegynder
29. august 2013 - 07:21 #1
Lukkes
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
Kurser inden for grundlæggende programmering

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