如何在VBA中将find的单元格的值打印到文本框中
我们正在尝试编写一个代码,给定一个网站名称(列)和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
问题是你的If
语句的结构。 你的End If
陈述是在错误的地方。 这导致Excel在您的Else
语句后插入一个冒号。 使用冒号是将两个语句放在同一行上的一种方法。 所以这个效果是,如果没有其他If
& ElseIf
条件满足,那么这个语句cellNum = "H" & rowNum
将始终执行,并可能将cellNum指向一个空白单元格。
即使其中一个If
条件满足,那么代码也会跳过设置文本框值的部分,因为Else:
和End If
之间的所有内容都是Else:
子句的一部分,所以如果任何一个其他If
条件评估为真。
因此,您需要更改Else:
条件以阻止ElseIf
,并将End If
语句移动到该块之下。
另外,你需要改变.Cells
到其他人在这里注意到。
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 ElseIf cbxSite.Value = "Redlands" Then cellNum = "H" & rowNum End If If IsError(cellNum) Then MsgBox "Site not found": Exit Sub txtPrice.Value = Worksheets("AllSites").Range(cellNum).Value End Sub
您正尝试使用像“ Cells("H6").Value
。 应该是.Range("H6").Value
。
'where cellNum is a string something like "H6" txtPrice.Value = Worksheets("AllSites").Range(cellNum).Value
尝试这个:
Textbox.Text = Worksheets("AllSites").Cells(cellNum).Value