web-dev-qa-db-fra.com

Sélectionnez la première cellule vide de la colonne F à partir de la ligne 1. (sans décalage)

C'est une requête à laquelle je suis vraiment confus. Coz j'ai cherché cela tellement de fois, mais je trouve toujours les codes liés à la recherche de la dernière cellule utilisée ou de la première cellule non vide utilisée . les codes diff ont été séparés par le mot "même"

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

même

Sub LastCellBeforeBlankInColumn()

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

End Sub

même

Trouver la dernière cellule utilisée dans une colonne:

Sub LastCellInColumn()

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

End Sub

même

Recherchez la dernière cellule avant un blanc d'affilée:

Sub LastCellBeforeBlankInRow()

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

End Sub

même

Trouvez la dernière cellule utilisée dans une rangée:

Sub LastCellInRow()

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

End Sub

même

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

même

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

même

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

Si tout ce que vous essayez de faire est de sélectionner la première cellule vide dans une colonne donnée, vous pouvez l'essayer:

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

Avant sélection - première cellule vierge à sélectionner:

enter image description here

Après sélection:

enter image description here

12
Sam

Au cas où quelqu'un tomberait sur ce que je viens d'avoir ...

Rechercher la première cellule vide dans une colonne (j'utilise la colonne D mais je ne souhaite pas inclure D1)

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

NextFree est juste un nom, vous pouvez utiliser des saucisses si vous le souhaitez.

12
Cameronface

Si tout ce que vous essayez de faire est de sélectionner la première cellule vide dans une colonne donnée, vous pouvez l'essayer:

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

Si vous l'utilisez par rapport à une colonne que vous avez sélectionnée, cela fonctionne:

Selection.End(xlDown).Offset(1, 0).Select
9
Chandan B

Le code de Sam est bon mais je pense qu’il a besoin d’une correction,

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

Merci

8
RedLeo

Si vous recherchez une ligne (sans les désignations et les commentaires), essayez ceci.

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

J'ai adapté un peu le code de tout le monde, l'ai intégré à une fonction, l'a accéléré (tableau) et ajouté des paramètres:

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
2

C'est un moyen très rapide et propre de le faire. Il prend également en charge les colonnes vides où aucune des réponses ci-dessus ne fonctionne pour les colonnes vides. 

Usage: SelectFirstBlankCell("F")

Public Sub SelectFirstBlankCell(col As String)

    Dim i As Integer
    Dim NextCell As Integer

    For i = 1 To 10000
        If Range(col & CStr(i)).Value = "" Then
            NextCell = i
            Exit For
        End If
    Next i

    Range(col & CStr(i)).Select
End Sub
1
user2924019
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

Si une colonne contient plusieurs cellules vides en continu, ce code ne fonctionnera pas correctement

1
Goka raju

Je pense qu'une boucle Do Until- est plus propre, plus courte et plus appropriée ici:

Public Sub SelectFirstBlankCell(col As String)
    Dim Column_Index as Integer
    Dim Row_Counter as 

    Column_Index = Range(col & 1).Column
    Row_Counter = 1

    Do Until IsEmpty(Cells(Row_Counter, 1))
        Row_Counter = Row_Counter + 1
    Loop

    Cells(Row_Counter, Column_Index).Select
0
Matthias Baetens