
Photo by
dongmu
【2025年地方公務員DX】コピペで使えるExcelマクロ!第3回:Excelの自動化で残業0時間「おくやみ窓口を実現させる」
Excelを使った業務効率化を提案します!
引き続き、全国の地方自治体で流行のDX「おくやみ窓口」のツールについて紹介します。
おくやみ窓口とは・・・
死亡した際の手続きをワンストップで行うサービスのことです。
前回(第2回)はこちら
それではここからが本題です!
【3 手続き判定】
この画面では、亡くなった方がやるべき手続きに〇が付くので、一目でわかるようになっています。

カーソルを手続き名に合わせると色が付きます。
そのままダブルクリックで、申請書作成のページに飛びます。

ここでは国民健康保険の葬祭日を例にします。
この画面では、職員が「申請者」と「振込口座」を、相続人の方に聞き取りながら、プルダウンで選択します。

プルダウンの選択肢の文字を大きくて見やすくしたのが、こだわりポイントです!笑

選択すると、基本情報のページで事前に入力した内容が申請書(請求書)に反映されます。
印刷ボタンで印刷し、署名してもらいます。
(押印のみで良い自治体の場合は、氏名があらかじめ印字されるようなチェックボックスを作ることもできます。)
戻るボタンで、最初の手続き判定画面に戻ります。
これを各手続きごとに行い、申請書を作成していきます。
実際の動きは動画ファイルを貼りますのでご覧ください。
マクロVBAは次のとおりです!
手続きの判定は、別シートに国民健康保険を事由:死亡で喪失した方の一覧をCSVで貼り付け、宛名コードをキーにしてVLOOKUPで判定しています。
国民健康保険を事由:死亡で喪失した方の一覧CSVは、各自治体でお使いのシステムでCSV抽出が出来ます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Me.Range("D13:X13")) Is Nothing Then '国保 葬祭費
Worksheets("国保").Activate
ActiveWindow.Zoom = 70
Worksheets("国保").Cells(1, 1).Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rowNum As Long
Dim rowNum2 As Long
Dim ws As Worksheet
Dim targetRange As Range
Dim targetRange2 As Range
Set ws = Me ' 現在のワークシートを参照
' D11からX20の範囲を対象
Set targetRange = ws.Range("D11:X20")
Set targetRange2 = ws.Range("Z11:AT20")
'******1******
' クリックされたセルがD11からX20の範囲内であるかチェック
If Not Intersect(Target, targetRange) Is Nothing Then
rowNum = Target.Row ' クリックしたセルの行番号を取得
ws.Range("D11:AT20").Interior.ColorIndex = xlNone ' 色をリセット
ws.Range("D11:AT20").Font.Color = RGB(0, 0, 0) '文字の色を黒に
' クリックされた行のD列からX列までを水色に変更
ws.Range("D" & rowNum & ":X" & rowNum).Interior.Color = RGB(180, 198, 231) ' 水色に変更
ws.Range("D" & rowNum & ":X" & rowNum).Font.Color = RGB(68, 114, 196) '文字の色を青に
Else
ws.Range("D11:AT20").Interior.ColorIndex = xlNone ' 色をリセット
ws.Range("D11:AT20").Font.Color = RGB(0, 0, 0) '文字の色を黒に
End If
'******2******
' クリックされたセルがZ11からAT20の範囲内であるかチェック
If Not Intersect(Target, targetRange2) Is Nothing Then
rowNum2 = Target.Row ' クリックしたセルの行番号を取得
ws.Range("D11:AT20").Interior.ColorIndex = xlNone ' 色をリセット
ws.Range("D11:AT20").Font.Color = RGB(0, 0, 0) '文字の色を黒に
' クリックされた行のZ列からZT列までを水色に変更
ws.Range("Z" & rowNum2 & ":AT" & rowNum2).Interior.Color = RGB(180, 198, 231) ' 水色に変更
ws.Range("Z" & rowNum2 & ":AT" & rowNum2).Font.Color = RGB(68, 114, 196) '文字の色を青に
End If
End Sub
次は、予約についてです!
ここまでご覧いただきありがとうございました。