gpt4 book ai didi

arrays - 将 Variant 数组传递给 Application.Index 方法时,Excel VBA 运行时错误 '13' : Type mismatch,

转载 作者:行者123 更新时间:2023-12-02 16:34:49 25 4
gpt4 key购买 nike

我正在运行代码来创建每日报告,首先我使用单元格和偏移量来比较日期,但这很慢,现在我正在使用数组来改进代码,但我遇到了问题当尝试使用某些应用程序功能时,我首先尝试了 VLookup,但得到的只是运行时错误“13”:类型不匹配。现在我正在使用 Match 和 Index 方法,但遇到了相同的错误,我似乎找不到我的错误是什么。

我正在传递一个变体数组,我是这样得到的:

Public wsrgcmes As Variant
Public wshtte As Variant

With Sheets("Resumen general de casos")
wsrgcmes = .Range(.Cells(1, 2), .Cells(lRow, lCol)).Value
End With

当我尝试执行 Application.Index 方法时,错误就出现了。

Sub gen_informe()    
temp = Application.Index(wsrgcmes, 0, 1)
End Sub

我在调试窗口中只运行了这一行 Application.Index(wsrgcmes, 0, 1) ,但出现了相同的错误。变体数组 wsrgcmes 包含一个包含数字和字符串值的表。任何我无法得到的帮助,我都很感激。谢谢!

wbrgc 的值:

enter image description here

最佳答案

当您获取 Variant 范围内的值时,它始终是一个从 1 开始的二维数组:

"locals" toolwindow in the VBE debugger showing array indices

因此,行索引 0 超出了数组范围,并且 Application.Index 在这种情况下会引发类型不匹配错误。

Public Sub TestMe()        
Dim a As Variant
a = Range("A1:D5").Value2
Debug.Print Application.Index(a, 1, 2)
End Sub
<小时/>

摘自@Mathieu Guindon 的评论:

Application 在 COM 术语中是一个可扩展接口(interface) - 它在运行时使用 WorksheetFunction 成员进行扩展,因此 Application.Index 确实如此工作,即使它是后期绑定(bind)的成员调用(无智能感知)。它的行为与其早期绑定(bind)的等效项略有不同,因为它不会在给定错误结果的情况下引发运行时错误,而是返回错误结果(例如#VALUE!)。

两种语法都完全有效,并且每种都需要不同的错误处理机制(早期绑定(bind):On Error...,后期绑定(bind):IfError(...))

关于arrays - 将 Variant 数组传递给 Application.Index 方法时,Excel VBA 运行时错误 '13' : Type mismatch,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com