【发布时间】:2022-01-19 16:26:24
【问题描述】:
您好,我有一个代码,我使用输入字符串长度来确定它是什么类型的部分。我写了一个 else/elseif 语句,但它非常混乱,现在我得到一个没有下一个错误的 for,然后当我广告下一个时,我得到一个没有错误的下一个。有没有更好的方法来做到这一点?
我添加了下一条语句并没有错误地结束
Private Sub UserPartNumberInput_AfterUpdate()
PartNumberToSearch = UserPartNumberInput.Text
If Me.UFSearchTypeComboBox.Text = SearchTypeList(1) Then
If UserPartNumberInput.Text = "" Then
Else
CommandButton1.Caption = "Search Google"
End If
End If
If SearchingForHeader.Caption = "" Or SearchingForHeader.Caption = "Standards" Then 'Show Header If option Is Chosen
Else
SearchingForHeader.Visible = True
End If
Dim i As Integer
If Len(Me.UserPartNumberInput.Text) = 11 Then
If Left((Right(PartNumberToSearch, 3)), 1) = "0" Then
SearchingForHeader.Caption = "Search Assembly By Serial #"
Me.Height = 445
End If
If Left((Right(PartNumberToSearch, 3)), 1) <> "0" Then
SearchingForHeader.Caption = "Search Part By Serial #"
SerialNumberCode = Left(PartNumberToSearch, 4)
SectionNumberCode = Mid(PartNumberToSearch, 6, 2)
PartNumberCode = Right(PartNumberToSearch, 3)
End If
End If
If Len(Me.UserPartNumberInput.Text) = 10 Then
SearchingForHeader.Caption = "Search By Stadard Assemblies Parts"
ElseIf Len(Me.UserPartNumberInput.Text) = 3 Then
SearchingForHeader.Caption = "Search Standard Part # by code"
SerialNumberCode = PartNumberToSearch
Me.Height = 435
MsgBox StandardPartOptionCount(1)
For i = 1 To LastRowLCtbl
If ADCOStandardizedParts(i) = UserPartNumberInput Then
Standardpartoptionrownum = i
next 'added next
MsgBox Standardpartoptionrownum
ElseIf IsLetter(Mid(Me.UserPartNumberInput.Text, 2, 1)) = True Then
SearchingForHeader.Caption = "Search By Description"
ElseIf Len(Me.UserPartNumberInput.Text) = 7 Then
SearchingForHeader.Caption = "Search Standard Assemblies"
SerialNumberCode = Left(PartNumberToSearch, 3)
SectionNumberCode = Mid(PartNumberToSearch, 5, 2)
PartNumberCode = Right(PartNumberToSearch, 3)
ElseIf Len(Me.UserPartNumberInput.Text) = 8 Then
SearchingForHeader.Caption = "Search 6000XXXX's"
SerialNumberCode = PartNumberToSearch
Call StandardPartReturn
ElseIf Len(SearchingForHeader.Caption) = 5 Then
SearchingForHeader.Caption = "Search ADCO Purchase Part #"
Me.CommandButton1.Caption = "Google Search"
Me.CommandButton2.Caption = "Open DataSheet"
Me.CommandButton3.Caption = "Open Model"
SerialNumberCode = PartNumberToSearch
Else
MsgBox "Incorrect Part Number Format"
End If
end sub
【问题讨论】:
-
如果你能正确缩进你的代码会很有帮助。也就是说:你的 for 循环
For i = 1 To LastRowLCtbl)需要一个匹配的Next语句(否则编译器不知道循环在哪里结束) -
考虑使用
Select Case而不是一堆If Else语句 -
您好,感谢您的反馈。在过去一个月左右的时间里,我已经自学了,我不确定你正确缩进是什么意思。我试图在互联网上研究 vba 的正确缩进,但我找不到任何标准的方法。有没有最好的特定格式?
-
另外,当我在 for 循环之后添加下一条语句时,它会显示“没有 for 的下一条语句”
-
我修正了你的缩进,应该更清楚
Next需要在哪里,在内部IfElseIf之后但在同一级别ElseIf之前,For包含在.
标签: excel vba if-statement dynamic combobox