简体   繁体   English

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

[英]Find and select first blank cell in column B with Excel vba

The below code works fine to find the first empty cell in a given column (here column B). 以下代码可以很好地找到给定列(此处为B列)中的第一个空单元格。 But what I need is a code to find the first blank cell in that column. 但是我需要的是找到该列第一个空白单元格的代码。

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

Also, it should start looking from row 10 instead of row 1. 另外,它应该从第10行而不是第1行开始查找。

Can somebody rewrite this code to do this? 有人可以重写此代码来做到这一点吗?

Could something like this be what you're looking for: 您想要的是这样的东西吗?

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

This will run through each cell in column B in the active worksheet and select the first empty one it comes across. 这将遍历活动工作表中B列的每个单元格,并选择它遇到的第一个空单元格。 To set the sheet to a particular one Change Set ws = ActiveSheet to Set ws = Sheets("EnterSheetNameHere") 要将工作表设置为特定的一个, Set ws = ActiveSheet Set ws = Sheets("EnterSheetNameHere")

Or you could try using: 或者您可以尝试使用:

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

My problem is solved by using the following code. 我的问题通过使用以下代码解决。

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

Just my two cents. 只是我的两分钱。

The function will look for the first encountered BLANK cell in a range, so it should work with columns and rows. 该函数将查找范围中第一个遇到的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

And then do whatever you want with the cell. 然后对单元格进行任何您想要的操作。

Try this code to select the first empty cell below cell B10. 尝试使用此代码选择单元格B10下的第一个空单元格。 But it requires B10 and B11 to be pre-occupied. 但这要求B10和B11被预先占用。

Range("B10").End(xlDown).Offset(1, 0).Select Range(“ B10”)。End(xlDown).Offset(1、0)。选择

or 要么

Range("B100000").End(xlUp).Offset(1, 0).Select 范围(“ B100000”)。结束(xlUp)。偏移量(1、0)。选择

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM