從 VBA 自動排序中排除文本值 (Exclude Text Value From VBA Autosort)


問題描述

從 VBA 自動排序中排除文本值 (Exclude Text Value From VBA Autosort)

I wonder whether someone may be able to help me please.

I'm using the code below to perform a sort upon before the workbook is closed.

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Sheets("Input").Protect "password", UserInterFaceOnly:=True 
    With ThisWorkbook.Worksheets("Input") 

        If .Range("B7").Value = "" Then Exit Sub 
        .Range("B7:AH400").Sort Key1:=.Range("B7"), _ 
        Order1:=xlAscending, _ 
        Header:=xlGuess, _ 
        OrderCustom:=1, _ 
        MatchCase:=False, _ 
        Orientation:=xlTopToBottom, _ 
        DataOption1:=xlSortNormal 
    End With 
End Sub 

The code works fine, but I'd like to extend the functionality a little further and exclude the text value "Enter your name" from the sort, so the cell with this value in column B will always be the last row underneath all my data rows.

I've spent a good week or so on this trying to find a solution, but unfortunately I've been unable to do so. I've also looked at the Microsft site to see if their are any inbuilt functions in the 'Range.sort' method, but again I've drawn a blank on this.

I'm not even sure whether this is possible, but I just wondered whether someone could possibly look at this please and offer some guidance on how I may achieve this.

Many thanks and kind regards

Chris

‑‑‑‑‑

參考解法

方法 1:

Since the data you wish to exclude is at the bottom of the range you can simply "right size" the sort range to exclude it. use the .end and .row methods to figure out how much data you have

Dim EndRow as long

after the if statment add

'find last row of data
EndRow = Range("B7").end(xldown).row ‑1

the change the range to use your newly calculated end row.

.Range("B7:AH400")

becomes

.Range("B7:AH" & EndRow)

(by IRHMPynner)

參考文件

  1. Exclude Text Value From VBA Autosort (CC BY‑SA 3.0/4.0)

#excel-2003 #excel #vba






相關問題

使用 VBA 根據 B 列的值重置 A 列中的值 (Reset values in column A based on the value of column B using VBA)

Пераўтварэнне формулы ячэйкі ў тэкст з дапамогай excel vba (Converting a cell's formula to text using excel vba)

刪除行並維護輸入範圍 (Delete Rows & Maintain Input Range)

從 VBA 自動排序中排除文本值 (Exclude Text Value From VBA Autosort)

Tại sao tôi không thể tạo biểu đồ này trong excel (sử dụng powershell) (Why can't I create this chart in excel (using powershell))

如何使用 VBA 從 Excel 中的公式中獲取單元格值? (How do I get the cell value from a formula in Excel using VBA?)

讓 Excel 2003 在 Word 文檔中進行查找並返回出現次數 (Have Excel 2003 do a Find in a Word document and return the number of occurences)

驗證下拉條件 (Validation Drop down on a condition)

在位於兩個不同工作表的兩個範圍內添加單元格 (Adding cells in two ranges which are located at two different sheets)

如何在excel中獲得所需的輸出? (How to get the required output in excel?)

從復雜查詢中獲取數據到 Excel (Getting data from a complex query to excel)

使用文本格式的用戶定義輸入從 excel 中檢索數據 (Retrieving data from excel with user defined input that is in text format)







留言討論