2013-02-19 9 views
12

Dies ist eine Abfrage, mit der ich wirklich verwirrt bin. Coz Ich habe das schon so oft gesucht, aber ich finde immer die Codes, die mit der Suche nach der zuletzt benutzten oder ersten nicht leeren Zelle zusammenhängen. Bei unten angegebenen Codes versucht.Wählen Sie die erste leere Zelle in Spalte F ab Zeile 1. (ohne Offset)

Sub LastCellInColumn() 

Range("A65536").End(xlup).Select 

End Sub 

sogar

: diff-Codes sind durch das Wort "auch"

iRow = Worksheets("Sheet1").Cells(Rows.Count,1).End(XlUp).Row 

sogar

Sub LastCellBeforeBlankInColumn() 

Range("A1").End(xldown).Select 

End Sub 

sogar

Finden Sie die allerletzte gebrauchte Zelle in einer Spalte getrennt worden

Finden die letzte Zelle, vor einem leeren in einer Reihe:

Sub LastCellBeforeBlankInRow() 

Range("A1").End(xlToRight).Select 

End Sub 

sogar

Finden Sie die allerletzte gebrauchte Zelle in einer Reihe:

Sub LastCellInRow() 

Range("IV1").End(xlToLeft).Select 

End Sub 

sogar

Worksheets("Sheet1").Range("A1").End(xlDown).Row + 1 

sogar

LastRow = Range("A" & Rows.Count).End(xlUp).Row + 1 
Sheets("SheetName").Range("A" & LastRow).Paste 

sogar

Dim FirstBlankCell as Range 
Set FirstBlankCell=Range("A" & rows.Count).end(xlup).offset(1,0) 
FirstBlankCell.Activate 

'Find the last used row in a Column: column A in this example 
Dim LastRow As Long 
Dim NextRow As Long 
With ActiveSheet 
    LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row 
End With 
NextRow = LastRow + 1 
+0

Sie das gesehen? http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba –

+0

Ist es nicht dasselbe. Ich möchte die erste leere Zelle auswählen oder aktivieren. Beispiel: Wenn es Werte bis Zelle F5 sind dann will ich Zelle F6 aktivieren und nicht Offset verwenden, während so – Nishant

+0

tun Wenn Sie die letzte Zeile kennen, dann verwenden Sie einfach 'Range („F“& LastRow) .Activate' Obwohl ich nicht bin zu viel zugunsten von '.Activate' –

Antwort

9

Wenn alles, was Sie versuchen zu tun ist die erste leere Zelle in einer bestimmten Spalte wählen, können Sie dies zu versuchen:

Code:

Public Sub SelectFirstBlankCell() 
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
    Dim currentRowValue As String 

    sourceCol = 6 'column F has a value of 6 
    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 

Vor-Auswahl - erste leere Zelle wählen:

enter image description here

Nach Auswahl:

enter image description here

+1

Hey Danke Sam Das habe ich versucht. Obwohl ich Siddharths Vorschlag angeschaut habe und das hat auch funktioniert und es schon benutzt. Aber dein Ans wäre in der Zukunft für mich nützlich. Vielen Dank – Nishant

+1

Gibt es eine Möglichkeit, dies als eine Formel statt in VBA zu tun? – Raj

7

Code of Sam gut, aber ich denke, es ist eine gewisse Korrektur benötigen,

Public Sub SelectFirstBlankCell() 
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
    Dim currentRowValue As String 

    sourceCol = 6 'column F has a value of 6 
    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 
      Exit For 'This is missing... 
     End If 
    Next 
End Sub 

Dank

+2

und Sie könnten Lange statt Integer verwenden möchten, weil Zeilen nach unten sehr weit gehen können (oder nach oben?) –

10

Bei jedem ein stolpern s auf diese, wie ich nur noch ...

Finden Erste leere Zelle in einer Spalte (ich verwende Spalte D konnte aber D1 enthalten)

NextFree = Range("D2:D" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row 
Range("D" & NextFree).Select 

NextFree ist nur ein Name, Sie könnten Würstchen verwenden, wenn Sie wollten.

+0

ersten beiden Lösungen nicht funktioniert hat, tat dies ein – Kyoujin

0
Public Sub SelectFirstBlankCell() 
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
    Dim currentRowValue As String 

    sourceCol = 6 'column F has a value of 6 
    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 

Wenn eine Spalte enthält mehr als eine leere Zelle kontinuierlich dann wird dieser Code nicht richtig

4

funktionieren, wenn alle Sie versuchen wird, wählen Sie in einer bestimmten Spalte die erste leere Zelle zu tun, können Sie geben dies ein Versuch:

Range("A1").End(xlDown).Offset(1, 0).Select 
+0

Bei weitem die einfachste Antwort. – Aldentec

1

angepasst ich ein bisschen den Code aller, es in einer Funktion gemacht, es schneller gemacht (Array), und hinzugefügt Parameter:

Public Function FirstBlankCell(Optional Sh As Worksheet, Optional SourceCol As Long = 1, Optional ByVal StartRow& = 1, Optional ByVal SelectCell As Boolean = False) As Long 
Dim RowCount As Long, CurrentRow As Long 
Dim CurrentRowValue As String 
Dim Data() 
If Sh Is Nothing Then Set Sh = ActiveSheet 

With Sh 

    rowCount = .Cells(.Rows.Count, SourceCol).End(xlUp).Row 
    Data = .Range(.Cells(1, SourceCol), .Cells(rowCount, SourceCol)).Value2 

    For currentRow = StartRow To RowCount 
     If Data(currentRow, SourceCol) = vbNullString Then 
      If SelectCell Then .Cells(currentRow, SourceCol).Select 
      'if selection is out of screen, intead of .select , use : application.goto reference:=.cells(...), scroll:= true 
      FirstBlankCell = currentRow 
      Exit For 
     End If 
    Next 

End With ' Sh 

Erase Data 
Set Sh = Nothing 
End Function 
3

Wenn Sie suchen einen Einzeiler (ohne Bezeichnungen und Kommentare) versuchen, diese

Dim iRow As Long 
Dim ws As Worksheet 
Set ws = Worksheets("Name") 

    'find first empty cell in column F (coming up from the bottom) and return row number 
iRow = ws.Range("F:F").Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 
Verwandte Themen