排序不起作用

时间:2017-01-12 12:55:12

标签: excel-vba vba excel

在此用户表单中

enter image description here

我有以下代码(Ascending默认为TRUE,而Descending为False)

Private Sub OKButton_Click()
Dim rRange As Range
lastRow = Sheets("overview").Range("G1000").End(xlUp).Row
On Error Resume Next
Application.DisplayAlerts = False
Set rRange = Application.InputBox(Prompt:="Please select a cell in the column you want 
_to sort", Title:="SPECIFY COLUMN", Type:=8)
Col = rRange.Columns(1).Column
On Error GoTo 0
Application.DisplayAlerts = True
If rRange Is Nothing Then
    Exit Sub
Else
    If AscendingOption Then
        Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo
    End If
    If DescendingOption Then
        Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlDescending, key2:=Range("C14:C" & lastRow), Order2:=xlAscending        
    End If
End If
End Sub

当我单击“确定”时,没有任何反应:不是错误消息,也不是任何操作。 任何人都可以帮我找到错误吗?

2 个答案:

答案 0 :(得分:0)

变量AscendingOptionDescendingOption都未初始化,因此设置为false。您需要将其中一个的值更改为TRUE才能排序。但是在当前代码中如果两者都为TRUE,你将对它进行两次排序 - 首先是升序,然后是第二次降序。您可以将代码减少一个变量:

    If AscendingOption Then
        Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo
    Else
        Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14", Col & lastRow), Order1:=xlDescending, key2:=Range("C14:C" & lastRow), Order2:=xlAscending
    End If

如果AscendingOption为true,则按升序排序,否则降序。

答案 1 :(得分:0)

这是可以正常工作的代码版本:

self.TableViewController?.showControllerForSetting(setting: setting)