<Excel-VBA> 将值从单元格复制到文本框时"Type mismatch"错误



我目前正在做一个简单的用户表单<>工作表数据编辑界面,位于同一个工作簿中。我的用户表单按钮位于工作表 A 上,数据库(将从中提取数据)位于另一张工作表中。我目前正在研究搜索功能(下面包含的整个代码块),并且在以下行遇到"类型不匹配"错误:

MsgBox ws.Range("B" + cRow).Value

我尝试使用 CVar() 和其他替代方案,但它不能解决问题。

我的预期工作流程是,当用户在"txtCompany"文本框中键入公司名称并单击搜索按钮时,它将在"公司名称"(D 列)列中的数据库中搜索相似的名称,并将该行中的所有其他值返回到用户表单中的文本框。

如果有人能启发我导致此问题的原因,将不胜感激。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

"B" + cRow

这不是您在 VBA 中将数字连接到字符串的方式。您应该使用:

"B" & cRow
'  ^^^

好的,+运算符用于连接字符串,即"a" + "b"但是当在字符串和数字上尝试它时,它是类型不匹配。您可以使用"B" + CStr(cRow)但我建议您完全放弃使用+运算符在 VBA 中进行字符串连接,并坚持使用&运算符来处理这个问题。

相关内容

最新更新