首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

excel vba 缺个别组或用户定义类型

2013-06-25 
excel vba 缺少数组或用户定义类型Private Sub cmdSupplementary_pay_Click()Dim i, j, n, n1, n2, czint,

excel vba 缺少数组或用户定义类型
Private Sub cmdSupplementary_pay_Click()
Dim i, j, n, n1, n2, czint, filla As Integer
Dim ColName(), czColarr(), fkColarr() As String
Dim isA, isB As Boolean

n = 0
For j = 1 To Sheet1.UsedRange.Columns.Count
    n = n + 1
    ReDim Preserve ColName(n)
    If Mid(Sheet1.Cells(1, j).Address, 2, 2) = "$" Then
        ColName(n - 1) = Sheet1.Range(Mid(Sheet1.Cells(1, j).Address, 2, 1) + CStr(1))
    Else
        ColName(n - 1) = Sheet1.Range(Mid(Sheet1.Cells(1, j).Address, 2, 2) + CStr(1))
    End If
    
Next

For j = 0 To UBound(ColName)
    If ColName(j) = "操作" Then
        czint = j + 1
    End If
    If ColName(j) = "付款性质" Then
        filla = j + 1
    End If
Next
Erase ColName

n1 = 0
n2 = 0
For i = 2 To Sheet1.UsedRange.Rows.Count + 1
    If Sheet1.Cells(i, 1) <> "" Then
        If (Sheet1.Cells(i, czint) = "财务付款确认") Then
            n1 = n1 + 1
            ReDim Preserve czColarr(n1)
            '要拷贝的指定位置 =BF700
            If Mid(Sheet1.Cells(1, j).Address, 2, 2) = "$" Then
                czColarr(n1 - 1) = Mid(Sheet1.Cells(i, filla).Address, 2, 1) + CStr(i)
            Else
                czColarr(n1 - 1) = Mid(Sheet1.Cells(i, filla).Address, 2, 2) + CStr(i)
            End If
        End If
        If (Sheet1.Cells(i, filla) <> "") Then
            n2 = n2 + 1
            ReDim Preserve fkColarr(n2)
            'filla + 6 是‘付款性质’字段后面的列值
            '=BF695:BL695
            If Mid(Sheet1.Cells(1, j).Address, 2, 2) = "$" Then
                fkColarr(n2 - 1) = Mid(Sheet1.Cells(i, filla).Address, 2, 1) + CStr(i) + ":" + Mid(Sheet1.Cells(i, filla + 6).Address, 2, 1) + CStr(i)


            Else
                fkColarr(n2 - 1) = Mid(Sheet1.Cells(i, filla).Address, 2, 2) + CStr(i) + ":" + Mid(Sheet1.Cells(i, filla + 6).Address, 2, 2) + CStr(i)
            End If
        End If
    Else
        If Not (EmptyArr(fkColarr) And EmptyArr1(czColarr)) Then
                If UBound(fkColarr) = UBound(czColarr) Then
                    For j = 0 To UBound(fkColarr)
                        If fkColarr(j) <> "" Then
                            Sheet1.Range(fkColarr(j)).Cut Sheet1.Range(czColarr(UBound(czColarr) - 1 - j))
                        End If
                    Next
                End If
        End If
        n1 = 0
        n2 = 0
        Erase czColarr
        Erase fkColarr
    End If
Next
End Sub
Function EmptyArr(ByRef x() As String) As Boolean  '判断是否为空数组的自定义函数
Dim tempStr As String
tempStr = Join(x, ",")
EmptyArr = LenB(tempStr) <= 0
End Function
-----------------------------------------------
If Not (EmptyArr(fkColarr) And EmptyArr1(czColarr))
这行总是提示“缺少数组或用户定义类型”错误,  如果改成If Not (EmptyArr(fkColarr)) 就没有错误,刚学习VBA 弄了一下午不知道为什么错,请大家告诉我改怎么改 Excel?VBA
[解决办法]
你第二个是EmptyArr1而不是EmptyArr,这儿错了吧?

热点排行