View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson[_3_] Dave Peterson[_3_] is offline
external usenet poster
 
Posts: 2,824
Default Positioning Slips on a Page

How about this: You build one set of numbers (two rows), then let excel
autofill the rest?

I stuck the numbers in a nice contiguous range (easier to code and easier to
check (for me at least). Then I filled down a range.

Then I came back and inserted extra columns and extra rows. I added an extra
GroupsToMake variable. It seemed to work ok.

Sub numbers2()

Application.ScreenUpdating = False

Dim oRow As Long
Dim oCol As Long
Dim GroupsToMake As Long

Dim Firstnumber As Long
Dim LastNumber As Long


With Worksheets("Numbers")
.Cells.Clear
Firstnumber = 1
LastNumber = 36
GroupsToMake = 100

If (LastNumber - Firstnumber + 1) Mod 18 < 0 Then
MsgBox "error: Wrong set of numbers!"
Exit Sub
End If

.Range("a1").Resize(1, 3) _
= Array(Firstnumber, Firstnumber + 6, Firstnumber + 12)
For oCol = 4 To 18
.Cells(1, oCol).Value = .Cells(1, oCol - 3).Value + 1
Next oCol

For oCol = 1 To 18
.Cells(2, oCol).Value = .Cells(1, oCol).Value + 18
Next oCol

Range("a1:R2").AutoFill _
Destination:=Range("A1:R" & GroupsToMake * 2), Type:=xlFillSeries

For oCol = 18 To 2 Step -1
.Columns(oCol).Resize(, 3).Insert
Next oCol

For oRow = GroupsToMake * 2 To 2 Step -1
.Rows(oRow).Resize(9).Insert
Next oRow

End With

Application.ScreenUpdating = True
End Sub

Peter wrote:

Hi to the experts/developers

I have developed a routine to print slips, six to a (portrait) page (three
across and two down)
It works well. However when the pages are guillotined the slips need
sorting. When dealing wih a hundred or more the task is pretty onerous. I
wondered whether any one has had to deal with this problem before?

I would like to place them on the page so that when guillotined the slips
fall on top of each other in an easier-to-sort manner.

A partial extract from the routine:

Sub Numbers()
Dim myNumber As Integer
Dim Firstnumber As Integer
Dim LastNumber As Integer
Firstnumber = 1
LastNumber = 36
Sheets("Numbers").Select
Cells.Clear
For myNumber = Firstnumber To LastNumber
Cells(1 + (Abs(myNumber / 2 = myNumber \ 2)) * 10, 1 + (myNumber -
Firstnumber - _
(Abs(myNumber / 2 = myNumber \ 2))) * 2) = myNumber
Next myNumber
End Sub

This then lays them out as follows:
1 3 5 7 9 11 13 15 17

2 4 6 8 10 12 14 16 18

What I am looking for is something like:

1 7 13 2 8 14 3 9 15

19 25 31 20 26 32 21 27 33

Continuing to the right of the above
4 10 16 5 11 17 6 12 18

22 28 34 23 29 35 24 30 36
Etc

The maximum will be about 180 slips so they can go across the top but wouldn
't matter going down either.

Has anybody developed the maths to position the slips as above to facilitate
their guillotining?

Thanks
Peter Bircher
SA


--

Dave Peterson