大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAのスピンボタンの使い方についてご紹介します。セルから日付を取得してスピンボタンで日付を変更後にセルへ入力するという方法が実践で使えるかと思います。

はじめに

この記事ではユーザーフォームのスピンボタンの使い方と日付を操作する方法をご紹介します。

私がスピンボタンを使う場合はセルから値を取得して日付を修正した後にセルへ入力する。といった使い方をしたりします。

スピンボタンのアップ・ダウンをクリックするだけで日付が変更できるので便利かと思います。

この記事で紹介する内容

  • スピンボタンの使い方
  • スピンボタンで日付の操作

目次から見たい項目へ移動すると便利ですよ。

目次

Excel VBAでスピンボタンを使う

Excel VBAでスピンボタンを使う方法を説明します。

スピンボタンとはこのようなものです。

ユーザーフォームのスピンボタン

ユーザーフォームのスピンボタン

アップとダウンの動作をすることができます。

ツールボックスから挿入することができます。

ツールボックス

ツールボックス

今回はユーザーフォームのテキストボックスと組み合わせて使ってみます。

スピンボタンのアップ

スピンボタンのアップが押された際にテキストボックスの数字を1つ増やすVBAコードです。

『ユーザーフォームの中のコード』に記載します。

'アップ
Private Sub SpinButton1_SpinUp()
    '1つ増やす
    TextBox1.Value = TextBox1.Value + 1
End Sub

アップがクリックされた場合に実行するコードは『Private Sub SpinButton1_SpinUp()』です。

この中にテキストボックスの数字を1つ増やすコードを記載しています。

テキストボックスの中に数字『0』を入力しておきます。

実行前

スピンボタンのアップの実行前

スピンボタンのアップを実行してみます。

スピンボタンのアップをクリック

スピンボタンのアップを実行した結果

テキストボックスの中の数字が『1』になりました。

スピンボタンのダウン

スピンボタンのダウンがクリックされた場合にテキストボックスの数字を1つ減らすVBAコードを作成してみます。

『ユーザーフォームの中のコード』に記載します。

'ダウン
Private Sub SpinButton1_SpinDown()
    '1つ減らす
    TextBox1.Value = TextBox1.Value - 1
End Sub

スピンボタンのダウンが押された際に実行するコードは、『Private Sub SpinButton1_SpinDown()』になります。

このコードの中に数字を1つ減らすコードを記載しています。

テキストボックスの中に『0』を入力しておきます。

実行前

スピンボタンのダウンの実行前

スピンボタンのダウンをクリックしてみます。

スピンボタンのダウンをクリック

スピンボタンのダウンの実行結果

テキストボックスの中の数字が『-1』になりました。

スピンボタンの基本的な使い方はアップもしくはダウンがクリックした際にVBAコードを実行する。という感じです。

スピンボタンで日付を操作

スピンボタンで日付を操作するVBAコードを紹介します。

『日』を進める・戻す

まずは日付の『日』を操作するVBAコードを紹介します。

日付の操作には『DateAdd』というコードを使います。これで日付を進ませたり戻したりができます。

日付の『日』を操作するVBAコードです。『ユーザーフォームの中のコード』に記載します。

'アップ
Private Sub SpinButton1_SpinUp()
    '1日進める
    TextBox1.Value = DateAdd("d", 1, TextBox1.Value)
End Sub

'ダウン
Private Sub SpinButton1_SpinDown()
    '1日戻す
    TextBox1.Value = DateAdd("d", -1, TextBox1.Value)
End Sub

日付を1日だけ進めるのは、『DateAdd("d", 1, "2020/1/1")』でできます。

日付を1日だけ戻すのは、『DateAdd("d", -1, "2020/1/1")』でできます。

なのでスピンボタンのアップで1日進めたい場合はアップがクリックされた場合に実行するコード『Private Sub SpinButton1_SpinUp()』の中に記載します。

同じようにスピンボタンのダウンで1日戻したい場合は『Private Sub SpinButton1_SpinDown()』の中に1日戻すコードを記載します。

VBAコードを実行してみます。

最初にテキストボックスの中に日付『2020/1/1』を入力しておきました。

実行前

テキストボックスの中に日付をあらかじめ入力しておく

スピンボンタンのアップをクリックしてみます。

スピンボタンのアップで1日進める

テキストボックスのアップをクリックで1日進める

日付が1日進みました。

スピンボタンのダウンをクリックしてみます。

スピンボタンのダウンで1日戻す

テキストボックスのダウンをクリックで1日戻す

日付が1日戻りました。

『月』を進める・戻す

日付を1か月進める方法と戻す方法について説明します。

同じように『DateAdd』を使います。引数が『"m"』となる点が違います。

日付の『月』を操作するVBAコードです。『ユーザーフォームの中のコード』に記載します。

'アップ
Private Sub SpinButton1_SpinUp()
    '1か月進める
    TextBox1.Value = DateAdd("m", 1, TextBox1.Value)
End Sub

'ダウン
Private Sub SpinButton1_SpinDown()
    '1か月戻す
    TextBox1.Value = DateAdd("m", -1, TextBox1.Value)
End Sub

