|
本帖最后由 ebbe 于 2013-11-9 09:35 编辑
我想从Arr数组中的m列查找一些和sTxt相同的数,并将该数所在数组中的行数返回另外一个数组中,储存起来。
我写的代码如下:
Private Sub commandbutton1_Click()
On Error Resume Next
Dim Arr()
Dim m As Integer, sTxt As String
m=1
sTxt="希望"
LastRow = Sheets("sheet1").Cells(Rows.Count, i).End(xlUp).Row
Arr = Sheets("sheet1").Range("A1:E" & LastRow)
Call GetValue(m, sTxt, Arr())
End Sub
Function GetValue(i As Integer, sTr As String, Ar() )
dim Ar1()
For j = 1 To UBound(Arr)
If sTr Like Ar(j, i) Then
j = j + 1
ReDim Preserve Ar1(n)
Ar1(n) = j
End If
Next j
GetValue = Ar1
End Function
这些代码有问题:
如果我不定义dim Arr(),那么就弹出来对话框说,类型不匹配:缺少数组或用户自定义类型。
如果我定义了dim Arr(),那么Arr()就如法将单元格的内容放进数组中去,请问,代码是哪里出现了问题,该如何修改?
非常感谢
你这代码错误很多、很多,几乎无法运行。
不过就你出错的原因来说,倒是很简单:
Dim arr() 以后arr就会是一个数组变量而无法进行单元格区域赋值了(只有Variant变量可以进行赋值)
解决办法是,去掉所有括号,不事先定义为数组变量即可。
Private Sub CommandButton1_Click()
On Error Resume Next
Dim Arr Dim m As Integer, sTxt As String
m = 1
sTxt = "希望"
LastRow = Sheets("sheet1").Cells(Rows.Count, i).End(xlUp).Row
Arr = Sheets("sheet1").Range("A1:E" & LastRow)
Call GetValue(m, sTxt, Arr)
End Sub
蓝色是改过的,红色是有错误的部分……因为不知道你的思路,无法帮你修改。
Function GetValue(i As Integer, str As String, Ar)
Dim Ar1()
For j = 1 To UBound(Ar)
If str Like Ar(j, i) Then
j = j + 1
ReDim Preserve Ar1(n)
Ar1(n) = j
End If
Next j
GetValue = Ar1
End Function
红色部分变量没有赋值,所以代码无法正常工作。呵呵。
|
|