【VBA】入出金明細の社会保険の消込仕訳 自動作成

社会保険を支払った時に入出金明細に特定の文字列が表記されます。銀行によって異なるので確認をしてください。この例では、KOUSEIHOKEN という表記があった場合を想定します。

一致したら行を挿入して、

VBAで 最終行までループして J列 に KOUSEIHOKEN と言う文字列に一致したら1行を挿入 会社者負担分 と言う文字に変更してしてください。そして 挿入行のA列には 挿入 という文字を代入して J列に 従業員負担分 という文字にしてください。

さらに追加で 最終列がLastColumn と言う変数で 元の行のLastColumn-9列に 未払金‐社会保険 挿入行に 預り金-社会保険 と入力してください。そして 元の行のLastColumn-1列に 〇月度社会保険料 会社負担分 給与分 挿入行に 〇月度社会保険料 従業員負担分 給与分 と入力するようにVBAを修正お願い致します

元の行の U列をコピーして 挿入行のU列に貼り付けるようにする処理を追加してください。

Sub InsertRowChangeValue()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long
    Dim lastColumn As Long
    Dim i As Long

    ' ワークシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適切なものに変更してください

    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row

    ' 最終列を取得
    lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' J列をループ
    For i = lastRow To 1 Step -1
        ' "KOUSEIHOUKEN"が一部一致する場合
        If InStr(ws.Cells(i, "J").Value, "KOUSEIHOUKEN") > 0 Then
            ' 1行挿入
            ws.Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            ' A列に"挿入"と入力
            ws.Cells(i + 1, "A").Value = "挿入"
            ' J列に"従業員負担分"と入力
            ws.Cells(i + 1, "J").Value = "従業員負担分"
            ' 元の行のJ列の値を"会社者負担分"に変更
            ws.Cells(i, "J").Value = "会社者負担分"
            ' 元の行のLastColumn-5列に"未払金‐社会保険"を入力
            ws.Cells(i, lastColumn - 5).Value = "未払金‐社会保険"
            ' 挿入行のLastColumn-5列に"預り金-社会保険"を入力
            ws.Cells(i + 1, lastColumn - 5).Value = "預り金-社会保険"
            ' 元の行のLastColumn-1列に"〇月度社会保険料 会社負担分 給与分"を入力
            ws.Cells(i, lastColumn - 1).Value = "〇月度社会保険料 会社負担分 給与分"
            ' 挿入行のLastColumn-1列に"〇月度社会保険料 従業員負担分 給与分"を入力
            ws.Cells(i + 1, lastColumn - 1).Value = "〇月度社会保険料 従業員負担分 給与分"
            ' 元の行のU列をコピー
            ws.Cells(i, "U").Copy
            ' 挿入行のU列に貼り付け
            ws.Cells(i + 1, "U").PasteSpecial Paste:=xlPasteValues
        End If
    Next i
    Application.CutCopyMode = False
End Sub

タイトルとURLをコピーしました