Excel VBA:如何解决索引和匹配函数类型不匹配错误

马吉德·Javanmard

当日期计数器更改时,我在索引和匹配函数中遇到错误。遇到错误时,我写了一条评论。如果需要,我上传了我的数据样本。范例:http//s000.tinyupload.com/?file_id = 00243748825638974221

这是代码:

Sub regionalAverage()

Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

' *** change the declaration here ***
Dim aname() As String
Dim rw As Variant
Dim col As Variant
Dim date_ini As Date
Dim date_fin As Date

'create WorkSheet

' *** add Redim here, so the index of the array will start from 1 ***
ReDim aname(1 To 2)

date_ini = #1/1/2008#
date_fin = #1/2/2008#
For j = 1 To 3
    For conteo = date_ini To date_fin
        For i = 1 To 2
            With Sheets(i)
               With Application

                    col = .Match(j, Worksheets(i).Range("F2:F23393"), 0)
                    rw = .Match(CLng(conteo),     Worksheets(i).Range("D2:D23393"), 0)
                   'error appeas here
                    aname(i) = .Index(Worksheets(i).Range("H2:H23393"), col, rw)  



               End With


            End With
        Next i

    '    computation
        area = 6.429571
        Sheets("Output").Activate
        Range("A1").Select
        ActiveCell.Offset(0, j).Select
        colname = Split(ActiveCell(1).address(1, 0), "$")(0)
        Columns("" & colname & ":" & colname & "").Select
        Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, _
         LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
         MatchCase:=False, SearchFormat:=False).Select

        ActiveCell.Value = "=(SUM(" & aname(1) & "," & aname(2) & "))/" & area &  ""

    Next conteo
Next j

End Sub

当日期更改为1/2/2008时,我遇到了错误,该如何解决?

谢谢

戴维·泽门斯

由于您正在使用Application.MatchVariant数据类型,因此在调用时不会出现错误.Match,但是,如果在搜索范围/数组中找不到该值,则这些变量(例如col和)rw将包含Error类型。

尝试将其分配给数组时,Error值将导致TypeMismatch错误Stringaname()

因此,您已经完成一半,只需要进行错误处理即可:

col = .Match(j, Worksheets(i).Range("F2:F23393"), 0)
rw = .Match(CLng(conteo), Worksheets(i).Range("D2:D23393"), 0)

If Not IsError(col) and Not IsError(rw) Then
    aname(i) = .Index(Worksheets(i).Range("H2:H23393"), col, rw)
Else
    ' Do something else if there was an error

End If

或者,Dim aName() as Variant但是您可能需要在代码中的其他地方进行错误处理,以处理放入数组中的错误值。

我还观察到这Index似乎是错误的根源,这里完全不需要它,因为:

Index(range_object, row_num, col_num) 从字面上是相同的 range_object.Cells(row_num, col_num)

因此,我做了:

aname(i) = CStr(Worksheets(i).Range("H2:H23393").Cells(rw, col).Value)

注:我还以为你原来有rwcol在错误的位置的Index功能,那rw是一个ROW数,col数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Excel VBA类型不匹配错误

来自分类Dev

VBA Excel 2016:类型不匹配错误

来自分类Dev

Excel VBA中的类型不匹配错误

来自分类Dev

Excel VBA 宏类型不匹配错误

来自分类Dev

类型不匹配:Excel VBA

来自分类Dev

类型不匹配Excel VBA

来自分类Dev

类型不匹配:Excel VBA

来自分类Dev

Excel VBA-索引和匹配VBA错误

来自分类Dev

不断收到Excel VBA类型不匹配错误13

来自分类Dev

Excel VBA运行时错误类型不匹配13

来自分类Dev

Application.Wait和Excel VBA运行时错误'13'类型不匹配

来自分类Dev

在Excel VBA VLookup函数中使用索引和匹配

来自分类Dev

切换到64位Excel后如何修复VBA“类型不匹配”错误

来自分类Dev

#N / A的Excel VBA类型不匹配

来自分类Dev

类型与数组不匹配:VBA Excel

来自分类Dev

Excel VBA With语句返回类型不匹配

来自分类Dev

Excel VBA数组类型不匹配

来自分类Dev

Excel VBA对象变量类型不匹配

来自分类Dev

匹配函数内部的Excel VBA索引

来自分类Dev

将键传递给函数作为字符串参数时,VBA Excel错误“按参考参数类型不匹配”

来自分类Dev

将键传递给函数作为字符串参数时,VBA Excel错误“按参考参数类型不匹配”

来自分类Dev

匹配函数错误Excel VBA

来自分类Dev

Excel运行时错误13中的VBA:类型不匹配

来自分类Dev

VBA Excel:由于字符过多,运行时错误13类型不匹配

来自分类Dev

Excel VBA Target.Address被修改并导致错误13类型不匹配

来自分类Dev

Excel VBA中的锯齿状数组,类型不匹配错误

来自分类Dev

Excel VBA数据透视缓存类型不匹配运行时错误'13'

来自分类Dev

Excel VBA工作代码今天突然出现“类型不匹配”错误

来自分类Dev

从Access VBA搜索Excel列-类型不匹配

Related 相关文章

热门标签

归档