【发布时间】:2019-01-18 19:28:33
【问题描述】:
我创建了一个将数据添加到电子表格的表单。其中有一个组合框,显示已添加到电子表格中的公司。我正在尝试创建代码来填充文本框。
这是一个供应商电子表格,可让人们更轻松地查找、编辑、删除和添加供应商。我已经为添加按钮创建了表单和代码,并填充了三个组合框。这些组合框从我定义列表的工作簿的单独工作表中的列表中获取数据。我一直在尝试使用与组合框中选择的公司匹配的行中的数据填充表单的文本框。我一直在玩弄第四行代码,让它形成一个范围,从该范围中可以在包含所有公司数据的工作表上查找公司名称。我遇到了许多不同的错误,这是第一个没有给出错误但也没有执行任何操作的代码。
Private Sub cboCo_Change()
Dim iRow As Long, LastRow As Long
Dim ws1 As Worksheet
Set ws1 = Sheet3
LastRow = ws1.Range(Cells(1, 1), Cells(300, 1)).End(xlUp).Row
'LastRow = ws1.Cells(1, Rows.Count).End(xlUp).Row
For iRow = 2 To LastRow
'I changed sheets("VendorList") to ws1 so wherever you see ws1 was previously sheets("VendorList")
If Sheet3.Cells(i, "A").Value = (Me.cboCo) Then
Me.txtContact = ws1.Cells(i, "B")
Me.txtPhone = ws1.Cells(i, "C")
Me.txtEmail = ws1.Cells(i, "D")
Me.txtCoAdd = ws1.Cells(i, "E")
Me.txtWebSite = ws1.Cells(i, "F")
Me.txtServProd = ws1.Cells(i, "G")
Me.txtAccred = ws1.Cells(i, "H")
Me.txtStanding = ws1.Cells(i, "I")
Me.txtSince = ws1.Cells(i, "J")
Me.txtNotes = ws1.Cells(i, "K")
Me.txtVerified = ws1.Cells(i, "L")
Me.txtToday = ws1.Cells(i, "M")
Me.cboYrApprv = ws1.Cells(i, "N")
Me.txtApprvBy = ws1.Cells(i, "O")
Me.txtAprvReas = ws1.Cells(i, "P")
Me.txtOrder = ws1.Cells(i, "Q")
Me.txtPurchs = Sheets("VendorList").Cells(i, "R")
Me.cboCat = Sheets("VendorList").Cells(i, "S")
End If
Next iRow
End Sub
它应该查看组合框中的名称,在工作表中找到名称,然后将行中的文本放入相应的文本框中,但它不执行任何操作。我也没有收到错误。
【问题讨论】:
-
sheet3 很可能是你的罪魁祸首。您应该通过执行 "Thisworkbook.worksheets("sheet3")" 来完全限定它
-
避免循环并使用
Range.Find