vba - 当某些条件为真时退出 'For Each' 循环

标签 vba excel

我需要遍历 Sheet1 上 X 列中的所有行,获取其值,然后查看值是否介于 Sheet 2 列 A 和 B 上存储的数字组合之间。如果值介于两者之间,则显示 Sheet 2 列中的值表 1 列 Y 中的 C(将是一个非常简单的 SQL 查询)。

我对VBA很生疏,所以当有匹配时我无法退出内部循环,并将值从Sheet2粘贴到Sheet1。

Sub FindBetweenIP()

    Dim ws1 As Worksheet
    Set ws1 = Sheets(1)

    Dim ws2 As Worksheet
    Set ws2 = Sheets(2)

    For Each cell In ws1.Range("X2:X" & ws1.Range("X" & Rows.Count).End(xlUp).Row)

        For Each cell2 In ws2.Range("A2:A" & ws1.Range("A" & Rows.Count).End(xlUp).Row)

            ip_range1 = cell2.Value2
            ip_range2 = cell2.Offset(0, 1).Value2
            isp = cell2.Offset(0, 2).Value2

            If (cell.Value >= ip_range1 And cell.Value <= ip_range2) Then
                cell.Offset(0, 1).Value2 = isp 'Seems to be not working
                ' ALSO, VALUE FOUND-- EXIT INNER LOOP
            End If

        Next

    Next    
End Sub

最佳答案

您正在查找表达式“退出”。在本例中,它看起来像这样:

For i = 1 to 10

    [Do statements]
    [If Test]
        Exit For
    [End If]
 Next i

以这种方式退出循环本质上就像代码跳到“下一个 i”,而 i 已经等于最大循环值。

关于vba - 当某些条件为真时退出 'For Each' 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551286/

相关文章:

excel - 打开excel文件时如何将计算模式设置为手动?

excel - SUMIF 公式中的嵌套 MIN

mysql - 如何将 ms excel-2007 与 mysql 连接。

excel - 禁用 VBA 用户窗体 'x' ,但仍允许卸载我

ms-access - Access VBA 检查两个日期字段之间的时间段是否不跨越特定日期

excel - 当值大于或等于数十亿时,VBA 中的 Mod 会出现溢出错误

php - 用于检查从 Excel 文件到网页的数据的脚本

excel - 如果在列中按下 Enter 键如何触发代码

excel - 仅对一行中的可见单元格求和(不是列)?

excel - 如何选择一定数量的带有文本的随机excel单元格并将它们组合成一个字符串