我目前正在做一个简单的Userform<>工作表数据编辑界面,位于同一工作簿中。我的用户表单按钮位于工作表A上,数据库(将从中提取数据)位于另一个工作表中。我目前正在处理搜索功能(下面包含的整个代码块),我在以下行遇到“类型不匹配”错误:
MsgBox ws.Range("B" + cRow).Value
我已尝试使用CVar()和其他替代方案,但它无法解决问题。
我的工作流程是,当用户在“txtCompany”文本框中键入公司名称并单击搜索按钮时,它将在“公司名称”(列D)列中搜索数据库以获取类似名称并返回该行中的所有其他值到userform中的文本框。
如果有人能够告诉我导致这个问题的原因,请不要高兴。 Sub的整个代码如下:
Private Sub btnSearch_Click()
Dim lRow As Long
Dim ws As Worksheet
Dim srcterm As String
Dim datevalue As String
Dim cCol, cRow As Integer
Set ws = ThisWorkbook.Worksheets("Database")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Dim x As Control
For Each x In frmSearch.Controls
If TypeName(x) = "TextBox" Then
x.Value = ""
End If
Next x
srcterm = txtCompany.Value
MsgBox lRow
For Each cell In ws.Range("D3:D" & lRow)
If cell.Value Like srcterm Then
cRow = cell.Row
MsgBox cRow
MsgBox ws.Range("B" + cRow).Value
With frmSearch
.txtDate.Value = ws.Range("B" + cRow).Value
.txtCustomer.Value = ws.Cells("C" + cRow).Value
.txtCompany.Value = ws.Cells("D" + cRow).Value
.txtAddress.Value = ws.Cells("E" + cRow).Value
.txtContact.Value = ws.Cells("F" + cRow).Value
.txtEmail.Value = ws.Cells("G" + cRow).Value
.txtStatus.Value = ws.Cells("H" + cRow).Value
End With
datevalue = ws.Cells("A" + cRow).Value
End If
Next cell
End Sub
答案 0 :(得分:1)
"B" + cRow
这不是您在VBA中将数字连接到字符串的方式。你应该使用:
"B" & cRow
' ^^^
好的+
运算符用于连接字符串,即"a" + "b"
,但在对字符串和数字进行尝试时,它是类型不匹配。您可以使用"B" + CStr(cRow)
但我建议您完全放弃使用+
运算符进行VBA中的字符串连接,并坚持&
运算符。