Avatar billede zx-12r Nybegynder
19. marts 2007 - 16:05 Der er 5 kommentarer og
1 løsning

Problemer med Procedure to large. 2 i et spørgsmål.

Jeg har siddet og lavet lidt noob koding i excel/macro.. Mit problem er at jeg har lavet så meget If- data overflytning at jeg nu får procedure to large.

De macroer jeg bruger er disse.
If Range("A10").Value > 0 Then
    b2 = 57
    b1 = b2 - 20
    Do While sr > b1
      b1 = b2 - 20
      If sr > b1 And sr < (b2 + 1) Then
        sr = b2
        start = "A" & sr
        Sheets("logo").Select
        Range("A1:D2").Select
        Selection.Copy
        Sheets("Tilbud").Select
        Range(start).Select
        ActiveSheet.Paste
        sr = sr + 3
        start = "A" & sr
      End If
      Sheets("Startside").Select
      b2 = b2 + 56
    Loop
    antal = Range("A10").Value
    Sheets("Data-Kedler").Select
    Range("A143:D162").Select
    Selection.Copy
    Sheets("Tilbud").Select
    Range(start).Select
    ActiveSheet.Paste
    sr = sr + 1
    start = "A" & sr
    Range(start).Value = antal
    sr = sr + 19
    start = "A" & sr
    Sheets("Startside").Select
End If


------------------------------------------
Er der en måde at man kan fortsætte med at skrive ovenstående macroer, men i en anden ? Så den jeg  har nu måske åbner en nr 2 macro som fortsætter hvor den anden ikke kan følge med (tror der er små 5-6k linier)

Nr 2. spørgsmål

I de macroer jeg kører med der kopire de fra et ark til et andet. Er det muligt at kopiere en celle som laver en SUm værdi?

Når jeg prøver at kopiere den så har den bare de samme sumværdier som før kopieringen. Det vil sige at den måske har SUM(D1:400;D450:D800) Men dem jeg har kopieret indtil det nye ark ligger i f.eks. D400-D450.. Så laver den ikke autosum af de værdier jeg har valgt... Ved det lyder lidt kryptisk, men håber det kan hjælpe ellers kan jeg prøve at besvare alle relavante spørgsmål dertil.
Avatar billede kabbak Professor
19. marts 2007 - 17:11 #1
Nu kan jeg ikke lige se om hvordan det hænger sammen, mem kopiering af et område, kan gøres uden at Selecte et ark, det går meget hurtigere uden.


disse linier:

Sheets("logo").Select
        Range("A1:D2").Select
        Selection.Copy
        Sheets("Tilbud").Select
        Range(start).Select
        ActiveSheet.Paste

Kan erstattes af:


Sheets("logo").Range("A1:D2").Copy Sheets("Tilbud").Range(Start)
Avatar billede zx-12r Nybegynder
19. marts 2007 - 17:48 #2
Kan det gøre sådan at jeg kan skrive mere? hvis jeg korter dem alle til det du har skrevet. For der er vel stadig lige mange actioner der sker samtidig.
Avatar billede kabbak Professor
19. marts 2007 - 18:14 #3
Jeg mener ikke det er længden af tekst, der er en hindring.

Jeg søgte på nettet:
http://www.google.dk/search?hl=da&client=firefox-a&rls=org.mozilla%3Ada%3Aofficial&q=%22procedure+to+large%22++excel&btnG=S%C3%B8g&meta=
Men der er ikke meget at hente.


Jeg får fejl i den linie der er **** ud for, (Start) har ingen værdi.

If Range("A10").Value > 0 Then
    b2 = 57
    b1 = b2 - 20
    Do While sr > b1
      b1 = b2 - 20
      If sr > b1 And sr < (b2 + 1) Then
        sr = b2
        start = "A" & sr
        Sheets("logo").Select
        Range("A1:D2").Select
        Selection.Copy
        Sheets("Tilbud").Select
        Range(start).Select
        ActiveSheet.Paste
        sr = sr + 3
        start = "A" & sr
      End If
      Sheets("Startside").Select
      b2 = b2 + 56
    Loop
    antal = Range("A10").Value
    Sheets("Data-Kedler").Select
    Range("A143:D162").Select
    Selection.Copy
    Sheets("Tilbud").Select
    Range(start).Select' ***************************************
    ActiveSheet.Paste
    sr = sr + 1
    start = "A" & sr
    Range(start).Value = antal
    sr = sr + 19
    start = "A" & sr
    Sheets("Startside").Select
