我是vba的新手,并且只使用了几个月。我基本上一直在学习。尽管如此,我正在尝试编写一些代码来处理各种功能。我编写了下面的代码,该代码是从用户窗体上的命令按钮启动的。该代码基本上应该在Excel工作表中搜索一行并验证几条信息然后采取行动。如果代码无法验证行上的条目与userform中的条目之间的匹配,则它将停止并显示错误消息。如果它可以验证信息匹配,则应该继续填充该行的一些信息。我意识到我编写的这段代码可能完全是混乱的,并且显然不优雅,但是在我添加产品代码验证之前它一直在工作。拜托,有人可以帮忙吗?我看了看,找不到解决方案。
以下是代码:
Private Sub AddDelivButton_Click()
Sheets("Deliveries").Activate
Dim number As Integer, rownumber As Integer, result As Long, i As Integer
number = POTextBox.Value
rownumber = 0
result = 1000000
For i = 1 To 25000
If Cells(i, 1).Value = number Then
result = Cells(i, 1).Value
rownumber = i
End If
Next i
If result = 1000000 Then
MsgBox "PO Number Not Found"
Sheets("Dashboard").Activate
Exit Sub
Else
Cells(rownumber, 1).Select
ActiveCell.EntireRow.Cells(3).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(5).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(7).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
MsgBox "Product Code Not Found"
Sheets("Dashboard").Activate
Exit Sub
Else
ActiveCell.EntireRow.Cells(10).Select
If ActiveCell.Value = "" Then
ActiveCell.Value = ProdCodeListBox1.Value
ActiveCell.EntireRow.Cells(11).Value = WeightTextBox1.Value
ActiveCell.EntireRow.Cells(12).Value = DateTextBox1.Value
Else
ActiveCell.EntireRow.Cells(13).Select
If ActiveCell.Value = "" Then
ActiveCell.Value = ProdCodeListBox1.Value
ActiveCell.EntireRow.Cells(14).Value = WeightTextBox1.Value
ActiveCell.EntireRow.Cells(15).Value = DateTextBox1.Value
Else
这会持续几次迭代并节省空间我没有在这里包含所有这些。我只想说最后两个if语句一直有效,直到我添加了ProdCodeListBox1的验证。
非常感谢任何帮助!即使它很简单,我也会忽视它。
谢谢!
答案 0 :(得分:2)
在当前代码中,检查单元格3,5和7是否有匹配值,如果它们都不匹配则显示错误,然后完全退出Sub。如果单元格7匹配,您只能继续检查单元格10。如果单元格3或5匹配,则永远不会检查单元格10
请改为尝试:
ActiveCell.EntireRow.Cells(3).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(5).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(7).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
MsgBox "Product Code Not Found"
Sheets("Dashboard").Activate
Exit Sub
End If
End If
End If
ActiveCell.EntireRow.Cells(10).Select
If ActiveCell.Value = "" Then
所有ActiveCell
和Select
业务都不是从特定单元格获取值的最佳方式,但这是一个不同的问题