以前の投稿で、家計簿アプリとして最低限の機能を持たせることができました。
(その6までをご確認いただいていない方は、まずは下記まとめをご確認ください。)
ただ、これは本当に最低限の機能しかなく、勘定科目も『固定費』と『変動費』しかないので、
もっと細かく、例えば
●毎月の食費が支出のどのぐらいを占めているのか確認したい
●夏と冬で光熱費がどのぐらい変わっていっているのか見える化したい
●節約のため娯楽費を減らそうと思っているが、そもそも娯楽費が多いのか確認したい
●旦那のお小遣いが多い気がするので、収支に対する比率を見える化したい
といったような、各家庭に合った勘定科目を自由に追加できたり、クレジットカードや銀行の明細のデータから一括自動入力ができたり、といったような便利機能を追加していき、
このマクロのデコレーションをしていく必要があります。
ただ、これらの便利機能は少し難易度が上がるため説明が長くなってしまい、
最終的にその7~その10の4部構成ですが、それぞれがかなりのボリュームになってしまっています。
そのため、
●最終的な全体の完成形がわかりにくい!
●いろんな関数やコマンドを説明していたが、後で見返すときにどこにあるか分からない!
となるかと思いましたので、
その7~その10までのダイジェスト版を作りました。
これを見ていただければ、
・最後まで終わった後の最終完成形の家計簿アプリのイメージ
・各関数・コマンドの解説部分へのワープ
が可能になるかと思います。
各論の部分を読んでいただいた方も、これから読んでいただける方にも、
どちらにも有意義なものになるかと思いますので、是非とも読んでみてください。
【本記事の目標】
その7~その10で作った家計簿アプリ(最終版)の全体像を確認しよう
どの記事でどんな関数・コマンドを解説していたかを知ろう
最終完成品の構成
ExcelVBAの各モジュールのコード一覧
完成品のExcelファイルは、初期段階では4つのシートでできています。
- 入力:日々の収支を入力していくシート。家計簿入力のメインシート。
- 月ごとの推移:入力シートで入力・複製された毎月の集計結果をまとめたシート。
- 年ごとの推移:月ごとの推移のシートから、各年ごとの集計結果をまとめたシート。
- 事前準備リスト:ネットからダウンロードした銀行明細やクレジットカード明細の
データを使って自動入力するときに、
明細の内容と勘定科目を判定するための事前準備リスト
入力シートから毎月の家計簿を入力して各月のシートを生成していくので、
このマクロを使っていくとシートが徐々に増えていきます。
ですので、『初期段階』ではこの3つのシートのみです。
それぞれの画面は下記のような形で作ってます。
(わかりやすいように適当なデータを入れた画像になっています)
【入力】のシート
【月ごとの推移】のシート
【年ごとの推移】のシート
【事前準備リスト】のシート
また、完成品のExcelVBAマクロのモジュールは下記のような構成になっています。
モジュールは、今回は下記の4つを作っています。
- ButtonClick1:入力シートの各勘定科目ボタンで起動するマクロを集めたモジュール。
- KamokuInput:各勘定科目ボタンで起動するメインのマクロ。引数で入力する内容を変える。
- SheetCopyCode:入力シートの『シートの複製・初期化』のボタンで起動するマクロを記載。
- FileDataCopy:ダウンロードした各種明細データを使って自動入力するためのコード。
それぞれのコードを以下に書きだします。
モジュール名:ButtonClick1、プロシージャ名:色々
Option Explicit
'給料
Sub Kyuryo_1()
Call KamokuInput_1(1)
End Sub
'光熱費
Sub Konetsuhi_1()
Call KamokuInput_1(2)
End Sub
'通信費
Sub Tushinhi_1()
Call KamokuInput_1(3)
End Sub
'家賃
Sub Yatin_1()
Call KamokuInput_1(4)
End Sub
'食費
Sub Syokuhi_1()
Call KamokuInput_1(5)
End Sub
'生活費
Sub Seikatsuhi_1()
Call KamokuInput_1(6)
End Sub
'衣服代
Sub Ihukudai_1()
Call KamokuInput_1(7)
End Sub
'教育費
Sub Kyoikuhi_1()
Call KamokuInput_1(8)
End Sub
'娯楽費
Sub Gorakuhi_1()
Call KamokuInput_1(9)
End Sub
モジュール名:KamokuInput、プロシージャ名:KamokuInput_1
Option Explicit
Sub KamokuInput_1(PositionNum1 As Integer)
'リストに追加をクリック
Dim Kingaku1 As Double
Dim Syushi1 As String
Dim Kamoku1 As String
Dim Kamoku2 As String
Syushi1 = ""
Kamoku1 = ""
Kamoku2 = ""
'シート上から勘定科目を読み取る
With ThisWorkbook.ActiveSheet
Kamoku1 = .Range("I9").Offset(PositionNum1, 0).Value
Kamoku2 = .Range("J9").Offset(PositionNum1, 0).Value
If Kamoku1 = "" Then
Syushi1 = "収入"
Else
Syushi1 = "支出"
End If
End With
Kingaku1 = ThisWorkbook.ActiveSheet.Range("C3").Value
'勘定科目を1つずつ入力する場合
If Kingaku1 <> 0 Then
Dim EndRow1 As Integer
With ThisWorkbook.ActiveSheet
EndRow1 = .Cells(.Rows.Count, 2).End(xlUp).Row
EndRow1 = EndRow1 + 1
.Cells(EndRow1, 2).Value = Syushi1
.Cells(EndRow1, 3).Value = Kamoku1
.Cells(EndRow1, 4).Value = Kamoku2
.Cells(EndRow1, 5).Value = Kingaku1
End With
'自動入力できなかった欄に勘定科目を入力する場合
Else
Dim ActCol1 As Integer
Dim ActRow1 As Integer
ActCol1 = ActiveCell.Column
ActRow1 = ActiveCell.Row
If ActCol1 >= 2 And ActCol1 <= 4 Then
With ThisWorkbook.ActiveSheet
.Cells(ActRow1, 2).Value = Syushi1
.Cells(ActRow1, 3).Value = Kamoku1
.Cells(ActRow1, 4).Value = Kamoku2
End With
End If
End If
End Sub
モジュール名:SheetCopyCode、プロシージャ名:SheetCopy1
Option Explicit
Sub SheetCopy1()
'シートの複製
Dim YearInput As Integer
Dim MonthInput As Integer
With ThisWorkbook.Sheets("入力")
YearInput = .Range("M4").Value
MonthInput = .Range("O4").Value
End With
ThisWorkbook.Sheets("入力").Copy After:=ThisWorkbook.Sheets("入力")
ActiveSheet.Name = YearInput & "年" & MonthInput & "月"
ThisWorkbook.Sheets("入力").Range("B8:F10000").ClearContents
ThisWorkbook.ActiveSheet.Shapes("正方形/長方形 5").Delete
'=============毎月データの集計用コード(参照関数の入力ver) ここから=================
Dim EndRow1 As Integer
With ThisWorkbook
'『月ごとの推移』シートの最終行を確認
EndRow1 = .Sheets("月ごとの推移").Cells(.Sheets("月ごとの推移").Rows.Count, 3).End(xlUp).Row
EndRow1 = EndRow1 + 1
'=============行挿入のコード ここから=================
With .Sheets("月ごとの推移")
.Range(.Cells(EndRow1, 3), .Cells(EndRow1, 18)).Insert Shift:=xlDown
End With
'=============行挿入のコード ここまで=================
'データを貼り付けていく
.Sheets("月ごとの推移").Cells(EndRow1, 3).Value = "='" & YearInput & "年" & MonthInput & "月'!M4" '年
.Sheets("月ごとの推移").Cells(EndRow1, 4).Value = "='" & YearInput & "年" & MonthInput & "月'!O4" '月
.Sheets("月ごとの推移").Cells(EndRow1, 5).Value = YearInput & "年" & MonthInput & "月" '年/月
.Sheets("月ごとの推移").Cells(EndRow1, 6).Value = "='" & YearInput & "年" & MonthInput & "月'!K3" '収入合計
.Sheets("月ごとの推移").Cells(EndRow1, 7).Value = "='" & YearInput & "年" & MonthInput & "月'!K4" '支出合計
.Sheets("月ごとの推移").Cells(EndRow1, 8).Value = "='" & YearInput & "年" & MonthInput & "月'!K6" '固定費
.Sheets("月ごとの推移").Cells(EndRow1, 9).Value = "='" & YearInput & "年" & MonthInput & "月'!K7" '変動費
.Sheets("月ごとの推移").Cells(EndRow1, 10).Value = "='" & YearInput & "年" & MonthInput & "月'!K10" '給料
.Sheets("月ごとの推移").Cells(EndRow1, 11).Value = "='" & YearInput & "年" & MonthInput & "月'!K11" '光熱費
.Sheets("月ごとの推移").Cells(EndRow1, 12).Value = "='" & YearInput & "年" & MonthInput & "月'!K12" '通信費
.Sheets("月ごとの推移").Cells(EndRow1, 13).Value = "='" & YearInput & "年" & MonthInput & "月'!K13" '家賃
.Sheets("月ごとの推移").Cells(EndRow1, 14).Value = "='" & YearInput & "年" & MonthInput & "月'!K14" '食費
.Sheets("月ごとの推移").Cells(EndRow1, 15).Value = "='" & YearInput & "年" & MonthInput & "月'!K15" '生活費
.Sheets("月ごとの推移").Cells(EndRow1, 16).Value = "='" & YearInput & "年" & MonthInput & "月'!K16" '衣服代
.Sheets("月ごとの推移").Cells(EndRow1, 17).Value = "='" & YearInput & "年" & MonthInput & "月'!K17" '教育費
.Sheets("月ごとの推移").Cells(EndRow1, 18).Value = "='" & YearInput & "年" & MonthInput & "月'!K18" '娯楽費
End With
'=============毎月データの集計用コード(参照関数の入力ver) ここまで=================
End Sub
モジュール名:FileDataCopy、プロシージャ名:CardMeisaiCopy
Option Explicit
Sub CardMeisaiCopy()
'カード明細サンプルを貼り付けるマクロ
Dim FileName1 As String
Dim sh1 As Worksheet
Dim sh4 As Worksheet
Set sh1 = ThisWorkbook.Worksheets("入力")
Set sh4 = ThisWorkbook.Worksheets("事前準備リスト")
'配列の宣言
Dim MeisaiAry1() As Variant
Dim ResultAry1() As Variant
Dim CheckAry1() As Variant
'最終行・最終列の変数
Dim LastR1 As Integer
Dim LastC1 As Integer
'チェックリストのデータを配列に入れる
LastR1 = sh4.Cells(2, 1).End(xlDown).Row
LastC1 = sh4.Cells(2, 1).End(xlToRight).Column
CheckAry1 = sh4.Range(sh4.Cells(2, 1), sh4.Cells(LastR1, LastC1)).Value
'ファイルを開く
FileName1 = Application.GetOpenFilename
Workbooks.Open Filename:=FileName1
'明細書のデータを配列に入れる
With ActiveWorkbook.Sheets(1)
LastR1 = .Cells(2, 1).End(xlDown).Row
LastC1 = .Cells(2, 1).End(xlToRight).Column
MeisaiAry1 = .Range(.Cells(2, 1), .Cells(LastR1, LastC1)).Value
End With
'ファイルを閉じる
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
'入力シートの年・月のデータを取得する
Dim SearchYear1 As Integer
Dim SearchMonth1 As Integer
With sh1
SearchYear1 = .Range("M4").Value
SearchMonth1 = .Range("O4").Value
End With
Dim i As Integer '繰り返し用記号
Dim j As Integer '繰り返し用記号
'結果を入れるResultAry1を準備する。
'結果に入れるのは、1行目:勘定科目、2行目:金額、3行目:内容、4行目:日付、の4項目
ReDim ResultAry1(1 To 4, 1 To 1)
'明細書のデータを1行ずつ繰り返しチェックしていく
For i = LBound(MeisaiAry1, 1) To UBound(MeisaiAry1, 1)
If MeisaiAry1(i, 1) Like SearchYear1 & "." & SearchMonth1 & ".*" Then
'事前準備リストに同名の記載があるか繰り返しチェックしていく
For j = LBound(CheckAry1, 1) To UBound(CheckAry1, 1)
'「支払先」と「内容」が一致するか確認
If MeisaiAry1(i, 2) = CheckAry1(j, 1) Then
'一致した場合
'結果を入れるためにReslutAry1の列を1つ大きくする
ReDim Preserve ResultAry1(1 To 4, 1 To UBound(ResultAry1, 2) + 1)
'データを入れていく
ResultAry1(1, UBound(ResultAry1, 2) - 1) = CheckAry1(j, 2) '勘定科目
ResultAry1(2, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 3) '金額
ResultAry1(3, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 2) '内容
ResultAry1(4, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 1) '日付
Exit For
'一致しなくてCheckAry1の最後まで見終わった場合
ElseIf j = UBound(CheckAry1, 1) Then
'結果を入れるためにReslutAry1の列を1つ大きくする
ReDim Preserve ResultAry1(1 To 4, 1 To UBound(ResultAry1, 2) + 1)
'勘定科目以外のデータを入れていく
ResultAry1(2, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 3) '金額
ResultAry1(3, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 2) '内容
ResultAry1(4, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 1) '日付
Exit For
End If
Next j
End If
Next i
ResultAry1 = Application.WorksheetFunction.Transpose(ResultAry1)
'貼り付け先の最終行を探し、結果を貼り付ける
With sh1
LastR1 = .Cells(.Rows.Count, 5).End(xlUp).Row
.Range(.Cells(LastR1 + 1, 4), .Cells(LastR1 + 1 + _
(UBound(ResultAry1, 1) - LBound(ResultAry1, 1)) _
, 4 + _
(UBound(ResultAry1, 2) - LBound(ResultAry1, 2)) _
)) = ResultAry1
End With
End Sub
モジュール名:FileDataCopy、プロシージャ名:BankMeisaiCopy
Sub BankMeisaiCopy()
'銀行明細サンプルを貼り付けるマクロ
'=========事前準備===========
'各種変数の定義
Dim FileName1 As String
Dim sh1 As Worksheet
Dim sh4 As Worksheet
Set sh1 = ThisWorkbook.Worksheets("入力")
Set sh4 = ThisWorkbook.Worksheets("事前準備リスト")
Dim i As Integer '繰り返し用記号
Dim j As Integer '繰り返し用記号
Dim SearchYear1 As Integer
Dim SearchMonth1 As Integer
'最終行・最終列の変数
Dim LastR1 As Integer
Dim LastC1 As Integer
'配列の宣言
Dim MeisaiAry1() As Variant
Dim ResultAry1() As Variant
Dim CheckAry1() As Variant
Dim CheckAry2() As Variant
'チェックリストのデータを配列に入れる
With sh4
LastR1 = .Cells(2, 1).End(xlDown).Row
LastC1 = .Cells(2, 1).End(xlToRight).Column
CheckAry1 = .Range(.Cells(2, 1), .Cells(LastR1, LastC1)).Value
End With
'入力シートの年・月のデータを取得する
With sh1
SearchYear1 = .Range("M4").Value
SearchMonth1 = .Range("O4").Value
End With
'入力シートのI列・J列に記載の固定/変動と勘定科目の対応表を配列に入れる
With sh1
LastR1 = .Cells(10, 10).End(xlDown).Row
CheckAry2 = .Range(.Cells(10, 9), .Cells(LastR1, 10)).Value
End With
'=========データ取得===========
'ファイルを開く
FileName1 = Application.GetOpenFilename
Workbooks.Open Filename:=FileName1
'明細書のデータを配列に入れる
With ActiveWorkbook.Sheets(1)
LastR1 = .Cells(1, 1).End(xlDown).Row
LastC1 = .Cells(1, 1).End(xlToRight).Column
MeisaiAry1 = .Range(.Cells(2, 1), .Cells(LastR1, LastC1)).Value
End With
'ファイルを閉じる
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
'=========データの整理===========
'結果を入れるResultAry1を準備する。
'結果に入れるのは、1行目:収支、2行目:固定費/変動費、3行目:勘定科目、4行目:金額、5行目:内容、6行目:日付、の6項目
ReDim ResultAry1(1 To 6, 1 To 1)
'明細書のデータを1行ずつ繰り返しチェックしていく
For i = LBound(MeisaiAry1, 1) To UBound(MeisaiAry1, 1)
If MeisaiAry1(i, 1) Like SearchYear1 & "." & SearchMonth1 & ".*" Then
'事前準備リストに同名の記載があるか繰り返しチェックしていく
For j = LBound(CheckAry1, 1) To UBound(CheckAry1, 1)
'「支払先」と「内容」が一致するか確認
If MeisaiAry1(i, 2) = CheckAry1(j, 1) Then
'一致した場合
'結果を入れるためにReslutAry1の列を1つ大きくする
ReDim Preserve ResultAry1(1 To 6, 1 To UBound(ResultAry1, 2) + 1)
'勘定科目のデータを入れていく
ResultAry1(3, UBound(ResultAry1, 2) - 1) = CheckAry1(j, 2) '勘定科目
Exit For
'一致しなくてCheckAry1の最後まで見終わった場合
ElseIf j = UBound(CheckAry1, 1) Then
'結果を入れるためにReslutAry1の列を1つ大きくする
ReDim Preserve ResultAry1(1 To 6, 1 To UBound(ResultAry1, 2) + 1)
'勘定科目を入力しないので、何もせずに終了
Exit For
End If
Next j
'残ったデータを入力していく(内容・日付・金額)
ResultAry1(5, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 2) '内容
ResultAry1(6, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 1) '日付
'金額が、収入が3列目、支出が4列目のため、どちらの列にデータがあるか確認して入れていく。
If MeisaiAry1(i, 3) <> "" Then
ResultAry1(4, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 3) '金額
ElseIf MeisaiAry1(i, 4) <> "" Then
ResultAry1(4, UBound(ResultAry1, 2) - 1) = MeisaiAry1(i, 4) '金額
End If
'勘定科目を確認して、収支と固定費/変動費がどれかを確認する。
'勘定科目が空欄の場合はチェックしない
If ResultAry1(3, i) <> "" Then
For j = LBound(CheckAry2, 1) To UBound(CheckAry2, 1)
'「勘定科目」が一致するか確認
If ResultAry1(3, i) = CheckAry2(j, 2) Then
'一致した場合
'固定費/変動費のデータを入れていく
ResultAry1(2, UBound(ResultAry1, 2) - 1) = CheckAry2(j, 1) '勘定科目
'収支データを入れていく
If CheckAry2(j, 1) = "" Then
ResultAry1(1, UBound(ResultAry1, 2) - 1) = "収入"
Else
ResultAry1(1, UBound(ResultAry1, 2) - 1) = "支出"
End If
Exit For
End If
Next j
End If
End If
Next i
ResultAry1 = Application.WorksheetFunction.Transpose(ResultAry1)
'貼り付け先の最終行を探し、結果を貼り付ける
With sh1
LastR1 = .Cells(.Rows.Count, 5).End(xlUp).Row
.Range(.Cells(LastR1 + 1, 2), .Cells(LastR1 + 1 + _
(UBound(ResultAry1, 1) - LBound(ResultAry1, 1)) _
, 2 + _
(UBound(ResultAry1, 2) - LBound(ResultAry1, 2)) _
)) = ResultAry1
End With
End Sub
その7~その10で記載している内容
その7:勘定科目を自由に追加する
その7では、【勘定科目を自由に追加する】ためのマクロを説明しています。
その6までのマクロでは勘定科目は決まったものしか作っていなかったですが、
家計簿をつけていくと「この勘定科目もほしい~」となることが多々あります。
そのような時に、都度勘定科目を追加できるように、マクロを改造していきます。
具体的内容を箇条書きしておきます。
- 勘定科目を追加できるようにExcelシートの修正
- Excelシート修正に伴うマクロの修正
- ドロップダウンリストの追加(固定式)
- ドロップダウンリストの追加(動的、テーブルの活用)
- IF関数+OFFSET関数+MATCH関数の活用
- SUMIF関数の活用
- 各勘定科目ごとのグラフ(円グラフ、ウォーターフォールチャート)
- 「月ごとの推移」「年ごとの推移」に反映
その8:アプリっぽくボタン入力できるようにしよう
その8では【勘定科目の入力をボタンクリックだけで完結できるようにする】ためのマクロを説明しています。
これまで作ったマクロはExcelシートをベースに作っていたので、
勘定科目の入力も基本は手入力(もしくはドロップダウンリストから選択)になっていました。
ただ、スマホのアプリもそうですが、より便利なアプリほどボタン1つで入力が完了しますよね。
ですので、この家計簿アプリも同じように
ボタンクリックだけで勘定科目が入力できるように改造していきます。
具体的な内容について箇条書きしておきます。
- 複数ボタンに、似たマクロを登録する際の手順と注意点
- プロシージャ呼び出しと引数
- 引数の使い方
- Offsetの使い方(マクロ上でのOffsetの使い方)
その9:明細書から自動入力させよう
その9では【クレジットカードの明細書や銀行口座の明細書のデータをネットからダウンロードして、その内容を自動入力させる】ためのマクロを説明しています。
別ファイルからデータを読みだしてデータの処理・加工をするという、
プログラミングやExcelマクロの真骨頂ともいえる部分です。
これが出来るようになれば、数十・数百といった大量のファイルからデータを取り出して整理するという、人力だと何時間かかるか分からないような作業も、
一瞬で終わらせられるマクロを作れるようになります。
具体的な内容について箇条書きしておきます。
- マクロの流れをイメージする
- 自動化する部分と手動を残す部分を決める
- 勘定科目を判定するためのリストを準備する
- ファイルの操作「ファイルを開く」(.Open、Application.GetOpenFilename)
- アクティブ状態について
- .Copyと.Pastespecialについて
- ファイルの操作「ファイルを閉じる」(.Close、.Save、DisplayAlerts)
- OFFSET関数+MATCH関数+IFERROR関数の組み合わせ
- フィルター機能について
- マクロからオートフィルターを使う方法
- ワイルドカードについて
- オブジェクト変数(Excelシートを変数に入れる)
- For文とIf文
その10:配列を使ってより高速で動かそう
その10では【配列の使い方と、配列を使ったマクロ動作の高速化】について説明しています。
マクロの動き自体はその9で説明したものと同じ、「ダウンロードした明細書から自動入力する」マクロですが、より動きを早くするため、『配列』を使った書き方に変えています。
『配列』は、より複雑なプログラムを組む際に必須のスキルですので、
家計簿アプリの締めくくりとして説明しています。
具体的な内容について箇条書きしておきます。
- 変数について
- 配列について(イメージ、できること、メリット・デメリット)
- 配列の種類(静的配列と動的配列)
- 配列の定義(静的・動的配列の定義、動的配列の再定義(ReDim、Preserve))
- Variant型について
- 配列へのデータの受け渡し
- ダウンロードファイルのデータを配列に代入
- Excelシート上のデータを配列に代入
- 配列内のデータの処理
- 配列の拡張の制限
- 配列サイズの確認(LBound、UBound)
- WorksheetFunctionの呼び出し(TRANSPOSE関数)
- 配列の貼り付け
- 他人が作成したプログラムの解読・理解の流れ
完成!
プログラミング完全初心者向けにExcelマクロの初歩の初歩から説明していきました。
できる限り分かりやすくするためどうしても長文になってしまい、
その0~その10までの大シリーズになってしまいましたが、
全てを読んで理解していただければ、自分で好きにマクロを作れるレベルには到達していると思います。
後は実践あるのみです!
是非とも今回のように、何か題材を決めて自分なりにプログラミングをしてみて、
「こうやったら使いやすいかも」
「こういう書き方した方が、後で修正しやすくなるかも」
といった気づきを得ながら、実践からスキルアップしていっていただけたらと思います。
今回作った家計簿アプリは、ある程度形にはしていますが、
分かりやすく説明しながら作っていった関係上、ちょっと遠回しな書き方になっている部分があります。
ですので、
説明を度外視して「使いやすい」に注視して最初から作り直したらどうなるのか、
といったものを今後作ろうと思います。
それを実際に解読・理解し、自身で作られるマクロに転用していっていただけたら幸いです。
それでは~
コメント