2016-10-28 8 views
0

Моего лист выглядит следующим образом:
enter image description hereКак найти первую пустую ячейку в VBA?

У меня есть функция, чтобы получить индекс ПОСЛЕДНЕЙ пустой ячейки в столбце А:

NextRow = Range("A" & Rows.Count).End(xlUp).Row + 1 

Эта функция работает, чтобы писать на втором массиве (Type2) ,

Но теперь, я хотел бы функцию, чтобы получить индекс ПЕРВОЙ пустой ячейки в столбце A. Таким образом, я пошел на этот сайт: Select first empty cell и я пытался адаптировать код, но он не работает:

If Array= "Type1" Then 
    Dim ws As Worksheet 
    Set ws = ActiveSheet 
    For Each cell In ws.Columns(1).Cells 
     If IsEmpty(cell) = True Then NextRow = cell: Exit For 'ERROR 1004 
    Next cell 
End If 
If Array= "Type2" Then 'It s works 
    NextRow = Range("A" & Rows.Count).End(xlUp).Row + 1 
End If 

ActiveSheet.Range("A" & NextRow) = "TEST" 

Не могли бы вы помочь мне адаптировать мой код к NextRow = IndexOf FIRST empty cell in A?

ответ

4

Вы можете просто использовать тот же метод, который вы сделали, чтобы получить последнюю.

NextRow = Range("A1").End(xlDown).Row + 1 
+1

'xlDown', возможно, вводит в заблуждение, поскольку находит последнюю ячейку в области - поэтому, если A2 был пустым, но использовался A3, он не попадет в A3. И наоборот, если диапазон пуст, он перейдет к последней строке на листе. – brettdj

1

Я делаю это, и это работает:

If Array= "Type1" Then 
     Dim ws As Worksheet 
      Set ws = ActiveSheet 
      For Each cell In ws.Columns(1).Cells 
       If IsEmpty(cell) = True Then 
        NextRow = cell.Row 
        Exit For 
        MsgBox NextRow 
       End If 
      Next cell 
    End If 
    If Array= "Type2" Then 'It s works 
     NextRow = Range("A" & Rows.Count).End(xlUp).Row + 1 
    End If 

    ActiveSheet.Range("A" & NextRow) = "TEST" 
1

Вы должны посмотреть снизу вверх для этого.

И Find лучше, чем xlUp.

Sub FindBlank() 
    Dim ws As Worksheet 
    Dim rng1 As Range 
    Set ws = ActiveSheet 
    Set rng1 = ws.Columns(1).Find("*", ws.[a1], xlFormulas, , xlByColumns, xlPrevious) 
    If Not rng1 Is Nothing Then 
     MsgBox "Last used cell is " & rng1.Address(0, 0) 
    Else 
     MsgBox ws.Name & " row1 is completely empty", vbCritical 
    End If 
End Sub 
Смежные вопросы