VBA循环处理筛选数据自动生成会计分录技术咨询
实现代码
' 主控制过程,所有ID的遍历调度在这里完成 Sub GenerateAllAccountEntries() Dim societyIDs As Variant Dim i As Integer ' 在这里填写所有需要处理的society ID,每月调整仅修改这一行即可 societyIDs = Array("FR520", "FR240", "FR020") Sheets("IML").Select ' 提前选中IML表,避免重复切换 ' 遍历所有ID执行处理逻辑 For i = LBound(societyIDs) To UBound(societyIDs) Call Iml_ProcessID(societyIDs(i)) Call Iml_ProcessID_TVA(societyIDs(i)) Next i ' 处理完成后关闭筛选 Sheets("DETAIL MAG").AutoFilterMode = False End Sub ' 通用ID处理子过程,对应原有Iml_FR520逻辑 Sub Iml_ProcessID(societyID As String) 'Déclaration des variables Dim dataRange As Range Dim sumAmount As Double Dim DernLigne As Double DernLigne = Sheets("DETAIL MAG").Range("A" & Rows.Count).End(xlUp).Row + 1 'last row Set dataRange = Sheets("DETAIL MAG").Range("A1").CurrentRegion 'setting whole range of data Sheets("DETAIL MAG").AutoFilterMode = False 'turning off all filters dataRange.AutoFilter Field:=12, Criteria1:=societyID 'filtering data sumAmount = Application.WorksheetFunction.Sum(Sheets("DETAIL MAG").Range("R1:R" & DernLigne).SpecialCells(xlCellTypeVisible)) 'summing filtered data ' Variable pour trouver la dernière ligne DernLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 ' Insérer valeur societyID en A Range("A" & DernLigne).Value = societyID Range("A" & DernLigne).Interior.Color = 65535 ' Insérer Montant HT en G Range("G" & DernLigne).Value = sumAmount Range("G" & DernLigne).Interior.Color = 65535 ' Insérér valeur AQ SOLDE en I Range("I" & DernLigne).Value = "AQ SOLDE" Range("I" & DernLigne).Interior.Color = 65535 End Sub ' 通用ID的TVA处理子过程,对应原有Iml_FR520_TVA逻辑 Sub Iml_ProcessID_TVA(societyID As String) Dim dataRange As Range Dim sumTVA As Double Dim DernLigne1 As Double DernLigne1 = Sheets("DETAIL MAG").Range("A" & Rows.Count).End(xlUp).Row + 1 'last row Set dataRange = Sheets("DETAIL MAG").Range("A1").CurrentRegion 'setting whole range of data Sheets("DETAIL MAG").AutoFilterMode = False 'turning off all filters dataRange.AutoFilter Field:=12, Criteria1:=societyID 'filtering data sumTVA = Application.WorksheetFunction.Sum(Sheets("DETAIL MAG").Range("S1:S" & DernLigne1).SpecialCells(xlCellTypeVisible)) 'summing filtered data ' Variable pour trouver la dernière ligne Dim DernLigne As Double DernLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 ' Insérer Montant TVA en G Range("G" & DernLigne).Value = sumTVA ' Insérér valeur TVA FIDELITE 20% en I Range("I" & DernLigne).Value = "TVA FIDELITE 20 %" ' Insérer Montant HT en P Range("P" & DernLigne).FormulaR1C1 = "=R[-1]C[-9]" ' Insérer Montant HT en Q Range("Q" & DernLigne).FormulaR1C1 = "=RC[-1]" End Sub
使用说明
- 每月需要调整处理的society ID时,仅修改
GenerateAllAccountEntries过程中societyIDs = Array("FR520", "FR240", "FR020")这一行的数组内容即可,支持增删改任意ID - 所有原有业务规则(求和列、单元格格式、固定值填写)完全和原有代码一致,没有做任何变更
- 运行时直接执行
GenerateAllAccountEntries主过程即可自动完成所有ID的会计分录生成
内容的提问来源于stack exchange,提问作者Larow
相关产品推荐
相关产品推荐

