Excel 如何缩短多个IFs
我有这个密码。我如何缩短这个代码Excel 如何缩短多个IFs,excel,vba,Excel,Vba,我有这个密码。我如何缩短这个代码 Private Sub CommandButton1_Click() If Range("B15").Value = 6 Then MsgBox "Maximum Beams Reached (7)", vbCritical Exit Sub End If Range("B15").Value = Range("B15").Value + 1 Columns(colNum & "D").I
Private Sub CommandButton1_Click()
If Range("B15").Value = 6 Then
MsgBox "Maximum Beams Reached (7)", vbCritical
Exit Sub
End If
Range("B15").Value = Range("B15").Value + 1
Columns(colNum & "D").Insert Shift:=xlDown
Range("D3:D13").Borders(xlInsideHorizontal).LineStyle = xlContinuous
Range("D3:D13").Borders(xlEdgeRight).LineStyle = xlContinuous
If Range("B15").Value = 1 Then
Range("D15").Value = "Beam Summary"
Range("D16").Value = " Concrete Volume"
Range("D17").Value = " Rebar Length"
End If
If Range("B15").Value = 1 Then
Range("D3").Value = "Beam " & Range("B15").Value + 1
Else
If Range("B15").Value = 2 Then
Range("D3").Value = "Beam " & Range("B15").Value
Range("E3").Value = "Beam " & Range("B15").Value + 1
Else
If Range("B15").Value = 3 Then
Range("D3").Value = "Beam " & Range("B15").Value - 1
Range("E3").Value = "Beam " & Range("B15").Value
Range("F3").Value = "Beam " & Range("B15").Value + 1
End If
End If
End If
End Sub
使用选定案例:
Private Sub CommandButton1_Click()
If Range("B15").Value = 6 Then
MsgBox "Maximum Beams Reached (7)", vbCritical
Exit Sub
End If
Range("B15").Value = Range("B15").Value + 1
Columns(colNum & "D").Insert Shift:=xlDown
Range("D3:D13").Borders(xlInsideHorizontal).LineStyle = xlContinuous
Range("D3:D13").Borders(xlEdgeRight).LineStyle = xlContinuous
Select Case Range("b15").Value
Case 1
Range("D15").Value = "Beam Summary"
Range("D16").Value = " Concrete Volume"
Range("D17").Value = " Rebar Length"
Range("D3").Value = "Beam " & Range("B15").Value + 1
Case 2
Range("D3").Value = "Beam " & Range("B15").Value
Range("E3").Value = "Beam " & Range("B15").Value + 1
Case 3
Range("D3").Value = "Beam " & Range("B15").Value - 1
Range("E3").Value = "Beam " & Range("B15").Value
Range("F3").Value = "Beam " & Range("B15").Value + 1
End Select
事实上,如果没有if语句,您可以更轻松地实现这一点(至少如果我的目的正确的话)
您可以立即通过更改
If <Value>=1 Then
Output = <Something>
Else
If <Value>=2 Then
Output = <Something else>
End If
End If
甚至可以使用选择
Output = Choose(<value>, <something>, <something else>)
查找ElseIf
,选择Case
和/或IIF
。此外,您可以将两个范围(“B15”)。Value=1
组合成一个块,而不是将相同的If
语句两次。一个建议:缩进代码!^看看这个很酷的,只是好奇。。colNum
的值是多少?
If <Value>=1 Then
Output = <Something>
ElseIf <Value>=2 Then
Output = <Something else>
End If
Select Case <Value>
Case 1:
Output = <Something>
Case 2:
Output = <Something else>
End Select
Output = Choose(<value>, <something>, <something else>)
'ElseIf
Private Sub CommandButton1_Click()
If Range("B15").Value = 6 Then
MsgBox "Maximum Beams Reached (7)", vbCritical
Exit Sub
End If
Range("B15").Value = Range("B15").Value + 1
Columns(colNum & "D").Insert Shift:=xlDown
Range("D3:D13").Borders(xlInsideHorizontal).LineStyle = xlContinuous
Range("D3:D13").Borders(xlEdgeRight).LineStyle = xlContinuous
If Range("B15").Value = 1 Then
Range("D15").Value = "Beam Summary"
Range("D16").Value = " Concrete Volume"
Range("D17").Value = " Rebar Length"
Range("D3").Value = "Beam " & Range("B15").Value + 1
ElseIf Range("B15").Value = 2 Then
Range("D3").Value = "Beam " & Range("B15").Value
Range("E3").Value = "Beam " & Range("B15").Value + 1
ElseIf Range("B15").Value = 3 Then
Range("D3").Value = "Beam " & Range("B15").Value - 1
Range("E3").Value = "Beam " & Range("B15").Value
Range("F3").Value = "Beam " & Range("B15").Value + 1
End If
End Sub
'Select Case
Private Sub CommandButton1_Click()
If Range("B15").Value = 6 Then
MsgBox "Maximum Beams Reached (7)", vbCritical
Exit Sub
End If
Range("B15").Value = Range("B15").Value + 1
Columns(colNum & "D").Insert Shift:=xlDown
Range("D3:D13").Borders(xlInsideHorizontal).LineStyle = xlContinuous
Range("D3:D13").Borders(xlEdgeRight).LineStyle = xlContinuous
Select Case Range("B15").Value
Case 1:
Range("D15").Value = "Beam Summary"
Range("D16").Value = " Concrete Volume"
Range("D17").Value = " Rebar Length"
Range("D3").Value = "Beam " & Range("B15").Value + 1
Case 2:
Range("D3").Value = "Beam " & Range("B15").Value
Range("E3").Value = "Beam " & Range("B15").Value + 1
Case 3
Range("D3").Value = "Beam " & Range("B15").Value - 1
Range("E3").Value = "Beam " & Range("B15").Value
Range("F3").Value = "Beam " & Range("B15").Value + 1
End Select
End Sub
'Choose
Private Sub CommandButton1_Click()
If Range("B15").Value = 6 Then
MsgBox "Maximum Beams Reached (7)", vbCritical
Exit Sub
End If
Range("B15").Value = Range("B15").Value + 1
Columns(colNum & "D").Insert Shift:=xlDown
Range("D3:D13").Borders(xlInsideHorizontal).LineStyle = xlContinuous
Range("D3:D13").Borders(xlEdgeRight).LineStyle = xlContinuous
If Range("B15").Value = 1 Then
Range("D15").Value = "Beam Summary"
Range("D16").Value = " Concrete Volume"
Range("D17").Value = " Rebar Length"
End If
If Range("B15").Value >=1 AND Range("B15").Value <=3 Then
Range("D3").Value = Choose(Range("B15").Value, "Beam " & Range("B15").Value + 1, "Beam " & Range("B15").Value, "Beam " & Range("B15").Value - 1)
Range("E3").Value = Choose(Range("B15").Value, Range("E3").Value, "Beam " & Range("B15").Value + 1, "Beam " & Range("B15").Value)
Range("F3").Value = Choose(Range("B15").Value, Range("E3").Value, Range("E3").Value, "Beam " & Range("B15").Value + 1)
End IF
End Sub