【发布时间】:2022-06-12 22:57:23
【问题描述】:
我有一个工作表函数在工作表中运行良好,但是,当我尝试在宏中重现它时,我收到运行时错误 13 类型不匹配。工作表中的函数是:
=INDEX(TBQA[Question],MATCH(TRUE,INDEX(TBQA[Answer]=TBQA[@Answer],0),0))
我从中提取值的表名为“TBQA”。我试图在宏的一部分中引用的两列是“问题”和“答案”。我有一个用户窗体组合框,我将其用作名为“TBABox”的比较参考源,当我单击一个按钮时,我想索引“问题”列中与“答案”列中的答案匹配的值(即ComboBox 下拉值的来源)。
Private Sub ShowMeQues_Click()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Sheets("Information")
Set ws2 = Sheets("Resource")
MsgBox Application.WorksheetFunction.Index(ws1.Range("TBQA[Question]"), _
Application.WorksheetFunction.Match("TRUE", _
Application.WorksheetFunction.Index(ws1.Range("TBQA[Answer]") = TBABox.Value, 0), 0))
End Sub
我相信当我试图获得 ws1.Range("TBQA[Answer]") = TBABox.Value 的“TRUE”值时会出现问题,但我可能是错的。请帮忙。我觉得这是一个简单的修复,我只是忽略了,但我一直在搜索互联网以找出解决方案无济于事。欢迎任何建议。谢谢你!!! :)
【问题讨论】:
-
我认为“TRUE”是一个字符串。您正在尝试匹配布尔值 true,它(如果我没记错的话)在 vba 中是 1。
-
我尝试将“TRUE”更改为“True”、True、1 和“1”。不幸的是,我每次都遇到同样的错误。
-
嗯,我不太熟悉在 vba 中将表格放入工作表函数中。您是否尝试在输入公式时录制宏(以查看生成的代码)?有时只需将公式复制到一个新单元格,打开宏记录器,然后看看你得到了什么......
-
这是个好主意。我实际上没有尝试过。如果我弄清楚了,我会试一试并分享任何更新。谢谢。
-
不幸的是,记录的宏只是一个“formulaR1C1 = 我在原帖中发布的公式”。它不会将其转换为 Application.WorksheetFunction 代码格式。
标签: indexing match boolean-logic worksheet-function