无法纠正我的脚本以跳过空白单元格

时间:2018-01-20 21:09:34

标签: vba excel-vba excel

我正在尝试使用vba获取大字符串的第二部分(用空格分隔)。我的脚本运行正常,直到它碰到一个空白单元格。当任何单元格不包含任何内容时,它会抛出错误Subscript out of range。如何以这种方式修改我的脚本,以便它首先检查是否有任何单元格为空。如果它找到任何空白单元格,那么它会跳过它并查找下一个单元格直到最后一行?

这是我到目前为止所尝试过的。它可以顺利运行,直到遇到空白单元格。

Sub splitting_items()
    Dim lrow As Long, cel As Range
    Dim i As Long, item_list As Variant

    lrow = Range("A" & Rows.Count).End(xlUp).Row
    For Each cel In Range("A1:A" & lrow)
        item_list = Split(cel, " ")
        i = UBound(item_list)
        Debug.Print item_list(i - 1)
    Next cel
End Sub

应用于以下字符串。前导数字是行号,3和4为空白。

1 BEBEE TABERNACLE CHURCH CME
2 OCHOA VICTORIANO RLT
3
4
5 MIDCON TEXAS PIPELINE CORP
6 STD DALLAS ST STE

2 个答案:

答案 0 :(得分:2)

尝试测试值:

Sub splitting_items()
    Dim lrow As Long, cel As Range
    Dim i As Long, item_list As Variant

    lrow = Range("A" & Rows.Count).End(xlUp).Row
    For Each cel In Range("A1:A" & lrow)
        If InStr(1, cel.Value, " ") <> 0 Then
            item_list = Split(cel, " ")
            i = UBound(item_list)
            Debug.Print item_list(i - 1)
        End If
    Next cel
End Sub

答案 1 :(得分:0)

最后,我找到了一个解决方法。如果我尝试如下,它可以处理空白行并始终将解析后的值放在适当的位置,我的意思是在相应的字符串旁边。

Sub splitting_items()
    Dim cel As Range, i As Long, item_list As Variant

    For Each cel In Sheet1.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
        item_list = Split(cel, " ")
        i = UBound(item_list)
        cel(1, 2) = item_list(i - 1)
    Next cel
End Sub