【发布时间】:2015-04-15 23:54:00
【问题描述】:
我想对一列进行排序(它是一个带有 Y/N 的标志列)。它应该在每次点击时在升序/降序之间切换。
我的代码不起作用..我是 VBA 新手。请帮忙。
Private Sub CommandButton1_Click()
Dim xlSort As XlSortOrder
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "E").End(xlUp).Row End With
If (Range("E2").Value > Range("E" & CStr(LastRow))) Then
xlSort = xlAscending
Else
xlSort = xlDescending
End If
.Sort Key1:=Range("E2"), Order1:=xlSort, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveWorkbook.Save
End Sub
【问题讨论】:
-
您缺少
End With将其放在ActiveWorkbook.Save之前 -
我添加了结尾。现在它显示对象不支持此属性或方法运行时错误 - 438 请建议
-
您现在有 2 个
End Withs - 删除LastRow =行中的一个,并且在您看到Range一词的任何地方,将其替换为.Range -
good catch @JohnBustos -> 我在编辑中没有看到这一点。代码以一种奇怪的方式被复制。
-
仍然显示应用程序定义或对象定义运行时错误