gpt4 book ai didi

excel - VBA 按用户范围选择排序

转载 作者:行者123 更新时间:2023-12-02 21:20:39 25 4
gpt4 key购买 nike

过去三天我一直在努力解决这个问题,所以请帮忙...

我想做的是当我运行宏1时(为了论证):

  1. 将弹出窗口以选择应排序的单元格范围
  2. 按照选择的最后一列(或第五列)对这些进行排序(数字从最低到最高)

这里的问题是所选区域每次都会改变(我在Excel中创建了类似树的东西),所以它不能是需要按最后一个(或本例中的第五个)排序的特定列选中(在下面的代码中我不知道如何更改I11:I15)

我得到了什么,但它不起作用:

Sub RangeSelectionPrompt()
Dim rngStart As Range
Set rngStart = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

Set rngStart = Selection

rngStart.Select
ActiveWorkbook.Worksheets("CALCULATION").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CALCULATION").Sort.SortFields.Add Key:=Range( _
"I11:I15"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("CALCULATION").Sort
.SetRange rngStart
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

最佳答案

您可以通过以下方式获取 rngStart 的结束列作为范围:

rngStart.Columns(rngStart.Columns.Count)

使用 With 来整理它,您可以执行以下操作:

With rngStart
ActiveWorkbook.Worksheets("CALCULATION").Sort.SortFields.Add Key:= _
.Columns(.Columns.Count), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
End With

您还可以通过采用 rngStartParent 来整理 ActiveWorkbook.Worksheets

最后,您希望捕获当用户单击“取消”而不是选择范围时会发生的错误。有多种方法可以做到这一点,但我想到的第一个方法是使用 On Error.. 陷阱。

这是完整的代码:

Sub RangeSelectionPrompt()

Dim rngStart As Range
Dim WS As Worksheet

On Error Resume Next
Set rngStart = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
Err.Clear
On Error GoTo 0

If rngStart Is Nothing Then
MsgBox "User cancelled"
Else
Set WS = rngStart.Parent
WS.Sort.SortFields.Clear

With rngStart
WS.Sort.SortFields.Add Key:= _
.Columns(.Columns.Count), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
End With

With WS.Sort
.SetRange rngStart
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End Sub

关于excel - VBA 按用户范围选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48398081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com