[英]VBA Excel - if any cells within range
如果某個范圍內的任何單元格(在這種情況下為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
更改
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
我認為您需要像這樣循環:
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
可能有一種更優雅的方法來執行此操作,但是您可以將其包裝在一個函數中,並使其循環每個單元格:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.