Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function rangeAddress(r As Range) As String
- rangeAddress = r.Address(RowAbsolute:=False, ColumnAbsolute:=False)
- End Function
- Function rangeColumn(r As Range) As String
- Dim s As String
- s = r.Address(RowAbsolute:=False, ColumnAbsolute:=False)
- Dim l As Integer
- l = 1
- While Mid(s, l, 1) >= "A" And Mid(s, l, 1) <= "Z"
- l = l + 1
- Wend
- rangeColumn = Mid(s, 1, l)
- End Function
- Sub MyCopyPage(sheet As Worksheet, w As Integer, h As Integer, i As Integer, rs() As Integer, cs() As Integer)
- Dim srcAddr As String
- Dim dstAddr As String
- srcAddr = rangeAddress(Cells(1, 1)) & ":" & rangeAddress(Cells(1 + h - 1, 1 + w - 1))
- dstAddr = rangeAddress(Cells(h * i + 1, 1)) & ":" & rangeAddress(Cells(h * (i + 1), 1 + w - 1))
- sheet.Range(srcAddr).Copy Destination:=sheet.Range(dstAddr)
- Dim j As Integer
- For j = 0 To UBound(rs) - 1
- srcAddr = rangeAddress(Cells(rs(j), cs(j)))
- sheet.Cells(h * i + rs(j), cs(j)).Formula = "=" & srcAddr
- Next
- End Sub
- Sub main()
- Dim w As Integer
- Dim h As Integer
- w = 34
- h = 33
- Dim sheet As Worksheet
- Set sheet = Worksheets(1)
- Dim rs(4) As Integer
- Dim cs(4) As Integer
- rs(0) = 1
- cs(0) = 3
- rs(1) = 2
- cs(1) = 3
- rs(2) = 1
- cs(2) = 32
- rs(3) = 2
- cs(3) = 32
- MyCopyPage sheet, w, h, 1, rs, cs
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement