使用Excel vba查找并选择B列中的第一个空白单元格

时间:2014-08-06 08:37:45

标签: excel vba excel-vba

以下代码可以很好地找到给定列中的第一个空单元格(此处为B列)。但我需要的是一个代码,用于在该列中找到第一个空白单元格。

Sub macro1()
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
    Dim currentRowValue As String
    sourceCol = 2   'column B has a value of 2
    rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
    'for every row, find the first blank cell and select it
    For currentRow = 1 To rowCount
        currentRowValue = Cells(currentRow, sourceCol).Value
        If IsEmpty(currentRowValue) Or currentRowValue = "" Then
            Cells(currentRow, sourceCol).Select
        End If
    Next
End Sub

此外,它应该从第10行而不是第1行开始。

有人可以重写此代码来执行此操作吗?

4 个答案:

答案 0 :(得分:2)

这样的事情可能就是你想要的:

Sub test()
Dim ws As Worksheet

Set ws = ActiveSheet

For Each cell In ws.Columns(2).Cells
    If IsEmpty(cell) = True Then cell.Select: Exit For
Next cell
End Sub

这将遍历活动工作表中B列中的每个单元格,并选择它遇到的第一个空单元格。将工作表设置为特定的工作表将Set ws = ActiveSheet更改为Set ws = Sheets("EnterSheetNameHere")

或者您可以尝试使用:

Sub test()
Dim ws As Worksheet

Set ws = ActiveSheet

For Each cell In ws.Columns(2).Cells
     If Len(cell) = 0 Then cell.Select: Exit For
Next cell
End Sub

答案 1 :(得分:0)

使用以下代码解决了我的问题。

Sheets("sheet1").Select
Dim LR2 As Long, cell2 As Range, rng2 As Range
With Sheets("sheet1")
    LR2 = .Range("B" & Rows.Count).End(xlUp).Row
    For Each cell2 In .Range("B8:B" & LR2)
        If cell2.Value <> "" Then
            If rng2 Is Nothing Then
                Set rng2 = cell2
            Else
                Set rng2 = Union(rng2, cell2)
            End If
        End If
    Next cell2
    rng2.Select
End With

答案 2 :(得分:0)

只是我的两分钱。

该函数将查找范围内第一个遇到的BLANK单元格,因此它应该与列和行一起使用。

'Find first BLANK cell in a given range, returnt a range (one cell)
Function FirstBlank(ByVal rWhere As Range) As Range

    Dim vCell As Variant
    Dim answer As Range
    Set answer = Nothing

    For Each vCell In rWhere.Cells

        If Len(vCell.Formula) = 0 Then

            Set answer = vCell
            Exit For

        End If

    Next vCell

    Set FirstBlank = answer

End Function

然后用细胞做任何你想做的事。

答案 3 :(得分:0)

尝试使用此代码选择单元格B10下的第一个空单元格。但这要求B10和B11被预先占用。

Range(“ B10”)。End(xlDown).Offset(1,0).Select

范围(“ B100000”)。结束(xlUp)。偏移(1、0)。选择