gpt4 book ai didi

Excel VBA 匹配函数将字符串或整数变量作为 Arg1

转载 作者:行者123 更新时间:2023-12-04 22:31:03 27 4
gpt4 key购买 nike

以下是较长代码的一部分。
如何在 Application.WorksheetFunction.Match 中声明 Arg1是整数还是字符串?

我在 A 列中有数据(数字),在 B 列中有带下划线的数字。

用户将在输入框中输入数字或字符串,匹配函数将尝试匹配 A 列中的用户输入,但如果不匹配,则它将尝试在 B 列中匹配并返回匹配行。

但是,只有当我使用 Dim userinput As Integer 时,匹配才会起作用。并且只能在 A 列中匹配;或使用 Dim userinput As String并且只能在B列中匹配它。声明 Dim userinput As VariantDim userinput As String 类似.

我可以做一些解决方法,但我想首先了解为什么在将其声明为 Variant 时无法在 A 列中匹配它?

以下是我分别在 A 列和 B 列中的数据。

W   WB
25 25_0
25 25_1
25 25_2
25 25_2
25 25_3
25 25_3
25 25_3
26 26_0
26 26_0
26 26_0
26 26_1
26 26_1

以下是代码:
Sub Return_Row()
Dim userinput As Variant, search_rng As Range

userinput = InputBox("Enter your number")

Set search_rng = ActiveSheet.Range("A:A")

On Error Resume Next
N = Application.WorksheetFunction.Match(userinput, search_rng, 0)
On Error GoTo 0

If N = 0 Then
Set search_rng = ActiveSheet.Range("B:B")
N = Application.WorksheetFunction.Match(userinput, search_rng, 0)
End If

MsgBox N
End Sub

最佳答案

感谢 Scott Craner,它成功了!这是我第一次了解CDec功能。

这种方式(使用 Val 函数)也有效。

Sub Return_Row()
Dim search_rng As Range

userinput = InputBox("Enter your number")

On Error Resume Next
If IsNumeric(userinput) Then
userinput = Val(userinput)
Set search_rng = ActiveSheet.Range("A:A")
N = Application.WorksheetFunction.Match(userinput, search_rng, 0)
Else
Set search_rng = ActiveSheet.Range("B:B")
N = Application.WorksheetFunction.Match(userinput, search_rng, 0)
End If

On Error GoTo 0


MsgBox N
End Sub

关于Excel VBA 匹配函数将字符串或整数变量作为 Arg1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52746257/

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