Find bottom of Excel worksheet in VBA

后端 未结 6 1721
深忆病人
深忆病人 2021-01-19 01:47

I\'d like to select to the bottom of the worksheet, but not below what is used/stored. I might have 10,000 rows, but I certainly don\'t have 65,536. I won\'t know ahead of

6条回答
  •  礼貌的吻别
    2021-01-19 02:22

    Public Sub Blank_Row_Remover() ' Start of Macro Code
    
    'Deletes the Entire Row within the Selection if _
    Some of the Cells Within the Selection Contain No Data.
    
    Dim Start_Cell, End_Cell, Data_Info, End_Column, This_Column As Variant
    
    Application.ScreenUpdating = False
    Application.StatusBar = "Please Stand By, ('Removing Blank Rows...' ~ Macro In Progress)..."
    
        Call Data_Info_Selection(Start_Cell, End_Cell, Data_Info, End_Column, This_Column) ' Direct Method
    
        For Each Cell In Selection
            Cell.Formula = Replace(Cell.Formula, Cell.Formula, Trim(Cell.Formula)) {Rids Extra Spaces}
            'If InStr(Cell.Value, "Labels:") Then Cell.EntireRow.Clear 'Searching for a Particular String to Remove a Row
            'If InStr(Cell.Value, "   ") Then Cell.EntireRow.Clear 'Searching for another Particular String to Remove a Row {Like 4 Spaces in a Cell that Keeps it from Reading as a Blank}
        Next
            On Error Resume Next
                Selection.SpecialCells(xlBlanks).EntireRow.Delete
            On Error GoTo 0
    
        'Call Data_Info_Selection(Start_Cell, End_Cell, Data_Info, End_Column, This_Column) ' Direct Method
    
    Application.ScreenUpdating = True
    End Sub
    Public Function Data_Info_Selection(ByRef Start_Cell, End_Cell, Data_Info, End_Column, This_Column As Variant)
    
    Application.ScreenUpdating = False
    Application.StatusBar = "Please Stand By, ('Selecting Partial Columns' ~ Macro In Progress)..."
    
    Start_Cell = ActiveCell.Address
    Start_Cell_Text = Range(Start_Cell).Text
    
    Orginal_Start_Cell = Range(Start_Cell).Address
    
    If Start_Cell_Text = "" Then
        Dim Cells As Range
            For Each Cell In Selection.Cells
                If Cell = "" Then
                    Start_Cell = Cell.Address
                Else
                    Start_Cell = Cell.Address
                    Exit For
                End If
            Next
    End If
    
        This_Column = Mid(Start_Cell, 2, 1) 'ColumnNum = ActiveCell.Column
            If Range(Start_Cell).Text = "" Then
                End_Column = This_Column & ActiveCell.Row
                End_Cell = Range(End_Column).Address
            Else
                End_Column = This_Column + "65536"
                End_Cell = Range(End_Column).End(xlUp).Address
                Start_Cell = Range(Orginal_Start_Cell).Address
            End If
    
        Data_Info = Range(Start_Cell, End_Cell).Address
        Range(Data_Info).Select
    
    End Function
    Public Sub Select_Partial_Data_Start_Cell() ' (This Seems to Work and is Cleaner and Simplier)
    
    Application.ScreenUpdating = False
    Application.StatusBar = "Please Stand By, ('Selecting Partial Data' ~ Macro In Progress)..."
    
    Dim myLastRow As Long
    Dim myLastColumn As Long
    
        Start_Cell = ActiveCell.Address
         On Error Resume Next
            myLastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
            myLastColumn = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
            myLast_Cell = Cells(myLastRow, myLastColumn).Address
        myRange = Start_Cell & ":" & myLast_Cell
        'If InStr(1, myLast_Cell, "104876", 1) Then myLast_Cell = "$F$1105"
    
    Range(myRange).Select
    Application.ScreenUpdating = True
    
    End Sub' End of Macro Code
    

提交回复
热议问题