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