新建立一个工程: 再建立一个picture1 再建立一个Command1 Private Sub Command1_Click() Dim A3(5, 6) As String For i = 1 To 5 For j = 1 To 6 A3(i, j) = i & "," & j Next Next Picture1.AutoRedraw = True LoadData A3, 1, 1, 5, 6
End Sub Private Function LoadData(Data() As String, BeginRow As Long, BeginColumn As Long, RowCount As Long, ColumnCount As Long) If BeginRow > RowCount Then Exit Function If BeginColumn > ColumnCount Then Exit Function For i = BeginColumn To ColumnCount Picture1.Print Data(BeginColumn, i) Next For i = BeginRow + 1 To RowCount Picture1.Print Data(i, ColumnCount) Next For i = ColumnCount - 1 To BeginColumn Step -1 If ColumnCount - 1 = BeginColumn Then Exit Function Picture1.Print Data(RowCount, i) Next For i = RowCount - 1 To BeginRow + 1 Step -1 Picture1.Print Data(i, BeginRow) Next LoadData Data, BeginRow + 1, BeginColumn + 1, RowCount - 1, ColumnCount - 1 End Function
Private Const MAXROW = 5 Private Const MAXCOL = 6 Private Sub Command1_Click() Dim A3(MAXROW, MAXCOL) As String For i = 0 To MAXROW For j = 0 To MAXCOL A3(i, j) = CStr(i) & "," & CStr(j) Next Next LoadData A3, 0, 6
End Sub Private Function LoadData(Data() As String, lBeginRow As Long, lBeginCol As Long)
'首先判断起点是否为四角 If (lBeginRow <> 0 And lBeginRow <> MAXROW) Or _ (lBeginCol <> 0 And lBeginCol <> MAXCOL) Then
MsgBox "起点不是四角的任何一点", vbInformation, "提示" Exit Function
End If
Dim lRow As Long '行循环计数 Dim lCol As Long '列循环计数 Dim lColStart As Long Dim lColEnd As Long Dim lRowStart As Long Dim lRowEnd As Long Dim lRowStep As Long Dim lColStep As Long
If lBeginRow = 0 Then lRowStart = 0 lRowEnd = MAXROW lRowStep = 1 Else lRowStart = MAXROW lRowEnd = 0 lRowStep = -1 End If
If lBeginCol = 0 Then lColStart = 0 lColEnd = MAXCOL lColStep = 1 Else lColStart = MAXCOL lColEnd = 0 lColStep = -1 End If
For lRow = lRowStart To lRowEnd Step lRowStep For lCol = lColStart To lColEnd Step lColStep Debug.Print Data(lRow, lCol) Next ExChangeStartEnd lColStart, lColEnd, lColStep Next
End Function'交换开始结束的值,并重新设置Step(递增还是递减) Private Sub ExChangeStartEnd(ByRef lStart As Long, ByRef lEnd As Long, ByRef lStep As Long) Dim lTemp As Long lTemp = lStart lStart = lEnd lEnd = lTemp lStep = lStep * -1 End Sub以上代码就可以实现楼主想要的功能了 我主要是参考了楼上的内容 就只是修改了LoadData函数
http://topic.csdn.net/u/20080710/09/5d6dea66-02b1-4f9f-9d7d-6b65638ed1ac.html上面贴子也是这个问题: LZ不知怎么?那这样不行吗? 如果不行说明: 以下是更完美的.Private Enum Way curLeft = 1 '左转 curRight = 2 '右转 End Enum Private Enum Incept LeftTop = 1 '起始点左上角 RightTop = 2 '起始点右上角 LeftBottom = 3 '起始点左下角 RightBottom = 4 '起始点右下角 End Enum Private Function LoadData(Data() As String, BeginRow As Long, BeginColumn As Long, RowCount As Long, ColumnCount As Long, curWay As Way, curIncept As Incept, inceptIndex As Long, returnArr() As String) If BeginRow > RowCount Then Exit Function If BeginColumn > ColumnCount Then Exit Function If curWay = curLeft Then Select Case curIncept Case LeftTop For i = BeginRow To RowCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow Step -1 If RowCount - 1 = BeginRow Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn + 1 Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginColumn, i) Next Case RightTop For i = ColumnCount To BeginColumn Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginColumn, i) Next For i = BeginRow + 1 To RowCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount If BeginColumn + 1 = ColumnCount Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow + 1 Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next Case LeftBottom For i = BeginColumn To ColumnCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn Step -1 If ColumnCount - 1 = BeginColumn Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginColumn, i) Next
For i = BeginRow + 1 To RowCount - 1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next Case RightBottom For i = RowCount To BeginRow Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginColumn, i) Next
For i = BeginRow + 1 To RowCount If BeginRow + 1 = RowCount Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount - 1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next End Select Else Select Case curIncept Case LeftTop For i = BeginColumn To ColumnCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginRow, i) Next
For i = BeginRow + 1 To RowCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn Step -1 If ColumnCount - 1 = BeginColumn Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow + 1 Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
Case RightTop For i = BeginRow To RowCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow Step -1 If RowCount - 1 = BeginRow Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount - 1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginRow, i) Next Case LeftBottom For i = RowCount To BeginRow Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginRow, i) Next
For i = BeginRow + 1 To RowCount If BeginRow + 1 = RowCount Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
For i = ColumnCount - 1 To BeginColumn + 1 Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next Case RightBottom For i = ColumnCount To BeginColumn Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(RowCount, i) Next
For i = RowCount - 1 To BeginRow Step -1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, BeginRow) Next
For i = BeginColumn + 1 To ColumnCount If BeginColumn + 1 = ColumnCount Then Exit Function inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(BeginRow, i) Next
For i = BeginRow + 1 To RowCount - 1 inceptIndex = inceptIndex + 1 returnArr(inceptIndex) = Data(i, ColumnCount) Next
End Select End If LoadData Data, BeginRow + 1, BeginColumn + 1, RowCount - 1, ColumnCount - 1, curWay, curIncept, inceptIndex, returnArr End Function
接上:调用方法:Private Sub Command1_Click() Dim A3(5, 6) As String For i = 1 To 5 For j = 1 To 6 A3(i, j) = i & "," & j Next Next
再建立一个picture1
再建立一个Command1
Private Sub Command1_Click()
Dim A3(5, 6) As String
For i = 1 To 5
For j = 1 To 6
A3(i, j) = i & "," & j
Next
Next
Picture1.AutoRedraw = True
LoadData A3, 1, 1, 5, 6
End Sub
Private Function LoadData(Data() As String, BeginRow As Long, BeginColumn As Long, RowCount As Long, ColumnCount As Long)
If BeginRow > RowCount Then Exit Function
If BeginColumn > ColumnCount Then Exit Function
For i = BeginColumn To ColumnCount
Picture1.Print Data(BeginColumn, i)
Next
For i = BeginRow + 1 To RowCount
Picture1.Print Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn Step -1
If ColumnCount - 1 = BeginColumn Then Exit Function
Picture1.Print Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow + 1 Step -1
Picture1.Print Data(i, BeginRow)
Next
LoadData Data, BeginRow + 1, BeginColumn + 1, RowCount - 1, ColumnCount - 1
End Function
Private Const MAXROW = 5
Private Const MAXCOL = 6
Private Sub Command1_Click()
Dim A3(MAXROW, MAXCOL) As String
For i = 0 To MAXROW
For j = 0 To MAXCOL
A3(i, j) = CStr(i) & "," & CStr(j)
Next
Next
LoadData A3, 0, 6
End Sub
Private Function LoadData(Data() As String, lBeginRow As Long, lBeginCol As Long)
'首先判断起点是否为四角
If (lBeginRow <> 0 And lBeginRow <> MAXROW) Or _
(lBeginCol <> 0 And lBeginCol <> MAXCOL) Then
MsgBox "起点不是四角的任何一点", vbInformation, "提示"
Exit Function
End If
Dim lRow As Long '行循环计数
Dim lCol As Long '列循环计数
Dim lColStart As Long
Dim lColEnd As Long
Dim lRowStart As Long
Dim lRowEnd As Long
Dim lRowStep As Long
Dim lColStep As Long
If lBeginRow = 0 Then
lRowStart = 0
lRowEnd = MAXROW
lRowStep = 1
Else
lRowStart = MAXROW
lRowEnd = 0
lRowStep = -1
End If
If lBeginCol = 0 Then
lColStart = 0
lColEnd = MAXCOL
lColStep = 1
Else
lColStart = MAXCOL
lColEnd = 0
lColStep = -1
End If
For lRow = lRowStart To lRowEnd Step lRowStep
For lCol = lColStart To lColEnd Step lColStep
Debug.Print Data(lRow, lCol)
Next
ExChangeStartEnd lColStart, lColEnd, lColStep
Next
End Function'交换开始结束的值,并重新设置Step(递增还是递减)
Private Sub ExChangeStartEnd(ByRef lStart As Long, ByRef lEnd As Long, ByRef lStep As Long)
Dim lTemp As Long
lTemp = lStart
lStart = lEnd
lEnd = lTemp
lStep = lStep * -1
End Sub以上代码就可以实现楼主想要的功能了
我主要是参考了楼上的内容
就只是修改了LoadData函数
而是直接用的Debug.Print
所以想要看结果就打开ImmediateWindow就可以了
楼主也只要改那个地方就能实现自己想要的功能了
LZ不知怎么?那这样不行吗?
如果不行说明:
以下是更完美的.Private Enum Way
curLeft = 1 '左转
curRight = 2 '右转
End Enum
Private Enum Incept
LeftTop = 1 '起始点左上角
RightTop = 2 '起始点右上角
LeftBottom = 3 '起始点左下角
RightBottom = 4 '起始点右下角
End Enum
Private Function LoadData(Data() As String, BeginRow As Long, BeginColumn As Long, RowCount As Long, ColumnCount As Long, curWay As Way, curIncept As Incept, inceptIndex As Long, returnArr() As String)
If BeginRow > RowCount Then Exit Function
If BeginColumn > ColumnCount Then Exit Function
If curWay = curLeft Then
Select Case curIncept
Case LeftTop
For i = BeginRow To RowCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow Step -1
If RowCount - 1 = BeginRow Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn + 1 Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginColumn, i)
Next
Case RightTop
For i = ColumnCount To BeginColumn Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginColumn, i)
Next
For i = BeginRow + 1 To RowCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount
If BeginColumn + 1 = ColumnCount Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow + 1 Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
Case LeftBottom
For i = BeginColumn To ColumnCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn Step -1
If ColumnCount - 1 = BeginColumn Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginColumn, i)
Next
For i = BeginRow + 1 To RowCount - 1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
Case RightBottom
For i = RowCount To BeginRow Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginColumn, i)
Next
For i = BeginRow + 1 To RowCount
If BeginRow + 1 = RowCount Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount - 1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
End Select
Else
Select Case curIncept
Case LeftTop
For i = BeginColumn To ColumnCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginRow, i)
Next
For i = BeginRow + 1 To RowCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn Step -1
If ColumnCount - 1 = BeginColumn Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow + 1 Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
Case RightTop
For i = BeginRow To RowCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow Step -1
If RowCount - 1 = BeginRow Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount - 1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginRow, i)
Next
Case LeftBottom
For i = RowCount To BeginRow Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginRow, i)
Next
For i = BeginRow + 1 To RowCount
If BeginRow + 1 = RowCount Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
For i = ColumnCount - 1 To BeginColumn + 1 Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
Case RightBottom
For i = ColumnCount To BeginColumn Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(RowCount, i)
Next
For i = RowCount - 1 To BeginRow Step -1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, BeginRow)
Next
For i = BeginColumn + 1 To ColumnCount
If BeginColumn + 1 = ColumnCount Then Exit Function
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(BeginRow, i)
Next
For i = BeginRow + 1 To RowCount - 1
inceptIndex = inceptIndex + 1
returnArr(inceptIndex) = Data(i, ColumnCount)
Next
End Select
End If
LoadData Data, BeginRow + 1, BeginColumn + 1, RowCount - 1, ColumnCount - 1, curWay, curIncept, inceptIndex, returnArr
End Function
Dim A3(5, 6) As String
For i = 1 To 5
For j = 1 To 6
A3(i, j) = i & "," & j
Next
Next
Dim Arr(30) As String '返回数组,一定要是矩阵的数据总数,
Picture1.AutoRedraw = True
LoadData A3, 1, 1, 5, 6, curRight, LeftBottom, 0, Arr
For i = 1 To 30
Picture1.Print Arr(i) '按顺序列出
Next
End Sub