Excel VBA循环开启条件:仅当此行中的A列为空时才使用B列的值

Excel VBA循环开启条件:仅当此行中的A列为空时才使用B列的值,excel,vba,Excel,Vba,我正在处理vba代码,该代码从网站获取特定的数据集,通过B列的值运行,我想添加一个条件,即如果A列有任何文本或数字,代码应该跳过该行。换句话说,如果A列在同一行中为空,代码将只使用B列中的值。 代码如下: Dim Cel As Range, ms As Worksheet, dom As HTMLDocument Set ms = Sheets("Scramble") Const searchUrl = "http://www.scramble.nl/index.php? option=

我正在处理vba代码,该代码从网站获取特定的数据集,通过B列的值运行,我想添加一个条件,即如果A列有任何文本或数字,代码应该跳过该行。换句话说,如果A列在同一行中为空,代码将只使用B列中的值。 代码如下:

   Dim Cel As Range, ms As Worksheet, dom As HTMLDocument

Set ms = Sheets("Scramble")
Const searchUrl = "http://www.scramble.nl/index.php?
option=com_mildb&view=search"

For Each Cel In ms.Range("B2:B" & ms.Range("B" & 
Rows.Count).End(xlUp).row).SpecialCells(2)

    Set dom = New HTMLDocument


    With CreateObject("winhttp.winhttprequest.5.1")
        .Open "POST", searchUrl, False
        .setRequestHeader "Content-Type", "application/x-www-form-
urlencoded"
        .send "Itemid=60&af=usaf&serial=" & Cel & 
"&sbm=Search&code=&searchtype=&unit=&cn="
        dom.body.innerHTML = .responseText
    End With

    On Error Resume Next

    Cel.Offset(, 2) = dom.getElementsByClassName("rowBord")(0).Cells(1).innerText 'Code
    Cel.Offset(, -1) = dom.getElementsByClassName("rowBord")(0).Cells(2).innerText 'Type
    Cel.Offset(, 11) = dom.getElementsByClassName("rowBord")(0).Cells(5).innerText 'Status
    Cel.Offset(, 12) = dom.getElementsByClassName("rowBord")(0).Cells(7).innerText 'Last

   Next

End Sub
更换这些线路

    Cel.Offset(, 2) = dom.getElementsByClassName("rowBord")(0).Cells(1).innerText 'Code
Cel.Offset(, -1) = dom.getElementsByClassName("rowBord")(0).Cells(2).innerText 'Type
Cel.Offset(, 11) = dom.getElementsByClassName("rowBord")(0).Cells(5).innerText 'Status
Cel.Offset(, 12) = dom.getElementsByClassName("rowBord")(0).Cells(7).innerText 'Last


简单的
If
语句就是您需要的

'first check, if A cell in i-th row is empty
If Not Cells(i, 1).Value = "" Then
    'copy from B column
End If
此外,可以更简单地指定此范围:

Range("B2:B" & ms.Range("B" & Rows.Count).End(xlUp).row)
像这样

Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
但您需要的是遍历所有这些单元格,并分别检查我提到的每一行的条件,如下所示:

For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
    'first check, if A cell in i-th row is empty
    If Not Cells(i, 1).Value = "" Then
        'copy from B column
    End If
Next i
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
    'first check, if A cell in i-th row is empty
    If Not Cells(i, 1).Value = "" Then
        'copy from B column
    End If
Next i