2017-07-28 48 views
-2

我想將兩個不同的vba函數結合(運行)在一張表中。怎麼做?如何結合兩個vba代碼?

Option Explicit 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
'Updateby Extendoffice 20161123 
    Dim rgTable As Range 
    Dim rgData As Range 
    Dim xColumn As Integer 
    On Error Resume Next 
    Application.ScreenUpdating = False 
    Set rgTable = Range("mydata") 
    With rgTable 
     Set rgData = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) 
     If Not Application.Intersect(ActiveCell, rgData.Cells) Is Nothing Then 
      xColumn = ActiveCell.Column - .Column + 1 
      If ActiveSheet.AutoFilterMode = False Then 
       .AutoFilter 
      End If 
      If ActiveSheet.AutoFilter.Filters(xColumn).On = True Then 
       .AutoFilter Field:=xColumn 
      Else 
       .AutoFilter Field:=xColumn, Criteria1:=ActiveCell.Value 
      End If 
     End If 
    End With 
    Set rgData = Nothing 
    Set rgTable = Nothing 
    Application.ScreenUpdating = True 
End Sub 

Public blnToggle As Boolean 
Private Sub Worksheet_BeforeDoubleClick _ 
    (ByVal Target As Range, Cancel As Boolean) 
'Updateby Extendoffice 20161123 
    Dim LastColumn As Long, keyColumn As Long, LastRow As Long 
    Dim SortRange As Range 
    LastColumn = _ 
    Cells.Find(What:="*", After:=Range("A1"), _ 
    SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column 
    keyColumn = Target.Column 
    If keyColumn > LastColumn Then Exit Sub 
    Application.ScreenUpdating = False 
    Cancel = True 
    LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row 
    Set SortRange = Target.CurrentRegion 
    blnToggle = Not blnToggle 
    If blnToggle = True Then 
     SortRange.Sort _ 
     Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlYes 
    Else 
     SortRange.Sort _ 
     Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlYes 
    End If 
    Set SortRange = Nothing 
    Application.ScreenUpdating = True 
End Sub 

來源: https://www.extendoffice.com/documents/excel/4258-excel-click-cell-to-filter.html https://www.extendoffice.com/documents/excel/4259-excel-click-on-header-to-sort.html

+0

你到目前爲止嘗試過什麼?請發佈你的代碼。 – obgnaw

回答

1

這是你如何利用兩個功能合爲一體。假設你有Code1Code2,你想建立Code1AndCode2Together

Public Sub Code1() 
    Debug.Print "I am code 1" 
End Sub 

Public Sub Code2() 
    Debug.Print "I am code 2" 
End Sub 

你應該做的是檢查一下這些代碼正在做的和他們團結在一起。在一般情況下,它應該是這樣的:

Public Sub Code1AndCode2Together() 
    Debug.Print "I am code 1" 
    Debug.Print "I am code 2" 
End Sub 

或者這樣:

Public Sub Code1AndCode2Together() 
    Code1 
    Code2 
End Sub 

在你的情況 - 只需複製和粘貼或許根本無法工作,但它的一個良好的開端。然後嘗試瞭解代碼正在做什麼並嘗試實現它。