VBA:如果为基数或2*基数,则发出警报
我已经在Excel先生上发布了这个Qn,但没有一个解决方案有效 我在这里重新制作Qn: 使用Excel 2010。 我想让Excel提醒我,如果单元格值不等于基数或2*基数,但当单元格不等于基数时,它可以是2*基数,反之亦然;因此Excel总是告诉我这是错误的 我应该如何修改下面的代码VBA:如果为基数或2*基数,则发出警报,vba,excel,Vba,Excel,我已经在Excel先生上发布了这个Qn,但没有一个解决方案有效 我在这里重新制作Qn: 使用Excel 2010。 我想让Excel提醒我,如果单元格值不等于基数或2*基数,但当单元格不等于基数时,它可以是2*基数,反之亦然;因此Excel总是告诉我这是错误的 我应该如何修改下面的代码 Sub SubTotal_test() Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer base =
Sub SubTotal_test()
Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer
base = InputBox("State the number of items")
Last_Row = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For i = Last_Row + 1 To 1 Step -1
If (ActiveWorkbook.ActiveSheet.Cells(i, 3) = "L" And ActiveWorkbook.ActiveSheet.Cells(i, 11) <> base) Then
If (ActiveWorkbook.ActiveSheet.Cells(i, 3) = "L" And ActiveWorkbook.ActiveSheet.Cells(i, 11) <> (2 * base)) Then
MsgBox "There is an error with the SubTotal. Please change manually."
Exit For
End If
Else
'MsgBox "SubTotal OK"
ActiveWorkbook.ActiveSheet.Cells(i, 11).Select
End If
Next i
End Sub
小计测试()
Dim k,i,j,minim,countleft,base,tmp_行,Last_行,rw为整数
基本=输入框(“说明项目数量”)
最后一行=ActiveWorkbook.ActiveSheet.Cells(Rows.Count,2).End(xlUp).Row
对于i=最后一行+1到1步骤-1
如果(ActiveWorkbook.ActiveSheet.Cells(i,3)=“L”和ActiveWorkbook.ActiveSheet.Cells(i,11)基),则
如果(ActiveWorkbook.ActiveSheet.Cells(i,3)=“L”和ActiveWorkbook.ActiveSheet.Cells(i,11)(2*base)),则
MsgBox“小计有错误。请手动更改。”
退出
如果结束
其他的
“MsgBox”小计正常
ActiveWorkbook.ActiveSheet.Cells(i,11)。选择
如果结束
接下来我
端接头
只需测试单元格是否不等于base或base*2:
Sub SubTotal_test()
Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer
base = InputBox("State the number of items")
Last_Row = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For i = Last_Row + 1 To 1 Step -1
If ActiveWorkbook.ActiveSheet.Cells(i, 3) = "L" And _
ActiveWorkbook.ActiveSheet.Cells(i, 11) <> base And _
ActiveWorkbook.ActiveSheet.Cells(i, 11) <> 2 * base Then
MsgBox "There is an error with the SubTotal. Please change manually."
ActiveWorkbook.ActiveSheet.Cells(i, 11).Select
Exit For
End If
Next i
End Sub
这与声明是等价的
Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer
Dim k As Variant, i As Variant, j As Variant, minim As Variant, countleft As Variant, base As Variant, tmp_row As Variant, Last_Row As Variant, rw As Integer
但您可能打算使用
Dim k As Integer, i As Integer, j As Integer, minim As Integer, countleft As Integer, base As Integer, tmp_row As Integer, Last_Row As Integer, rw As Integer
只需测试单元格是否不等于base或base*2:
Sub SubTotal_test()
Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer
base = InputBox("State the number of items")
Last_Row = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For i = Last_Row + 1 To 1 Step -1
If ActiveWorkbook.ActiveSheet.Cells(i, 3) = "L" And _
ActiveWorkbook.ActiveSheet.Cells(i, 11) <> base And _
ActiveWorkbook.ActiveSheet.Cells(i, 11) <> 2 * base Then
MsgBox "There is an error with the SubTotal. Please change manually."
ActiveWorkbook.ActiveSheet.Cells(i, 11).Select
Exit For
End If
Next i
End Sub
这与声明是等价的
Dim k, i, j, minim, countleft, base, tmp_row, Last_Row, rw As Integer
Dim k As Variant, i As Variant, j As Variant, minim As Variant, countleft As Variant, base As Variant, tmp_row As Variant, Last_Row As Variant, rw As Integer
但您可能打算使用
Dim k As Integer, i As Integer, j As Integer, minim As Integer, countleft As Integer, base As Integer, tmp_row As Integer, Last_Row As Integer, rw As Integer
你好,非常感谢!它确实有效。我忘了将I设置为整数。再次感谢你@user72728
i
将默认为Variant/Integer
或Variant/Long
,因此未能将其声明为整数不会导致任何实际问题。(不正确申报不是个好主意。)你好,非常感谢!它确实有效。我忘了将I设置为整数。再次感谢你@user72728i
将默认为Variant/Integer
或Variant/Long
,因此未能将其声明为整数不会导致任何实际问题。(不正确申报不是个好主意。)