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
即使s值在15000或35000之间,他也会不断返回t=44或48 我做错了什么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
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
如果结束
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