2014-08-06 5 views
0

Приведенный ниже код отлично подходит для поиска первой пустой ячейки в данном столбце (здесь столбец B). Но мне нужен код, чтобы найти первый пустой элемент в этой колонке.Найти и выбрать первую пустую ячейку в столбце B с помощью Excel vba

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.

Может кто-нибудь переписать этот код, чтобы сделать это?

+1

В чем разница между пустой и пустой ячейкой? – Maco

+0

Да, в чем разница между пустой ячейкой и пустой ячейкой? –

+0

Возможный дубликат [Выбрать первую пустую ячейку в столбце F, начиная с строки 1. (без использования смещения)] (http://stackoverflow.com/questions/14957994/select-first-empty-cell-in-column-f- пуско-от-ряда-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

Может что-то вроде этого будет то, что вы ищете:

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 
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 

И затем сделайте все, что захотите, с помощью камеры.

Смежные вопросы