真的不想说,明明调用第二个函数Function Sort时,同第一个Function Count一样的,但就是提示下标越界,做了各种调试,思考无果,只好向求助大家。excel表格的界面比较简单,由于文件不能上传,就截个图。代码写得不好,请大家莫见笑。
Option Explicit
'主函数
Public Sub Main()
Dim min_xr As Integer, max_xr As Integer
Dim c As Variant
min_xr = 2
max_xr = 3
c = Count(min_xr, max_xr)
Dim s As Variant
s = Sort(c) '运行到这一步时,提示下标越界,对应Function Sort,for循环结束后的“Sort = dataArray()”行代码
End Sub
'此函数Count主要用于把工作表的数据写入数组,并返回数组
Public Function Count(ByRef min_xr As Integer, ByRef max_xr As Integer) As Variant
Dim i As Integer
Dim dataArray() As Integer
ReDim dataArray(0 To max_xr - min_xr)
For i = LBound(dataArray) To UBound(dataArray)
dataArray(i) = ThisWorkbook.Worksheets(1).Cells(min_xr, 1)
min_xr = min_xr + 1
Next i
Count = dataArray()
End Function
'此函数Sort用于将上一函数Count返回的数组进行排序,并返回数组
Public Function Sort(ByRef dataArray As Variant) As Variant
Dim i As Integer, j As Integer, temp As Integer
For i = LBound(dataArray) To UBound(dataArray) - 1
For j = i + 1 To UBound(dataArray)
If dataArray(i) > dataArray(j) Then
temp = dataArray(j)
dataArray(j) = dataArray(i)
dataArray(i) = temp
End If
Next j
Next i
Sort = dataArray() '提示下标越界代码
End Function
'此函数WriteData用于将上一函数Sort排序好的数据写入sheet1第2列(排序)
Public Function WriteData(ByRef Sort As Integer)
Dim i As Integer, xr As Integer
xr = 2
For i = LBound(WriteData) To UBound(WriteData)
ThisWorkbook.Worksheets(1).Cells(xr, 2) = WriteData(i)
xr = xr + 1
Next i
End Function

Option Explicit
'主函数
Public Sub Main()
Dim min_xr As Integer, max_xr As Integer
Dim c As Variant
min_xr = 2
max_xr = 3
c = Count(min_xr, max_xr)
Dim s As Variant
s = Sort(c) '运行到这一步时,提示下标越界,对应Function Sort,for循环结束后的“Sort = dataArray()”行代码
End Sub
'此函数Count主要用于把工作表的数据写入数组,并返回数组
Public Function Count(ByRef min_xr As Integer, ByRef max_xr As Integer) As Variant
Dim i As Integer
Dim dataArray() As Integer
ReDim dataArray(0 To max_xr - min_xr)
For i = LBound(dataArray) To UBound(dataArray)
dataArray(i) = ThisWorkbook.Worksheets(1).Cells(min_xr, 1)
min_xr = min_xr + 1
Next i
Count = dataArray()
End Function
'此函数Sort用于将上一函数Count返回的数组进行排序,并返回数组
Public Function Sort(ByRef dataArray As Variant) As Variant
Dim i As Integer, j As Integer, temp As Integer
For i = LBound(dataArray) To UBound(dataArray) - 1
For j = i + 1 To UBound(dataArray)
If dataArray(i) > dataArray(j) Then
temp = dataArray(j)
dataArray(j) = dataArray(i)
dataArray(i) = temp
End If
Next j
Next i
Sort = dataArray() '提示下标越界代码
End Function
'此函数WriteData用于将上一函数Sort排序好的数据写入sheet1第2列(排序)
Public Function WriteData(ByRef Sort As Integer)
Dim i As Integer, xr As Integer
xr = 2
For i = LBound(WriteData) To UBound(WriteData)
ThisWorkbook.Worksheets(1).Cells(xr, 2) = WriteData(i)
xr = xr + 1
Next i
End Function
