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

img

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 使其为选中状态