End If
Avatar billede zx-12r Nybegynder
19. marts 2007 - 18:47 #4
det er pga den er del af en længere kode.
Sub Tilbud()
Dim antal As Integer
Dim sr As Integer
Dim start As Variant
Dim procent As Variant
Dim b1 As Integer
Dim b2 As Integer

Sheets("Tilbud").Select
Range("A19:D2000").Select
Selection.Delete Shift:=xlUp

Dim shp As Shape
For Each shp In ActiveSheet.Shapes
    If shp.Type = msoPicture Then shp.Delete
Next shp

Sheets("Logo").Select
Range("C4:D14").Select
Selection.Copy
Sheets("Tilbud").Select
Range("C3").Select
ActiveSheet.Paste

Sheets("Startside").Select

sr = 19
start = "A" & sr
If Range("A3").Value > 0 Then
    b2 = 57
    b1 = b2 - 20 ' SAMME TAL - BEGGE SKAL ÆNDRES!
    Do While sr > b1
      b1 = b2 - 20 ' dette tal bestemmer hvor mange rækker det enkelte produkt fylder!
      If sr > b1 And sr < (b2 + 1) Then
        sr = b2
        start = "A" & sr
        Sheets("logo").Select
        Range("A1:D2").Select
        Selection.Copy
        Sheets("Tilbud").Select
        Range(start).Select
        ActiveSheet.Paste
        sr = sr + 3
        start = "A" & sr
      End If
      Sheets("Startside").Select
      b2 = b2 + 56
    Loop
    antal = Range("A3").Value
    Sheets("Data-Kedler").Select
    Range("A3:D22").Select
    Selection.Copy
    Sheets("Tilbud").Select
    Range(start).Select
    ActiveSheet.Paste
    sr = sr + 1
    start = "A" & sr
    Range(start).Value = antal
    sr = sr + 19
    start = "A" & sr
    Sheets("Startside").Select
End If

Det er den første del af koden.


det den gør er at den kopiere over i et tilbudsark. Men her tjekker den om noget andet er indsat + den tjekker om teksten bliver "brudt", jeg vil nemlig ikke have brudt tekst i mine tilbud, så den tjekker om teksten kan være på en side, og hvis ikke så bliver den smidt over til en anden side.
Avatar billede kabbak Professor
20. marts 2007 - 22:57 #5
Jeg har kogt din kode ned, der er ingen fejl i den, måske skal man se hele koden ??

Sub Tilbud()
    Dim antal As Integer
    Dim sr As Integer
    Dim start As Variant
    Dim procent As Variant
    Dim b1 As Integer
    Dim b2 As Integer
    Sheets("Tilbud").Range("A19:D2000").Delete Shift:=xlUp
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp.Type = msoPicture Then shp.Delete
    Next shp
    Sheets("Logo").Range("C4:D14").Copy Sheets("Tilbud").Range("C3")
    Sheets("Startside").Select
    sr = 19
    start = "A" & sr
    If Range("A3").Value > 0 Then
        b2 = 57
        b1 = b2 - 20    ' SAMME TAL - BEGGE SKAL ÆNDRES!
        Do While sr > b1
            b1 = b2 - 20    ' dette tal bestemmer hvor mange rækker det enkelte produkt fylder!
            If sr > b1 And sr < (b2 + 1) Then
                sr = b2
                start = "A" & sr
                Sheets("logo").Range("A1:D2").Copy Sheets("Tilbud").Range(start)
                sr = sr + 3
                start = "A" & sr
            End If
            Sheets("Startside").Select
            b2 = b2 + 56
        Loop
        antal = Range("A3").Value
        Sheets("Data-Kedler").Range("A3:D22").Copy Sheets("Tilbud").Range(start)
        sr = sr + 1
        start = "A" & sr
        Range(start).Value = antal
        sr = sr + 19
        start = "A" & sr
        Sheets("Startside").Select
    End If
Avatar billede zx-12r Nybegynder
06. januar 2012 - 12:51 #6
lukket.
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