Avatar billede hbl Nybegynder
29. december 2005 - 11:46 Der er 6 kommentarer

Makro - løkke - gentager procedure indtil rækker er tomme

Jeg har en makro optaget, det skal gentages indtil ca. 600 rækker er kørt igennem.
Så hvordan koder jeg at makroen efter fuldførelse af proceduren går til næste linie, og senere næste linie igen.
Men samtidig sådan at hvis linien er tom at proceduren stopper.

Jeg har vedlagt den indledende procedure.
Sub pensionsplanner2()
'
' pensionsplanner2 Makro
' Makro indspillet 29.12.2005 af Hans Henrik
'

'
    Range("A2:D2").Select
    Selection.Copy
    Windows("pensionsplanner.xls").Activate
    Range("C3").Select
    ActiveSheet.Paste
    Range("C2:F4").Select
    Application.CutCopyMode = False
    Application.ActivePrinter = "hp deskjet 450 printer på Ne01:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "hp deskjet 450 printer på Ne01:", Collate:=True
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Windows("data ark .xls").Activate
    ' her stopper procedureen for 1 række

Range("A3:D3").Select
    Selection.Copy
    Windows("pensionsplanner.xls").Activate
    Range("C4").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Avatar billede hbl Nybegynder
29. december 2005 - 11:48 #1
Jeg manglede lige et par kommentarer.
Range("A2:D2").Select
    Selection.Copy
    Windows("pensionsplanner.xls").Activate
    Range("C3").Select
    ActiveSheet.Paste
    Range("C2:F4").Select
    Application.CutCopyMode = False
    Application.ActivePrinter = "hp deskjet 450 printer på Ne01:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "hp deskjet 450 printer på Ne01:", Collate:=True
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Windows("data ark .xls").Activate
    ' her stopper procedureen for 1 række
    ' her starter procedure for 2. række
Range("A3:D3").Select
    Selection.Copy
    Windows("pensionsplanner.xls").Activate
    Range("C4").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
I håb om et godt svar

godt nytår

Hans Henrik
Avatar billede bak Forsker
29. december 2005 - 12:36 #2
prøv det her

Sub test()
  Dim x As Long
  Dim mySh2 As Worksheet
  Dim mySh1
  Set mySh1 = Workbooks("data ark .xls").ActiveSheet
  Set mySh2 = Workbooks("pensionsplanner.xls").ActiveSheet
  x = 2
  Do While mySh1.Range("A" & x) <> ""
      mySh1.Range("A" & x & ":D" & x).Copy mySh2.Range("C" & x + 1)
      mySh2.PrintOut Copies:=1, ActivePrinter:= _
        "hp deskjet 450 printer på Ne01:", Collate:=True
      x = x + 1
  Loop
End Sub
Avatar billede hbl Nybegynder
29. december 2005 - 14:24 #3
Kære Bak

Tak for dit input. Det virker godt.
Men der var nok en ting jeg glemte at fortælle:
Data fra data ark skal placeres det samme sted i pensionsplanner -
når data kommer over i pensionplanner skal der startes nogle beregninger som typisk tager 30 sek., og det er bla. resultatet af disse beregninger, der skal udskrives og proceduren skal kører igen.
Jeg ved godt jeg ikke var skarp nok i min indledning, der signalerede jeg faktisk noget andet.

Håber du har tålmodighed med mig.

Med venlig hilsen
Avatar billede bak Forsker
29. december 2005 - 17:06 #4
ok, er det sådan at det skal være helt automatisk eller vil du trykke på en knap, for at få den til at køre hver gang ?
Med samme sted, mener du da at hvis data tages fra A10:D10 så skal de også placeres i A10:D10 eller skal det hver gang være i fx C3
Nedenståede placerer det i C3 hver gang

I øvrigt lyder en beregning på 30 sek. som noget der kunne tåle en del optimering :-)

Sub test()
  Dim x As Long
  Dim mySh2 As Worksheet
  Dim mySh1
  Set mySh1 = Workbooks("data ark .xls").ActiveSheet
  Set mySh2 = Workbooks("pensionsplanner.xls").ActiveSheet
  x = 2
  Do While mySh1.Range("A" & x) <> ""
      mySh1.Range("A" & x & ":D" & x).Copy mySh2.Range("C3")
      mySh2.PrintOut Copies:=1, ActivePrinter:= _
        "hp deskjet 450 printer på Ne01:", Collate:=True
      x = x + 1
  Loop
End Sub
Avatar billede hbl Nybegynder
02. januar 2006 - 19:51 #5
Kære Bak

det virker - du er skarp.
hvor har du lært alt det, og kan du anbefale nogle kurser, eller bøger, der er gode som start til denne verden
Avatar billede bak Forsker
02. januar 2006 - 21:25 #6
Tak for tilbagemeldingen.
det meste er selvlært, men jeg ahr da haft glæde af et par bøger af john walkenbach, en kendt excel guru.
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