【问题标题】:automatically sort alphabetically in vba在vba中自动按字母顺序排序
【发布时间】:2014-04-15 01:53:25
【问题描述】:

我想根据他们的姓氏(即第 1 列)对工作表上的信息进行排序。工作表上有一个form control 按钮,可根据按钮名称过滤信息。每次点击每个form control 按钮时,我都想按字母顺序对信息进行排序。所以我在宏上使用了record 来查看excel 做了什么来熟悉它,但我很困惑......问题是rcountA 它给了我type mismatch 的错误

我总共有 17 列(A 到 Q - 但我不想真正为列设置范围,以防我稍后添加更多列)包含与 last name 相关的信息,即列1 并从第 3 行开始

Sub btnPrinceRupert()
Dim ws As Worksheet
Dim r As Range
Set r = ws.Cells(2, 1)
Set ws = Worksheets("Master")

Call filterMyTable(xPrinceRupert)
Call changeTitle("PrinceRupert")

    r.Select
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=r, _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ws.sort

    .SetRange (WorksheetFunction.CountA(Range("A:A"))) 
'essentially, i want the range to be up to the last entry of the table
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub

【问题讨论】:

    标签: vba sorting excel


    【解决方案1】:

    对于第一个问题,您需要在设置 r 值之前设置 ws; 第二个问题, WorksheetFunction.CountA(Range("A:A")) 的结果是一个数字,而不是 Range。所以代码应该这样写:

    Sub btnPrinceRupert()
    Dim ws As Worksheet
    Dim r As Range
    Set ws = Worksheets("Master")
    Set r = ws.Cells(2, 1)
    Call filterMyTable(xPrinceRupert)
    Call changeTitle("PrinceRupert")
    
    r.Select
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=r, _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    With ws.sort
    .SetRange (Range("1:" & WorksheetFunction.CountA(Range("A:A"))) 
    'essentially, i want the range to be up to the last entry of the table
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    
    End Sub
    

    【讨论】:

    • 它给了我.setrange (range...)的语法错误
    • 我已将worksheetfunction 替换为lastrowlong 的对象,代码为ws.cells(ws.rows.count, "A").End(xlUP).row.setrange。我写了range(lastrow),但它提示错误method of range object - global failed
    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 2019-05-29
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多