很简单的VBA代码,弱小的我不明白,需要解读

问题描述:

img

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address=SNS1Then
         lr= Sheetl.Cells(Rows.Count,A).End(x1Up).Row
         With Sheetl
             If ActiveSheet.AutoFilterMode =True Then Cells.AutoFilter
             Cells.AutoFilter
             Cells.AutoFilter Field:=9,Criterial:=N1]
             Setsht=Sheets(分包商月度结算”)
             Set Rng =Union(sht.Range(B6:F999),sht.Range(16:L999”))
             Rng.ClearContents
              Range(A2:A”&lr).Copy sht.Range(F6
                               1r).Copy sht.Range Range(B2:B” B6
                            &1r).Copy Range(”c2:c” sht.Range C6
                              1r).Copy Range(D2:D” sht.Range D6
                             &1r).Copy sht.Range Range(E2:E” E6
                              1r).Copy sht.Range Range(F2:F” 皖6
                             &1r).Copy Range(H2:H” sht.Range K6
                             &1r).Copy RangeC N2:N° sht.Range I6
              Range(P2:P”&lr).Copy sht.Range(J6”)
              Cells.AutoFilter
         End With
    End If
    N1].Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 定义函数,函数的输入参数是一个range对象
If Target.Address=$N$1Then 如果传入range对象的地址属性时“N1”则执行下面
lr= Sheetl.Cells(Rows.Count,A).End(x1Up).Row 将表的总行数赋值到lr
With Sheet1 表示后面到end with的语句都是在sheet1基础上的语句
If ActiveSheet.AutoFilterMode =True Then Cells.AutoFilter
Cells.AutoFilter
Cells.AutoFilter Field:=9,Criterial:=N1] 如果活动表的自动筛选功能开,则设置自动筛选的属性
Set sht=Sheets(分包商月度结算”) 设置sht为“分包商月度结算”表
Set Rng =Union(sht.Range(B6:F999),sht.Range(16:L999”)) 合并sht表内的区域B6:F999和I6:F999
Rng.ClearContents 清除合并后的格的内容

Range(A2:A”&lr).Copy sht.Range(F6) 把A列从第二行到最后一行复制到sht自F6开始的单元格

下面那几行也是相似的意思

【N1].Select 选中N1 使其为选中状态