如何在VBA中将找到的单元格的值打印到文本框中

时间:2017-05-17 17:02:20

标签: excel vba

enter image description here我们正在尝试编写一个代码,在给定站点名称(列)和SKU(行)的情况下,生成的单元格的值将显示在文本框中。我们已经达到了我们拥有细胞数量的程度,即。 E16,但我们无法弄清楚如何将E16的值打印到文本框中。最后一行中的txtPrice.value应该是在文本框中发布的内容,但它一直是空的

Private Sub btnGO_Click()
Dim rowNum, cellNum As Variant
rowNum = Application.WorksheetFunction.Match(txtSKU.Value, 
Worksheets("AllSites").Range("B:B"), 0)
If IsError(rowNum) Then MsgBox "SKU not found": Exit Sub
If cbxSite.Value = "Fairburn" Then
    cellNum = "C" & rowNum
        ElseIf cbxSite.Value = "Aberdeen" Then
    cellNum = "D" & rowNum
        ElseIf cbxSite.Value = "University Park" Then
    cellNum = "E" & rowNum
        ElseIf cbxSite.Value = "Roanoke" Then
    cellNum = "F" & rowNum
        ElseIf cbxSite.Value = "Lathrop" Then
    cellNum = "G" & rowNum
        Else: cbxSite.Value = "Redlands"
    cellNum = "H" & rowNum
If IsError(cellNum) Then MsgBox "Site not found": Exit Sub
txtPrice.Value = Worksheets("AllSites").Cells(cellNum).Value
End If
End Sub

3 个答案:

答案 0 :(得分:1)

您正在尝试使用Cells("H6").Value之类的内容。它应该是.Range("H6").Value

'where cellNum is a string something like "H6"
txtPrice.Value = Worksheets("AllSites").Range(cellNum).Value

答案 1 :(得分:0)

试试这个:

Textbox.Text = Worksheets("AllSites").Cells(cellNum).Value

答案 2 :(得分:0)

问题在于If语句的结构。您的End If声明位置错误。这导致Excel在您的Else语句后插入冒号。使用冒号是一种将两个语句放在同一行上的方法。因此,如果没有其他If&满足ElseIf个条件,然后此语句cellNum = "H" & rowNum将始终执行,并可能将cellNum指向空白单元格。

即使满足其他If条件之一,代码也会跳过设置文本框值的部分,因为Else:End If之间的所有内容都是{{}的一部分1}}子句因此,如果任何其他Else:条件评估为True,则不会执行这些语句。

因此,您需要将If条件更改为antoher Else:并将ElseIf语句移至该块下方。

此外,您需要将End If更改为.Cells,而其他人已在此处注明。

.Range