将值从单元格复制到文本框时,<excel-vba>“类型不匹配”错误

时间:2017-04-19 02:01:11

标签: excel vba excel-vba search

我目前正在做一个简单的Userform&lt;&gt;工作表数据编辑界面,位于同一工作簿中。我的用户表单按钮位于工作表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

1 个答案:

答案 0 :(得分:1)

  

"B" + cRow

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

"B" & cRow
'  ^^^

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