@ > Home > Contents > VBA Routines (I): Objects Excel 97+

 

2009/07/27: NextEmptyCell(): Selects (or indicates) next row with empty cell (downwards):

2 alternatives: The first uses the End(xlDown) feature of Excel, the second checks every cell by using an variant array.

Sub NextEmptyCell1()
   With Selection
      'next or 2nd next row empty? - choose it!
      If .Offset(1, 0) = "" Or .Offset(2, 0) = "" Then
         b = .Offset(2 + (.Offset(1, 0) = ""), 0).Row
      Else
         b = .Offset(-(.Offset(0, 0) = ""), 0).End(xlDown).Offset(1, 0).Row
      End If
      'display row and/or select cell
      MsgBox "Row " & b
      Cells(b, .Column).Select
   End With
End Sub


Sub NextEmptyCell2(Optional n As Long = 1)
   'returns the n-th empty cell
   Dim a
   rs = Cells.Rows.Count
   With Selection
      a = Range(Cells(1, .Column), Cells(rs, .Column))
      For i = .Row + 1 To rs
         If a(i, 1) = "" Then j = j& + 1: If j = n Then Exit For
      Next
      MsgBox "Row " & i
      Cells(i, .Column).Select
   End With
End Sub
 
2008/03/05: SheetMgr(): Deletes a sheet by name and adds it new or copies it from another:
Sub SheetMgr(sName As String, Optional Arg2 As String = "")

'SheetMgr "XY"         deletes Sheet XY (if possible)
'SheetMgr "XY", "+"    deletes Sheet XY, adds it again as new XY
'SheetMgr "XY", "AB"   deletes Sheet XY, copies it new from Sheet AB

  Application.DisplayAlerts = False
  On Error Resume Next: Sheets(sName).Delete: On Error GoTo 0
  Application.DisplayAlerts = True
  Select Case Arg2
     Case Is = "+": Sheets.Add.Name = sName
     Case Is > "":  Sheets(Arg2).Copy After:=Sheets(Arg2): _
                    ActiveSheet.Name = sName
  End Select
End Sub