「データスタンプVBAソフト」をエクセルVBAで作る

stampboxeyecatch2

同じデータを各セルに簡単に入力できる「データスタンプVBAソフト」です。ユーザーフォームを使い、コードの行数もわずかで作ることが出来ます。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、「データスタンプVBAソフト」のVBAコードの説明を行います。

簡単なコードですので、すぐに出来てしまうと思います。

VBAあまりに馴染みのない方も、一度チャレンジしてみてください。

どんなソフトかというのは、こちら↓でご覧いただけます。

stampboxeyecatch1 1クリック!エクセルVBAで同一データを複数セルに簡単入力

「データスタンプVBAソフト」はこれです

datastampp019
datastamp001a

ソフトの作成については

エディタのプロジェクトエクスプローラーのところで言うと、矢印の部分にVBAコードを記述します。

datastamp009a

VBAでソフトを組み立てる

datastampp020

標準モジュールに記述する

標準モジュールは「DStamp」という名前にしています。

  • シート上で選択したセルに、ユーザーフォーム「StampBox」で入力したデータを挿入するコード
  • ユーザーフォーム「StampBox」の4方向の方向キーの動作を規定するコード

を記述します。

プロシージャーで使う変数を定義します。

vbaopexplieyecatch Option Explicitとは何、必要? VBA記述で不注意なエラーを防止する
VBA
Option Explicit

    Private Acell As Range
VBA
Sub アクティブセルセット()
    ThisWorkbook.Activate
    Set Acell = ActiveCell
End Sub

アクティブセルにデータを挿入します。

ユーザーフォームへ入力したデータを代入します。

vbacalleyecatch 部品化プロシージャーでCallステートメントは必須
VBA
Sub データスタンプ()
        Call DStamp.アクティブセルセット
        Acell.Value = StampBox.挿入data.Value
End Sub

上ボタンでセルを移動します。

最上部にあるときはコードを実行しません。

「Offset」の使い方については、

vbaoffseteyecatch Offsetプロパティは指定範囲を移動させる

を参考にしてください。

VBA
Sub 上移動()
        Call DStamp.アクティブセルセット
        If Acell.Row = 1 Then Exit Sub
        Acell.Offset(-1, 0).Select
End Sub

下ボタンでセルを移動します。

最下部にあるときはコードを実行しません。

VBA
Sub 下移動()
        Call DStamp.アクティブセルセット
        If Acell.Row = Rows.Count Then Exit Sub
        Acell.Offset(1, 0).Select
End Sub

左ボタンでセルを移動します。

最左部にあるときはコードを実行しません。

VBA
Sub 左移動()
        Call DStamp.アクティブセルセット
        If Acell.Column = 1 Then Exit Sub
        Acell.Offset(0, -1).Select
End Sub

右ボタンでセルを移動します。

最右部にあるときはコードを実行しません。

VBA
Sub 右移動()
        Call DStamp.アクティブセルセット
        If Acell.Column = Columns.Count Then Exit Sub
        Acell.Offset(0, 1).Select
End Sub

ユーザーフォームモジュールに記述する

ユーザーフォーム「StampBox」にオブジェクトのデザインとコードを記述します。

オブジェクトウインドとプロパティ

ユーザーフォーム「StampBox」のプロパティ

datastamp012_1a

テキストボックス「挿入data」のプロパティ

datastamp012_2a

コマンドボタンのプロパティ

datastamp012_3a

ユーザーフォームモジュールに記述

「Stamp」ボタンを押すと

DStampモジュールの「データスタンプ」プロシージャーを実行します。

VBA
Private Sub Stamp実行_Click()
        Call DStamp.データスタンプ
End Sub

「CLEAR」ボタンを押すと

VBA
Private Sub データクリア_Click()
        挿入data.Value = ""
End Sub

「右矢印」ボタンを押すと

DStampモジュールの「右移動」プロシージャーを実行します。

HTML
Private Sub 右矢印_Click()
        Call DStamp.右移動
End Sub

「下矢印」ボタンを押すと

DStampモジュールの「下移動」プロシージャーを実行します。

VBA
Private Sub 下矢印_Click()
        Call DStamp.下移動
End Sub

「左矢印」ボタンを押すと

DStampモジュールの「左移動」プロシージャーを実行します。

VBA
Private Sub 左矢印_Click()
        Call DStamp.左移動
End Sub

「上矢印」ボタンを押すと

DStampモジュールの「上移動」プロシージャーを実行します。

VBA
Private Sub 上矢印_Click()
        Call DStamp.上移動
End Sub

シートモジュールに記述する

シートモジュールには、シートを開いた時のイベントを記述します。

VBA
Private Sub Worksheet_Activate()
        StampBox.Show vbModeless
End Sub

このコードは、イベントを起こしたい(シートを開いたときに発生させたい)シートのモジュールに記述します。

ブックモジュールに記述する

BOOKを開いた時のイベントを記述します。BOOKを起動したときは最初から表示されるようにしています。

ユーザーフォームが表示されるイベントコードを記述します。

VBA
Private Sub Workbook_Open()
        StampBox.Show vbModeless
End Sub

 データスタンプVBA 作り方のまとめ

datastampp021

このように短いVBAコードでも ”ちょっと便利物” なんか作ったりすることが出来ます。

ほかにも例えば ”印刷ボタン” だけのユーザーフォームで、そのシートをプリントするとか ”CLEAR” ボタンで、あるエリアを消去するとか。

特に、今まであまりVBAに馴染みの無かった人は、このような簡単な実用的なところから触っていくのもアリだと思います。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。