2016-10-28 242 views
0

マイシートの外観のように:
enter image description hereVBAで最初の空のセルを見つける方法は?

私は、列AにLAST空のセルのインデックスを取得する機能を持っている:

NextRow = Range("A" & Rows.Count).End(xlUp).Row + 1 
この関数は、二番目の配列に書き込むために働く

(タイプ2) 。

しかし、今、私は列AにFIRST空のセルのインデックスを取得する機能をしたいと思いますので、私はこのウェブサイトに行ってきました: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

あなたはちょうどあなたが最後の1を取得するためにやったのと同じ方法を使用することができます。

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 
関連する問題