首页 > 解决方案 > 多个文本框的索引匹配用户表单

问题描述

我有一个非常简单的用户表单,让用户输入名称和数字,然后将它们插入某个单元格并在它们之间添加一些特定的文本。每个名称都有一个关联的编号。例如亚当斯 = 286。

在您在名字文本框上单击或按 Enter 后,我使用的以下代码应用了该数字。

Private Sub ufSUBnum_Enter()
Dim dataNum As Variant
dataNum = Application.Index(Range("Data!$U$3:$U$679"), _
Application.Match(ufSUBname.Value, Range("Data!T3:T679"), 0), 1)

If IsError(dataNum) Then
    ufSUBnum.Value = ""
Else
    ufSUBnum.Value = dataNum
End If
End Sub

我想要做的也是索引匹配数字中的名称。有时我们不知道名称或只是更快地输入号码,但很多时候我们不知道号码。

我尝试翻转范围(包括更改用户表单文本框标签),因此当我输入 3 位数字时,它将应用关联的名称。

它只是返回错误 0。

有任何想法吗?

标签: excelvbauserform

解决方案


在此处输入图像描述

Private Sub ufSUBnum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dataNum As Variant

If ufSUBnum.Value <> "" Then
    Set FindName = Worksheets("Data1").Range("$T$3:$T679").Find(ufSUBnum.Value, LookIn:=xlValues)

    If FindName Is Nothing Then
        ufSUBnum.Value = ""
    Else
        ufSUBnum.Value = FindName.Offset(0, 1).Value
    End If
End If

End Sub

推荐阅读