

最新記事 by 松井 元(まつい はじめ) (全て見る)
- 人物画像の背景を消す AI 加工サービス Remove Image Background が良さそう! - 2019年2月15日
- 事業主勘定の使い方、現金残高を合わせる場合・現金勘定を使わないようにする場合 - 2019年2月14日
- 不動産所得がある人の確定申告 - 2019年2月13日
- 初の租税教室を終えて、教える仕事は難しいけど続けたい! - 2019年2月12日
- 【初心者向け】Excel VBA(マクロ)を使えるようにするまでの設定 - 2019年2月8日
Excel VBA(マクロ)を使ってシートをコピペすることができます。
今日は事例とともにそのやり方を紹介します。
1、事例:保険料控除申告書でシートのコピペを使う
Excel で作った保険料控除申告書を使っています。






1枚のシートは「入力部分」と「プリントアウト部分」に分かれています。
「入力部分」に入力した内容が「プリントアウト部分」に反映されるようになっています。
一般の生命保険料であればこんな感じで↓
そして、普通にシートの印刷を行えば「プリントアウト部分」が印刷されます。
さて、年末調整を行う従業員1人1人につき上記の Excel シートへの入力を行う必要があります。元のシートがあり、それを人数分コピペして使うことになります。
以下の設定画面で全従業員の生命保険料などの金額を集計するようになっていますが、まずは保険料控除申告書を作成する従業員を指定してその人数分のシートを作成できるようになっています。
保険料控除申告書を作成したい従業員の欄に「Y」を付けて、「Sheet Maiking」ボタンを押せばマクロが実行して、人数分のシートが作成されます。
マクロの処理は色々なことをやっていますが。その一部分で「サンプル30」シートをコピペしてから、各シート名を従業員の名前(先頭に番号を付けて)に変更する過程があり、これを従業員の人数分だけ繰り返します。
このシートのコピペは色々なケースで使えるので便利です。
2、Excel VBA(マクロ)でシートをコピペする方法
シートをコピペして指定した名前に変更する仕組み
さて、シートをコピペして指定した名前に変更する仕組みを紹介します。
題材として、「サンプル」という名前のシートに保険料控除申告書を入れておきます。
マクロを実行すると以下のように「シート名を入力して下さい」というメッセージが出てくるようにしてあります。
「test」と入力して「OK」を押します。
すると、「サンプル」シートの左側に「サンプル」シートをコピペしたものが作成され、シート名が「test」となります。
◆3/22、4/22 30代半ばから税理士になった体験談セミナー
お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)
税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録
VBA コード
上記の仕組みを作るには、以下のような VBA コードとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SubSheet_Copy() DimSheet_NameAsString '入力' Sheet_Name=InputBox("シート名を入力して下さい") '「キャンセルボタン」または「×ボタン」を押した場合' IfSheet_Name=""Then ExitSub Else EndIf 'シートのコピー' Worksheets("サンプル").CopyBefore:=Worksheets("サンプル") 'シートの名前変更' ActiveSheet.Name=Sheet_Name EndSub |
コード説明
コードを説明します。
インプットボックスに入力した内容を変数に入れる
インプットボックスを表示するためには InputBox 関数を使います。
()の中に入れるメッセージは “” で囲う必要があります。
1 | InputBox("シート名を入力して下さい") |
このように↑ すると以下のようにメッセージ付きのインプットボックスが出てきます。
今回以下のように記述することで、インプットボックスに入力した内容を変数「Sheet_Name」に入れています。
Sheet_Name = InputBox(“シート名を入力して下さい”)
インプットボックスに「test」と入力すると、変数「Sheet_Name」に「test」という文字が入ります。
キャンセルボタンまたは×ボタンを押した場合の処理
次に、インプットボックスでキャンセルまたは×ボタンを押した場合にコードを終了する処理を入れています。
1 2 3 4 | IfSheet_Name=""Then ExitSub Else EndIf |
インプットボックスのキャンセルを押した場合、×ボタンを押した場合には
インプットボックスに “”(空白)が入力されたと認識されます(何も入力せずに「OK」を押した場合も同じように認識)。
そしてその場合に、コードを終了するために If 文を使っています。
変数「Sheet_Name」が空白(””)の場合、プロシージャから出よ!、つまりコードを終了せよ!
という命令を Exit Sub を使って行っています。
「サンプル」シートのコピペ
さて、次に今回お話ししたかったシートのコピペを行う部分です。
Copy メソッドを使っています。
シートをコピペする場合、Copy メソッドは以下のように使います。
「Worksheetオブジェクト1」を「Worksheetオブジェクト2」の左側(右側)にコピペせよ
という命令になります。
Copy のすぐ後に記述する Before、After はその後に記述する「Worksheetオブジェクト2」の左側、右側という意味になります。
・Before が左側
・After が右側
今回の以下
1 | Worksheets("サンプル").CopyBefore:=Worksheets("サンプル") |
これ↑ により、「サンプル」シートを「サンプル」シートの左側にコピペせよ
という意味になります。
「サンプル」シートの左側に同じ中身のシートを作るということですね。
シート名を変更
さて、上記でコピペした「サンプル」シートの名前を変更します。
以下のように記述します。
1 | ActiveSheet.Name=Sheet_Name |
コピペした直後は、新しく作られたシートがアクティブ(操作対象)となっているので、その名前という意味で
ActiveSheet.Name
と記述します。
そして、「ActiveSheet.Name」を最初にインプットボックスに入力した名前にするために「ActiveSheet.Name = Sheet_Name」と記述します。
3、まとめ
以上で、Excel VBA(マクロ)を使ってシートをコピペする方法についてお話ししました。
シートのコピペは色々と便利なので、是非活用してみて下さい。
編集後記
昨日(1/3)は夕方から実家で食事会でした。
おせち料理、すき焼きなどたくさん食べすぎ今日はお腹が重いです。
もう間もなく始動なので、生活を元に戻さないといけないですね。
◆3/22、4/22 30代半ばから税理士になった体験談セミナー
お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)
税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録