Vba 我的代码(如果语句返回错误的结果 Sub-reder() 变暗s为长PTR 调暗k为字符串 作为整数的Dim t 变暗,变长 工作表(“表3”)。激活 范围(“B2”)。选择 直到ActiveCell.Value=“” s=ActiveCell.Value k=ActiveCell.Offset(0,1) t=ActiveCell.Offset(0,2) r=ActiveCell.Offset(0,3) 如果Len(k)=2且s>15000或s15000或s35000或s35000或s15000且s15000,s35000,s35000,s15000且s15000,s35000,s35000,s15000或s15000,s15000或s15000,s15000和s15000且s

Vba 我的代码(如果语句返回错误的结果 Sub-reder() 变暗s为长PTR 调暗k为字符串 作为整数的Dim t 变暗,变长 工作表(“表3”)。激活 范围(“B2”)。选择 直到ActiveCell.Value=“” s=ActiveCell.Value k=ActiveCell.Offset(0,1) t=ActiveCell.Offset(0,2) r=ActiveCell.Offset(0,3) 如果Len(k)=2且s>15000或s15000或s35000或s35000或s15000且s15000,s35000,s35000,s15000且s15000,s35000,s35000,s15000或s15000,s15000或s15000,s15000和s15000且s,vba,excel,Vba,Excel,即使s值在15000或35000之间,他也会不断返回t=44或48 我做错了什么 不要使用两个“if-else”条件,因为t的值总是替换为第二个“if-else”条件,这意味着第一个“if-else”条件使用较少 使用下面的“和操作员”检查代码: Sub redrer() Dim s As LongPtr Dim k As String Dim t As Integer Dim r As Long Worksheets("sheet3").Activate

即使s值在15000或35000之间,他也会不断返回t=44或48 我做错了什么

  • 不要使用两个“if-else”条件,因为t的值总是替换为第二个“if-else”条件,这意味着第一个“if-else”条件使用较少

  • 使用下面的“和操作员”检查代码:

    Sub redrer()
        Dim s As LongPtr
        Dim k As String
        Dim t As Integer
        Dim r As Long
        Worksheets("sheet3").Activate
        Range("B2").Select
    
        Do Until ActiveCell.Value = ""
            s = ActiveCell.Value
            k = ActiveCell.Offset(0, 1)
            t = ActiveCell.Offset(0, 2)
            r = ActiveCell.Offset(0, 3)
    
            If Len(k) = 2 And s > 15000 Or s < 35000 Then
                t = 10
            ElseIf Len(k) = 3 And s > 15000 Or s < 35000 Then
                t = 20
            Else
                t = 0
            End If
    
            If Len(k) = 2 And s > 35000 Or s < 75000 Then
                t = 44
            ElseIf Len(k) = 3 And s > 35000 Or s < 75000 Then
                t = 48
            Else
                t = 0
            End If
    
            ActiveCell.Offset(0, 2).Value = t
            ActiveCell.Offset(1, 0).Select
        Loop
    End Sub
    
    如果Len(k)=2且s>15000且s<35000,则
    t=10
    ElseIf Len(k)=3,s>15000,s<35000
    t=20
    ElseIf Len(k)=2,s>35000,s<75000
    t=44
    ElseIf Len(k)=3,s>35000,s<75000
    t=48
    其他的
    t=0
    如果结束
    
  • 祝你好运:)

  • 不要使用两个“if-else”条件,因为t的值总是替换为第二个“if-else”条件,这意味着第一个“if-else”条件使用较少

  • 使用下面的“和操作员”检查代码:

    Sub redrer()
        Dim s As LongPtr
        Dim k As String
        Dim t As Integer
        Dim r As Long
        Worksheets("sheet3").Activate
        Range("B2").Select
    
        Do Until ActiveCell.Value = ""
            s = ActiveCell.Value
            k = ActiveCell.Offset(0, 1)
            t = ActiveCell.Offset(0, 2)
            r = ActiveCell.Offset(0, 3)
    
            If Len(k) = 2 And s > 15000 Or s < 35000 Then
                t = 10
            ElseIf Len(k) = 3 And s > 15000 Or s < 35000 Then
                t = 20
            Else
                t = 0
            End If
    
            If Len(k) = 2 And s > 35000 Or s < 75000 Then
                t = 44
            ElseIf Len(k) = 3 And s > 35000 Or s < 75000 Then
                t = 48
            Else
                t = 0
            End If
    
            ActiveCell.Offset(0, 2).Value = t
            ActiveCell.Offset(1, 0).Select
        Loop
    End Sub
    
    如果Len(k)=2且s>15000且s<35000,则
    t=10
    ElseIf Len(k)=3,s>15000,s<35000
    t=20
    ElseIf Len(k)=2,s>35000,s<75000
    t=44
    ElseIf Len(k)=3,s>35000,s<75000
    t=48
    其他的
    t=0
    如果结束
    

  • 祝您好运:)

    如果Len(k)=2且s>15000或s<35000,则始终为真。如果Len(k)=2,s>15000,s<35000,那么我应该用And?@TechCoder替换所有or-我建议您根本不要使用
    ElseIf
    ,尤其不要将
    Else
    ElseIf
    嵌套在一起。另外,我不明白为什么在一行中有两组If语句,查看和设置相同的变量。对你想做的事情进行适当的解释会很有帮助,否则就不可能给你一个明确的答案。我可以在这里发布imgur链接吗?比如在评论部分?好的,我有一个表,其中有5行(姓名,薪水,有孩子,税率,要交的税),现在他的税率取决于两件事:-有孩子,和薪水如果他有孩子,他必须支付更多,现在清楚了吗?如果Len(k)=2,s>15000或s<35000,那么永远是真的。如果Len(k)=2,s>15000,s<35000,那么我应该用And?@TechCoder替换所有or-我建议您根本不要使用
    ElseIf
    ,尤其不要将
    Else
    ElseIf
    嵌套在一起。另外,我不明白为什么在一行中有两组If语句,查看和设置相同的变量。对你想做的事情进行适当的解释会很有帮助,否则就不可能给你一个明确的答案。我可以在这里发布imgur链接吗?比如在评论部分?好的,我有一个表,其中有5行(姓名,薪水,有孩子,税率,要交的税),现在他的税率取决于两件事:-有孩子,和薪水如果他有孩子,他必须支付更多,现在清楚了吗?我试过了,但它仍然给我很多0的结果,但比以前的结果要好(他有点忽略了其中有“否”的部分。结果取决于“k”,如果“k”的长度不等于2或3,则值始终为0 k不是强制性的。如果Len(k),则使用Dim s Dim k Dim t Dim r s=20000=2或s>15000和s<35000然后t=10我实现了代码它可以工作是的,但是k的长度总是2或3我尝试了这个,但是它仍然给了我很多0的结果,但是比之前的结果要好(他有点忽略了那些有“否”的结果)在这些情况下,结果取决于“k”,如果“k”的长度不等于2或3,则值始终为0 k不是强制性的。使用Dim s Dim k Dim t Dim r s=20000如果Len(k)=2或s>15000且s<35000,则t=10我实现了该代码,它将工作是的,但k的长度始终为2或3