在此用户表单中
我有以下代码(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
当我单击“确定”时,没有任何反应:不是错误消息,也不是任何操作。 任何人都可以帮我找到错误吗?
答案 0 :(得分:0)
变量AscendingOption
和DescendingOption
都未初始化,因此设置为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)