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