スポンサーリンク

Excel VBA(マクロ) シートをコピペして名前を変更する方法

Excel VBA
The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら
税金・会計の無料メルマガはじめます

Excel VBA(マクロ)を使ってシートをコピペすることができます。

今日は事例とともにそのやり方を紹介します。

スポンサーリンク

1、事例:保険料控除申告書でシートのコピペを使う

Excel で作った保険料控除申告書を使っています。

マクロ(Excel VBA + UWSC)を使った業務効率化事例 Excel 保険料控除申告書に入力したデータを自動で JDL の年末調整システムに取り込む仕組み
年末調整時に「給与所得者の保険料控除申告書兼給与所得者の配偶者特別控除申告書」(以下、保険料控除申告書と呼びます)を作成しなければなりません。 そして、保険料控除申告書の内容を税務ソフトに入力しなければなりません。 私がいる会計事務所で...
スケールメリットが大きいマクロ(Excel VBA)は手間がかかっても修正する
年末調整の時期ですね。 個人に1年間のうちに生命保険料などの支払いがあれば、保険料控除を受けることができて所得税が低くなります。 さて、雇われている従業員が保険料控除を受けるために作成する書類として ...

1枚のシートは「入力部分」と「プリントアウト部分」に分かれています。

Image(10)

「入力部分」に入力した内容が「プリントアウト部分」に反映されるようになっています。

一般の生命保険料であればこんな感じで↓

Image(11)

そして、普通にシートの印刷を行えば「プリントアウト部分」が印刷されます。

さて、年末調整を行う従業員1人1人につき上記の Excel シートへの入力を行う必要があります。元のシートがあり、それを人数分コピペして使うことになります。

以下の設定画面で全従業員の生命保険料などの金額を集計するようになっていますが、まずは保険料控除申告書を作成する従業員を指定してその人数分のシートを作成できるようになっています。

Image(12)

保険料控除申告書を作成したい従業員の欄に「Y」を付けて、「Sheet Maiking」ボタンを押せばマクロが実行して、人数分のシートが作成されます。

Image(23)

マクロの処理は色々なことをやっていますが。その一部分で「サンプル30」シートをコピペしてから、各シート名を従業員の名前(先頭に番号を付けて)に変更する過程があり、これを従業員の人数分だけ繰り返します。

Image(27)

このシートのコピペは色々なケースで使えるので便利です。

2、Excel VBA(マクロ)でシートをコピペする方法

シートをコピペして指定した名前に変更する仕組み

さて、シートをコピペして指定した名前に変更する仕組みを紹介します。

題材として、「サンプル」という名前のシートに保険料控除申告書を入れておきます。

Image(28)いう名前のシートの中に先

マクロを実行すると以下のように「シート名を入力して下さい」というメッセージが出てくるようにしてあります。

「test」と入力して「OK」を押します。

Image(25)

すると、「サンプル」シートの左側に「サンプル」シートをコピペしたものが作成され、シート名が「test」となります。

セミナー開催致します。
◆3/22、4/22 30代半ばから税理士になった体験談セミナー

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録

Image(26)

VBA コード

上記の仕組みを作るには、以下のような VBA コードとなります。

コード説明

コードを説明します。

インプットボックスに入力した内容を変数に入れる

インプットボックスを表示するためには InputBox 関数を使います。

InputBox(メッセージ)

()の中に入れるメッセージは “” で囲う必要があります。

このように↑ すると以下のようにメッセージ付きのインプットボックスが出てきます。

Image(29)

今回以下のように記述することで、インプットボックスに入力した内容を変数「Sheet_Name」に入れています。

Sheet_Name = InputBox(“シート名を入力して下さい”)

インプットボックスに「test」と入力すると、変数「Sheet_Name」に「test」という文字が入ります。

キャンセルボタンまたは×ボタンを押した場合の処理

次に、インプットボックスでキャンセルまたは×ボタンを押した場合にコードを終了する処理を入れています。

インプットボックスのキャンセルを押した場合、×ボタンを押した場合には

インプットボックスに “”(空白)が入力されたと認識されます(何も入力せずに「OK」を押した場合も同じように認識)。

そしてその場合に、コードを終了するために If 文を使っています。

変数「Sheet_Name」が空白(””)の場合、プロシージャから出よ!、つまりコードを終了せよ!

という命令を Exit Sub を使って行っています。

「サンプル」シートのコピペ

さて、次に今回お話ししたかったシートのコピペを行う部分です。

Copy メソッドを使っています。

シートをコピペする場合、Copy メソッドは以下のように使います。

Worksheetオブジェクト1.Copy Before(After):=Worksheetオブジェクト2

「Worksheetオブジェクト1」を「Worksheetオブジェクト2」の左側(右側)にコピペせよ

という命令になります。

Copy のすぐ後に記述する Before、After はその後に記述する「Worksheetオブジェクト2」の左側、右側という意味になります。

・Before が左側
・After が右側

今回の以下

これ↑ により、「サンプル」シートを「サンプル」シートの左側にコピペせよ

という意味になります。

「サンプル」シートの左側に同じ中身のシートを作るということですね。

シート名を変更

さて、上記でコピペした「サンプル」シートの名前を変更します。

以下のように記述します。

コピペした直後は、新しく作られたシートがアクティブ(操作対象)となっているので、その名前という意味で

ActiveSheet.Name

と記述します。

そして、「ActiveSheet.Name」を最初にインプットボックスに入力した名前にするために「ActiveSheet.Name = Sheet_Name」と記述します。

3、まとめ

以上で、Excel VBA(マクロ)を使ってシートをコピペする方法についてお話ししました。

シートのコピペは色々と便利なので、是非活用してみて下さい。

編集後記

昨日(1/3)は夕方から実家で食事会でした。

おせち料理、すき焼きなどたくさん食べすぎ今日はお腹が重いです。

もう間もなく始動なので、生活を元に戻さないといけないですね。

セミナー開催致します。
◆3/22、4/22 30代半ばから税理士になった体験談セミナー

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録