全部
我正在使用一些代码通过VBA弹出排序对话框。我的数据集将始终具有标题,并且我想锁定“我的数据在排序对话框的角处具有标题按钮”
我已插入行
`ActiveSheet.Sort.Header = xlYes`
但是,这似乎并不像我期望的那样起作用。我希望获得的结果在下面的屏幕截图中;
下面的完整代码;
Sub ShowSortDialogBRR()
Application.ScreenUpdating = False
Application.Calculation = xlManual
ActiveSheet.Unprotect Password:="fsp123"
Application.EnableEvents = False
'select range and show sort dialog box
Dim Lastrow As Long
Lastrow = ActiveSheet.Range("LastRow_BRR").Offset(rowOffset:=-1).Row
Brr.Range("B3:CE" & Lastrow).Select
On Error Resume Next
ActiveSheet.Sort.Header = xlYes
Application.Dialogs(xlDialogSort).Show
If Err.Number = 1004 Then
MsgBox "Place the cursor in the area to be sorted"
End If
Err.Clear
With ActiveSheet
.Protect Password:="fsp123", UserInterfaceOnly:=True, DrawingObjects:=False, Contents:=True, AllowFiltering:=True, AllowFormattingColumns:=True
.EnableOutlining = True
End With
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
Application.EnableEvents = True
End Sub
任何解决此问题的帮助将不胜感激。
答案 0 :(得分:1)
当范围应用了过滤器时,该选项显示为灰色。您不必实际过滤数据,只需显示过滤器下拉列表即可。这是一个示例,如果尚未启用钳工,则将其打开。
Sub SortData()
Dim r As Range
Dim HasFilter As Boolean
Set r = Sheet1.Range("A1:B4")
HasFilter = Sheet1.AutoFilterMode
If Not HasFilter Then
r.AutoFilter
End If
Application.Dialogs(xlDialogSort).Show
If Not HasFilter Then
r.AutoFilter
End If
End Sub