View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Bob Phillips[_6_] Bob Phillips[_6_] is offline
external usenet poster
 
Posts: 11,272
Default Simplify a macro

By removing all the selecting, your code can be simplified to

With Sheets("adress")
.Range("A2").Copy Sheets("Intern forside").Range("B14")
.Range("B2").Copy Sheets("Intern forside").Range("B15")
.Range("C2").Copy Sheets("Intern forside").Range("B17")
.Range("A3").Copy Sheets("Intern forside").Range("B14")
.Range("B3").Copy Sheets("Intern forside").Range("B15")
.Range("C3").Copy Sheets("Intern forside").Range("B17")
End With
Sheets("price").PrintOut Copies:=1, Collate:=True

Chucking in a loop for tghe whole range you can get

i = 14
With Sheets("adress")
For Each cell In Range("A2:C30")
cell.Copy Sheets("Intern forside").Range("B" & i)
i = i + 1
Next cell
End With
Sheets("price").PrintOut Copies:=1, Collate:=True


--

HTH

RP
(remove nothere from the email address if mailing direct)


"Einar" wrote in message
...
I'm working on a project and want to print out different pricelists

depending
on postal code, without using Word. I need to copy values from a list of
name, address and postal code (A2:C30), paste it, print it and then move

to
the next name in the list.

All information is stored in the same workbook. Prices in the Worksheet
called "price" and address inn "address" and some values and function in a
worksheet called "Intern forside". Each customer generates different

prices
depending on his postal number. So - I want to print out different prices

to
lots of customers, but in this example is only from adress!A2:C30

If I try to registry the macro manually I will look like this:

ex_macro Makro
' Makro registrert 22.08.2005 av eho
'

'
Sheets("adress").Select
Range("A2").Select
Selection.Copy
Sheets("Intern forside").Select
Range("B14").Select
ActiveSheet.Paste
Sheets("adress").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Intern forside").Select
Range("B15").Select
ActiveSheet.Paste
Sheets("adress").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Intern forside").Select
Range("B17").Select
ActiveSheet.Paste
Sheets("price").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("adress").Select
Range("A3").Select
Selection.Copy
Sheets("Intern forside").Select
Range("B14").Select
ActiveSheet.Paste
Sheets("adress").Select
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Intern forside").Select
Range("B15").Select
ActiveSheet.Paste
Sheets("adress").Select
Range("C3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Intern forside").Select
Range("B17").Select
ActiveSheet.Paste
Sheets("price").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

'and so on..... until last customer line 30.


I know it has to be an easier way of doing this?
May bee someone can help me.

Einar