VBA Excel – 如果范围内的任何单元格

如果一个范围内的任何单元格(这里是F列)在一个数字范围内(46和80),我需要一个MsgBox。 下面是我认为会起作用的代码,但是没有做任何事情。 我很确定我的If语句是错误的,但我不知道它需要什么。

Sub CheckNumber() Dim Lastrow As Integer Dim srchRng As Range Lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set srchRng = Range(Cells(84, 6), Cells(Lastrow, 6)) Dim InputValue As String If WorksheetFunction.CountA(srchRng) > 46 And WorksheetFunction.CountA(srchRng) < 80 Then frmCMCapsHS.Show End If End Sub 

我想你会需要像这样循环:

 dim c as range For Each c In srchRng If c.Value > 46 And c.Value < 80 Then frmCMCapsHS.Show Exit For End If Next 

更改

 If WorksheetFunction.CountA(srchRng) > 46 And WorksheetFunction.CountA(srchRng) < 80 Then frmCMCapsHS.Show End If 

 If WorksheetFunction.CountIfs(srchRng, ">46", srchRng, "<80") > 0 Then frmCMCapsHS.Show End If 

可能有一个更优雅的方法来做到这一点,但你可以把它包装在一个函数中,让它循环每个单元格:

 Function RangeContains(InputRange As Range, FromVal As Integer, _ ToVal As Integer) As Boolean Dim r As Range Dim result As Boolean result = False For Each r In InputRange If r.Value2 >= FromVal And r.Value2 <= ToVal Then result = True Exit For End If Next r RangeContains = result End Function 

然后调用它如下:

 If RangeContains(Range("F:F"), 46, 80) Then frmCMCapsHS.Show End If