Vba 定义变量时出错

Vba 定义变量时出错,vba,excel,Vba,Excel,嗨,我有一个单元格表,其中一列是座位号。但是,座位号包含一些字符串值(如146A)和大多数数字(如146)。然而,在vba中,当我使用座位号进行vlookup时,我无法找到正确的变量,好像我dim seat no as integer那么146A之类的值会给出错误,如果我dim seat no as string则数字不起作用。我在excel中将整个seat no列格式化为文本,但错误仍然存在。Hencei需要关于如何定义变量的帮助,该变量将显示从1到146A的所有值。这就是我所做的代码 Pri

嗨,我有一个单元格表,其中一列是座位号。但是,座位号包含一些字符串值(如146A)和大多数数字(如146)。然而,在vba中,当我使用座位号进行vlookup时,我无法找到正确的变量,好像我
dim seat no as integer
那么146A之类的值会给出错误,如果我
dim seat no as string
则数字不起作用。我在excel中将整个seat no列格式化为文本,但错误仍然存在。Hencei需要关于如何定义变量的帮助,该变量将显示从1到146A的所有值。这就是我所做的代码

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

   Dim answer As Integer
   answer = TextBox1.Value
   TextBox2.Value = WorksheetFunction.VLookup(answer, Sheets("L12 - Data Sheet").Range("B:E"), 2, False)
   TextBox3.Value = WorksheetFunction.VLookup(answer, Sheets("L12 - Data Sheet").Range("B:E"), 3, False)
   TextBox4.Value = WorksheetFunction.VLookup(answer, Sheets("L12 - Data Sheet").Range("B:E"), 4, False)

End Sub
如果工作表中的B列(“L12-数据表”)肯定是文本,则将答案声明为字符串

Dim answer As String
answer = TextBox1.Value
TextBox2.Value = WorksheetFunction.VLookup(answer, _
                   Sheets("L12 - Data Sheet").Range("B:E"), 2, False)
如果“L12-数据表”中有字符串(例如
146A
)和实数(例如
146
)的组合!B:B然后从TextBox1中以字符串形式检索该值,并尝试将其转换为真值

Dim answer As String
answer = TextBox1.Value
TextBox2.Value = WorksheetFunction.VLookup(Iif(IsNumeric(answer), Int(answer), answer), _
                   Sheets("L12 - Data Sheet").Range("B:E"), 2, False)
如果“L12-数据表”中的值没有一致的值类型!B:B那就用你所有的东西来打吧

Dim answer As Variant, mtch As Long
answer = TextBox1.Value

Select Case True
    Case Not IsError(Application.Match(CStr(answer), Sheets("L12 - Data Sheet").Columns(2), 0))
        mtch = Application.Match(CStr(answer), Sheets("L12 - Data Sheet").Columns(2), 0)
    Case Not IsError(Application.Match(Int(answer), Sheets("L12 - Data Sheet").Columns(2), 0))
        mtch = Application.Match(Int(answer), Sheets("L12 - Data Sheet").Columns(2), 0)
End Select

'error control needed here in case mtch is still not a row number
debug.print mtch
TextBox2.Value = Sheets("L12 - Data Sheet").Cells(mtch, "C").Value
TextBox3.Value = Sheets("L12 - Data Sheet").Cells(mtch, "D").Value
TextBox4.Value = Sheets("L12 - Data Sheet").Cells(mtch, "E").Value

听起来好像在
工作表(“L12-数据表”)中有一半的数字和一半的文本。范围(“B:B”)
。修复数据,使其全部为文本。默认情况下,文本在单元格中左对齐。数字是右对齐的。我将它们左对齐并突出显示整个列以转换为文本格式,但仍然在@JeepedIf
Sheets(“L12-数据表”)。范围(“B:B”)
是明确的文本值(包括text-that-looke-like-a-number)然后使用
Dim answer As String
。是的,我这样做了,但在键入(看起来像数字的文本)时出错。请参见下面的扩展查找条件。发布经过编辑的样本数据可能是达成解决方案的最便捷的方式。所有代码都在answer=Textbox1.value上出现错误。可能是因为该计划期望它是数字,但它作为一个字符串出现了,请参见上面我修改的变体方法。这将有助于看到一些实际数据。发布一个指向示例工作簿中已编辑数据的链接。手动选择列,然后右键单击,然后设置单元格格式,然后在第一个选项卡(数字)中,转到类别并选择文本。。。作为变量,使用字符串