確定申告の作成が一段落したのでデータを保存し、昨日より2017年の女房の医療費★をまとめて入力している...
- 女房は長年 手書きの家計簿を付けているので、それを尊重。但し、医療費は、確定申告で「医療費控除」申請をするので、領収書は保存してもらうようにしている。
- ファイル名は「医療費R★_2017.xlsx」とし、シート見出し「2017-01」に1年分を入力する。
- 領収書は病院(医院)別になっているので、
- 日付は、2行目のみ年月日で入力、3行目以降は Ctrl+D でコピーし、数式バーで月日を修正した。
- 費目は全て同じになるので、Ctrl+D
- 備考も殆ど Ctrl+D で済む。
自分に質問してみた...
日付を Ctrl+D でコピーしたついでに、「費目」,「カード」,「備考」もコピーできると、入力の手間が省けるのですが‥‥
- 例えば、スーパーで焼酎とビールをカード払い買ったとします。
- 品名は「焼酎&ビール」とし合計金額を入力していましたが、
1行目の品名は“〇×△焼酎”、2行目は“●×▲ビール”で入力するのが簡単になります。
- ショートカットキーによるマクロの実行(ExcelやAccessの学習ならOfficePro)
‥‥ またショートカットキーは「Ctrlキー」だけではなく「Ctrlキー+Shiftキー」と何か1つの文字という組み合わせにすることもできます。「Shiftキー」も同時に押す必要がある場合には、登録する1文字を入力する時に「Shiftキー」を押しながら文字を入力して下さい。すると次の画面の用に自動的に「Ctrl+Shift」に画面表示が変わります。
作成済みのマクロにショートカットキーを設定する
既に記録されたマクロに後からショートカットキーを設定したり、変更したりすることも可能です。メニューの「ツール」から「マクロ」を選択し、さらに「マクロ」をクリックして下さい。
マクロの一覧画面が表示されますので、ショートカットキーを設定したいマクロを選択してから「オプション」ボタンをクリックして下さい。
マクロのショートカットキーの設定と説明の編集が行える画面が表示されます。
早速マクロ(下記)を作成し、ショートカットキーとして Ctrl+Shift+D を割り当てた。
要は日付入力時 Ctrl+D の代わりに Ctrl+Shift+D すると、「日付」「品名」「費目」「カード」「備考」をコピーするもの。
只今、検証を兼ねて、医療費★ を1年分 入力している...
◆作成したマクロ(VBA)
'カーソルが「日付」にある時、直上の行の内容をコピーする。(Ctrl+D の拡大機能) Sub 直上のセル内容をコピーする() Dim mbTitle As String Dim actRow As Long, actCol As Long Dim lastRow As Long mbTitle = "直上のセル内容をコピーする/" & getMacroTitle() '日付の最終行をセットする。 lastRow = Cells(Rows.Count, 2).End(xlUp).Row 'アクティブセルのアドレス actRow = Selection.Row actCol = Selection.Column If (actRow = 2) Or (actCol <> 2) Or (actRow <> lastRow + 1) Or (Cells(actRow, actCol) <> "") Then MsgBox "この機能は使えません。" & vbCrLf & vbCrLf _ & " 1)2行目では使えません。" & vbCrLf _ & " 2)2列目以外では使えません。" & vbCrLf _ & " 3)直上のセルにデータが入力してある必要があります。" & vbCrLf _ & " 4)アクティブセルは空白である必要があります。" _ , vbCritical, mbTitle Exit Sub End If 'Ctrl+D(同上)を行う。 Cells(actRow, 2).FillDown '日付 Cells(actRow, 3).FillDown '品名 Cells(actRow, 4).FillDown '費目 Cells(actRow, 5).FillDown 'カード Cells(actRow, get列番号("備考")).FillDown '備考 End Sub
'概要:引数の項目名の列番号を返す。 Function get列番号(arg項目名 As String) As Long Dim mbTitle As String Dim c As Long, lastColumn As Long mbTitle = "get列番号/" & ThisWorkbook.Name get列番号 = 0 If arg項目名 = "" Then Exit Function lastColumn = Cells(1, Columns.Count).End(xlToRight).Column For c = 1 To lastColumn If Cells(1, c) = arg項目名 Then get列番号 = c: Exit For Next End Function