如何使用VBA检查excel中a列的所有数字是否相同

如何使用VBA检查excel中a列的所有数字是否相同,vba,excel,Vba,Excel,如果列F中存在除1以外的任何数字,我希望停止运行宏。如果列F中的所有数字均为“1”,则继续运行代码 我想问题是下面的最后一段代码 “If WorksheetFunction.CountIf(rng,myNum)=rng.Count然后MsgBox(“都一样!”)”您需要重新构造If块以确定程序流,并使用Exit Sub退出程序,如下代码所示: Below is my code Sub DeleteUneccessarySerial() Dim rng As Range Dim myNum A

如果
F
中存在除1以外的任何数字,我希望停止运行宏。如果
F
中的所有数字均为“1”,则继续运行代码

我想问题是下面的最后一段代码
If WorksheetFunction.CountIf(rng,myNum)=rng.Count然后MsgBox(“都一样!”)

您需要重新构造
If
块以确定程序流,并使用
Exit Sub
退出程序,如下代码所示:

Below is my code 

Sub DeleteUneccessarySerial()
Dim rng As Range
Dim myNum As Long
myNum = 1
Set rng = Range("F:F")
Columns("A:I").Sort key1:=Range("I:I"), order1:=xlAscending, Header:=xlYes
Range("$A1:I200").AutoFilter Field:=9, Criteria1:="Checked"
If WorksheetFunction.CountIf(rng, myNum) = rng.Count Then MsgBox ("All the same!")

Range("A:B,F:F,G:H").Delete
End Sub

如果application.Min(rng)=mynum,application.max(rng)=mynum,则
@ScottCraner
application.max
是对
WorksheetFunction.max
的最新绑定调用,因此速度较慢,没有智能感知,并且具有不同的错误处理。此外,在我对1048576个单元格的测试中,对
Max
Min
的调用比对
CountIf
的单个调用慢33%,因为我假设范围只需要扫描一次。除非OP填充了F列中1048576个单元格的整列,否则它永远不会等于rng.count。可能需要执行
工作表function.Count(rng)
Sub DeleteUneccessarySerial()
    Dim rng As Range
    Dim myNum As Long
    myNum = 1
    Set rng = Range("F:F")
    Columns("A:I").Sort key1:=Range("I:I"), order1:=xlAscending, Header:=xlYes
    Range("$A1:I200").AutoFilter Field:=9, Criteria1:="Checked"
    If WorksheetFunction.CountIf(rng, myNum) = rng.Count Then
        MsgBox ("All the same!")
        Exit Sub
    End If
    Range("A:B,F:F,G:H").Delete
End Sub