【问题标题】:Trying to use boolean logic within Application.WorksheetFunction.MATCH and getting Type Mismatch error尝试在 Application.WorksheetFunction.MATCH 中使用布尔逻辑并获得类型不匹配错误
【发布时间】: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


【解决方案1】:

我可以通过另一种方式解决这个问题!我的主要目标是绕过 VBA 使用 MATCH 函数设置的 255 个字符限制。请参阅我的另一篇文章了解我提出的解决方案。谢谢你的帮助!!!

https://stackoverflow.com/a/72582313/10443879

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多