2013-11-24 50 views
1

的人,我的疑惑很简单..我创建在Excel电子表格中有几个字段,例如:自动练成字母

NAME  ADDRESS  PHONE 
carlos  ave. 1 12345678 
Argeu  av .2  87654321 

在此之后,我使用的模块下面的代码:

Private Sub Worksheet_Activate() 
ActiveSheet.ScrollArea = "$A$2:$A$300" 
End Sub 


Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Count > 1 Then Exit Sub 
If Target.Column <> 1 Then Exit Sub 
Dim LR As Long 
LR = Cells(Rows.Count, "A").End(xlUp).Row 
Range("$A$2:$A" & LR).Sort Key1:=Range("$A$2") 
End Sub 

此代码将在示例表中,阿尔古站在卡洛斯上,迄今为止这么好,但我希望当阿尔古从卡洛斯上来的手机和地址数据也上升.. 如果有人可以帮忙,谢谢

回答

0

如果您希望ColC也被排序,那么也应将其包含在排序范围内。看到这个。

变化

Range("$A$2:$A" & LR).Sort Key1:=Range("$A$2")

Range("$A$2:$C" & LR).Sort Key1:=Range("$A$2")

编辑

你的代码就可以正确地重新写为

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    Application.EnableEvents = False 

    '~~> For xl2007+ use .CountLarge 
    If Target.Cells.CountLarge > 1 Then Exit Sub 
    '~~> For xl2003 use .Count 
    'If Target.Cells.Count > 1 Then Exit Sub 

    Dim LR As Long 

    If Application.WorksheetFunction.CountA(Cells) <> 0 Then 
     LR = Cells.Find(What:="*", _ 
         After:=Range("A1"), _ 
         Lookat:=xlPart, _ 
         LookIn:=xlFormulas, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlPrevious, _ 
         MatchCase:=False).Row 
    Else 
     LR = 1 
    End If 

    Range("$A$2:$C" & LR).Sort Key1:=Range("$A$2") 

Letscontinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume Letscontinue 
End Sub 

截图

enter image description here

+0

我试过了,但会是只有“名”选项 –

+0

据测试,它为我工作...更新我的帖子 –

+0

的等待,我会发布回复一些打印 –