|
本帖最后由 laoau138 于 2017-5-28 21:36 编辑
VBA改写自动换列 输出多行数字
- Option Explicit
- Dim M%, N%, Ro&, A(16) As Integer, Po, L, Nn, Hh
- Sub CommandButton1_Click()
- M = Val([B7])
- N = Val([B8])
- If M < 2 Or M > 15 Or N < 2 Or N > 6 Then
- MsgBox "M、N不在规定范围内,请修改"
- Else
- Ro = 11
- Po = 11
- L = 50
- Hh = 8
- Nn = 2
- Rows("11:5005").ClearContents
- Call C(1)
- End If
- End Sub
- Private Sub C(ByVal t As Integer)
- Dim i As Integer
- For i = A(t - 1) + 1 To M
- A(t) = i
- If t = N Then
- Myprint
- Else
- Call C(t + 1)
- End If
- Next i
- End Sub
- Private Sub Myprint()
- Dim i%, LinStr$, Ar
- LinStr = ""
- For i = 1 To N - 1
- LinStr = LinStr & A(i) & " "
- Next i
- LinStr = LinStr & A(N)
- Ar = Split(LinStr)
- If Ro <= 11 + L Then
- Range("A" & Ro).Resize(, N) = Ar
- Ro = Ro + 1
- Else
- If Ro > 11 + L And Ro < 13 + Nn * L Then
- Tr: Cells(Po, Hh).Resize(, N) = Ar
- Po = Po + 1
- Ro = Ro + 1
- Else
- Nn = Nn + 1
- Po = 11
- Hh = Hh + 7
- GoTo Tr
- End If
- End If
- End Sub
复制代码
|
|