日付の『月』を進める場合は、『DateAdd("m", 1, "2020/1/1")』とします。

日付の『月』を戻す場合は、『DateAdd("m", -1, "2020/1/1")』とします。

スピンボタンのアップとダウンの中に上記のコードを入力するという感じです。

VBAコードを実行した結果を見てみます。

最初はテキストボックスの中に日付『2020/1/1』を記載しておきました。

実行前

テキストボックスの中にあらかじめ日付を入力しておく

スピンボタンのアップをクリックしてみます。

スピンボタンのアップで1か月進める

スピンボタンで日付が1か月進む

日付が1か月進みました。

スピンボタンのダウンをクリックしてみます。

スピンボタンのダウンで1か月戻す

スピンボタンの日付が1か月戻る

日付が1か月戻りました。

『年』を進める・戻す

続いて日付を1年進める方法と戻す方法について説明します。

同じように『DateAdd』を使います。引数が『"yyyy"』となる点が違います。

日付の『年』を操作するVBAコードです。『ユーザーフォームの中のコード』に記載します。

'アップ
Private Sub SpinButton1_SpinUp()
    '1年進める
    TextBox1.Value = DateAdd("yyyy", 1, TextBox1.Value)
End Sub

'ダウン
Private Sub SpinButton1_SpinDown()
    '1年戻す
    TextBox1.Value = DateAdd("yyyy", -1, TextBox1.Value)
End Sub

日付の『年』を進める場合は、『DateAdd("yyyy", 1, "2020/1/1")』とします。

日付の『年』を戻す場合は、『DateAdd("yyyy", -1, "2020/1/1")』とします。

あとはスピンボタンのアップとダウンの中に上記のコードを入力するという感じです。

VBAコードを実行した結果を見てみます。

最初はテキストボックスの中に日付『2020/1/1』を記載しておきました。

実行前

テキストボックスの中にあらかじめ日付を入力しておく

スピンボタンのアップをクリックしてみます。

スピンボタンのアップで1年進める

スピンボタンで日付が1年進む

日付が1年進みました。

スピンボタンのダウンをクリックしてみます。

スピンボタンのダウンで1年戻す

スピンボタンの日付が1年戻る

日付が1年戻りました。

これでスピンボタンで日付の操作ができます。

少し応用偏

少し応用でセルから日付を取得して年月日を変更してセルに入力する。というVBAコードを作ってみました。

ユーザーフォームでスピンボタンを使ったあと最終的にはセルへ入力などをしたい。といった場合があるかと思いますので参考になるかと思います。

日付取得+年月日を操作+セルへ入力

まずは結果から説明します。

ユーザーフォームを開いてみます。

セルから日付を取得

ユーザフォームを開く

初期値設定でセルからテキストボックスに日付が入力されています。

年月日を変更してみます。

スピンボタンで年月日を変更

年月日を変更

1年1か月と1日進めてみました。

変更した日付をセルへ入力します。

ボタンで日付をセルへ入力

変更した日付をセルへ入力する

セルA1へ日付が入力されました。

おそらくスピンボタンで日付を操作する場合はボタンのクリックで入力する場合が多いかと思います。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'初期値の設定
Private Sub UserForm_Initialize()
    'セルから日付を取得
    TextBox1.Text = ActiveSheet.Cells(1, 1)
End Sub

'アップ
Private Sub SpinButton1_SpinUp()
    '1日進める
    TextBox1.Text = DateAdd("d", 1, TextBox1.Text)
End Sub

'ダウン
Private Sub SpinButton1_SpinDown()
    '1日戻す
    TextBox1.Text = DateAdd("d", -1, TextBox1.Text)
End Sub

'アップ
Private Sub SpinButton2_SpinUp()
    '1か月進める
    TextBox1.Text = DateAdd("m", 1, TextBox1.Text)
End Sub

'ダウン
Private Sub SpinButton2_SpinDown()
    '1か月戻す
    TextBox1.Text = DateAdd("m", -1, TextBox1.Text)
End Sub

'アップ
Private Sub SpinButton3_SpinUp()
    '1年進める
    TextBox1.Text = DateAdd("yyyy", 1, TextBox1.Text)
End Sub

'ダウン
Private Sub SpinButton3_SpinDown()
    '1年戻す
    TextBox1.Text = DateAdd("yyyy", -1, TextBox1.Text)
End Sub

'ボタンクリック
Private Sub CommandButton1_Click()
    'セルへ日付入力
    ActiveSheet.Cells(1, 1) = TextBox1.Text
End Sub

最初に初期設定『Private Sub UserForm_Initialize()』でセルから日付を取得しています。

スピルボタンで年月日の変更するVBAコードを記載しています。

ボタン『Private Sub CommandButton1_Click()』にテキストボックスの日付をセルへ入力するVBAコードを記載しています。

おわりに

この記事ではユーザーフォームのスピンボタンの使い方と日付を操作する方法をご紹介しました。

私がスピンボタンで日付を操作する際はセルから値を取得して年月日を修正した後にセルへ入力する。といった使い方をしたりします。

スピンボタンのアップ・ダウンをクリックするだけで日付が変更できるので便利かと思います。

ご参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す