模块的Sub希望实现这样的功能:
对Sheet1的B22:D100格进行排序(21行为标题行),依据B列的内容,升降序按照:
如果Sheet1的B10为True则升序排列,否则为降序排列
现写得:
Sub MySort()
If Sheet1.Range("B10") = True Then
Sheet1.Range("B22:D100").Sort key1:=Sheet1.Range("B21"), order1:=xlAscending, Header:=xlNo
Else
Sheet1.Range("B22:D100").Sort key1:=Sheet1.Range("B21"), order1:=xlDescending, Header:=xlNo
End If
End Sub
但发现运行过后无任何效果,将Range("B21")换为Columns("B")依然无效果
是我的理解错了么??这个排序应该肿么写?
æäºç¹æ®æåºè¦æ±ï¼å¯¹äºEXCELæ ååè½æ¯æ æ³è§£å³çãè¿æ¶å°±å¯ä»¥ç¨VBAæ¥å¯¹åºãä¾å¦ï¼æä¸å¼ åå§æ°æ®è¡¨ï¼å¦å¾ï¼
æ ¹æ®æ¤åå§æ°æ®å»ºç«äºä¸å¼ åç±»æ±æ»æ°æ®è¡¨ï¼å¦å¾ï¼
è¦æ±æ¯ï¼å½æç»è¡¨æ°æ®åçåæ´æ¶ï¼å¸ææ±æ»è¡¨è½èªå¨æåºãè¿æ ·çè¦æ±ï¼ç¨æå·¥æåºå°±æ æ³èªå¨äºãè¿æ ·çè¦æ±åªè½ä¾èµäºVBAãé¦å
ç¼å¶ä¸ä¸ªæåºçç¨åºï¼ä»£ç å¦ä¸ï¼
Sub æåº()
Dim mYsheet As String
Dim arr(1 To 3, 1 To 2)
Dim I, J, K As Integer
Dim M_S1 As String 'åæ¾äº¤æ¢å°åºå
Dim M_S2 As Double 'åæ¾äº¤æ¢éå®é¢
mYsheet = "æ±æ»æå"
Sheets(mYsheet).Select
'å°æ°å¼è¯»åå°æ°ç»ä¸
For I = 1 To 3
For J = 1 To 2
arr(I, J) = Cells(I + 1, J + 1)
Next J
Next I
'æåº
For I = 1 To 2
For J = I + 1 To 3
If arr(I, 2) < arr(J, 2) Then
M_S1 = arr(I, 1)
M_S2 = arr(I, 2)
arr(I, 1) = arr(J, 1)
arr(I, 2) = arr(J, 2)
arr(J, 1) = M_S1
arr(J, 2) = M_S2
End If
Next J
Next I
'å°æ°ç»çæåºç»æåæ¾å°åå æ ¼ä¸
For I = 1 To 3
Cells((I + 1), 2) = arr(I, 1)
Next I
End Sub
åç¼å¶ä¸ä¸ªåå æ ¼å 容åæ´çäºä»¶è§¦åç¨åºï¼ä»£ç å¦ä¸ï¼ï¼æ³¨ï¼è¿ä¸ªä»£ç è¦æ¾å¨åå§æ°æ®è¡¨ä¸ï¼
Private Sub worksheet_change(ByVal target As Range)
If target.Column <= 4 Then
æåº
End If
End Sub
你好,我的是2013版,按你说的程序,会停在.Apply一行报:
运行时错误'1004' 应用程序定义或对象定义错误 这是肿么回事??
尝试把.SetRange Range("B21:D100")
换成.SetRange ActiveWorkbook.Worksheets("日程表").Range("B21:D100")
错误依旧
大神,这是肿么回事???
把文件发到[email protected],我试试看。
上面第二行改一下(排序关键字只能是一列"B22:B100",我不小心给错了):
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B22:B100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal