簡體   English   中英

VBA Excel-如果范圍內有任何單元格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM