ho ampliato il mio commento di cui sopra per fornire soluzioni che
- non utilizzano
Select
- provvedere per l'ultima cella nella riga 1 essendo utilizzati
- provvedere per l'intera riga essendo vuota
- completa l'intera riga
Il metodo Find
nel seco ND codice è un metodo molto più diretto di stabilire la prima cella non vuota
Questa linea Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlValues, , xlByColumns, xlPrevious)
dice, inizia nella cella A1 di Foglio "DTCA" poi guardare indietro (cioè dall'ultima cella nella riga 1) in row1 per colonna cercando qualcosa (il *
). Questo metodo sia trovare l'ultimo non vuoto o ritorna Nothing
, vale a dire una riga vuota
usando xltoLeft
con controlli specifici
Sub Method1()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("DTCs")
If ws.Cells(1, Columns.Count) = vbNullString Then
Set rng1 = ws.Cells(1, Columns.Count).End(xlToLeft)
If rng1.Column <> 1 Then
'return last used cell
MsgBox "rng1 contains " & rng1.Address(0, 0)
Else
If ws.[a1] = vbNullString Then
MsgBox ws.Name & " row1 is completely empty", vbCritical
Else
'true last used cell is A1
MsgBox "rng1 contains " & rng1.Address(0, 0)
End If
End If
Else
'last cell is non-blank
MsgBox ws.Cells(1, Columns.Count) & " contains a value", vbCritical
End If
End Sub
raccomanda
Sub Method2()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("DTCs")
Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlFormulas, , xlByColumns, xlPrevious)
If Not rng1 Is Nothing Then
MsgBox "rng1 contains " & rng1.Address(0, 0)
Else
MsgBox ws.Name & " row1 is completely empty", vbCritical
End If
End Sub
@ExcelDevelopers: poi votare per chiudere come duplicato della più vecchia domanda SO che chiede la stessa cosa. Le risposte su altre pagine rispetto a SO potrebbero scomparire in qualsiasi momento. –
Possibile duplicato di [Errore nel trovare l'ultima cella utilizzata in VBA] (https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba) – Masoud