Advertisement
overloop

CopyPage.vba

Apr 28th, 2015
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Function rangeAddress(r As Range) As String
  2.     rangeAddress = r.Address(RowAbsolute:=False, ColumnAbsolute:=False)
  3. End Function
  4.  
  5. Function rangeColumn(r As Range) As String
  6.     Dim s As String
  7.     s = r.Address(RowAbsolute:=False, ColumnAbsolute:=False)
  8.     Dim l As Integer
  9.     l = 1
  10.     While Mid(s, l, 1) >= "A" And Mid(s, l, 1) <= "Z"
  11.         l = l + 1
  12.     Wend
  13.     rangeColumn = Mid(s, 1, l)
  14. End Function
  15.  
  16. Sub MyCopyPage(sheet As Worksheet, w As Integer, h As Integer, i As Integer, rs() As Integer, cs() As Integer)
  17.     Dim srcAddr As String
  18.     Dim dstAddr As String
  19.     srcAddr = rangeAddress(Cells(1, 1)) & ":" & rangeAddress(Cells(1 + h - 1, 1 + w - 1))
  20.     dstAddr = rangeAddress(Cells(h * i + 1, 1)) & ":" & rangeAddress(Cells(h * (i + 1), 1 + w - 1))
  21.     sheet.Range(srcAddr).Copy Destination:=sheet.Range(dstAddr)
  22.     Dim j As Integer
  23.     For j = 0 To UBound(rs) - 1
  24.         srcAddr = rangeAddress(Cells(rs(j), cs(j)))
  25.         sheet.Cells(h * i + rs(j), cs(j)).Formula = "=" & srcAddr
  26.     Next
  27. End Sub
  28.  
  29. Sub main()
  30.  
  31. Dim w As Integer
  32. Dim h As Integer
  33. w = 34
  34. h = 33
  35.  
  36. Dim sheet As Worksheet
  37. Set sheet = Worksheets(1)
  38.  
  39. Dim rs(4) As Integer
  40. Dim cs(4) As Integer
  41.  
  42. rs(0) = 1
  43. cs(0) = 3
  44.  
  45. rs(1) = 2
  46. cs(1) = 3
  47.  
  48. rs(2) = 1
  49. cs(2) = 32
  50.  
  51. rs(3) = 2
  52. cs(3) = 32
  53.  
  54. MyCopyPage sheet, w, h, 1, rs, cs
  55.  
  56. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement