VBAでフォームの日付テキストボックス操作をする|DQのアイテムデータベースをAccessで作る07

VBA(Visual Basic for Applications)は覚えるととても便利です
今日紹介するVBAは1回作っておくと、今後システムを作るときに、コピペして埋め込んでいけば効率よくシステムを作ることができます。

今回説明するのはフォームに日付形式のテキストボックスを設置し、ボタンで日付を増減するVBAです。

第9回 VBAでフォームの日付テキストボックスを操作する
目次

まずは新しいフォームをつくる

フォームデザインで新規フォームを作ります

f:id:me-hige:20191222200810p:plain

フォームの名前を「伝票日付」にします

f:id:me-hige:20191222213553p:plain

フォームのプロパティシートを開き「書式」タブを次のように設定します

  • 自動中央寄せ:はい
  • レコードセレクタ:いいえ
  • 移動ボタン:いいえ
  • スクロールバー:なし
  • コントロールボックス:いいえ
f:id:me-hige:20191223095930p:plain

ツールバーのデザインを選択しコントールのからのテキストボックスをフォームに配置します

f:id:me-hige:20191222214028p:plain

テキストボックスとラベルの文字サイズを「20pt」にします

f:id:me-hige:20191222214709p:plain

文字サイズがテキストボックスより大きくて入りきっていないので、修正します

テキストボックスのサイズを調整

マウスポインタをテキストボックスの端に持っていき写真のような矢印を表示させた状態でダブルクリックをします

f:id:me-hige:20191222215652j:plain

テキストボックスのサイズがフォントサイズに合わせた大きさ修正されます

f:id:me-hige:20191222215902p:plain

ラベルを「日付」と入力します

f:id:me-hige:20191223100307p:plain

ラベル・テキストボックスの表記・名前を設定

となりのテキストボックスを右クリックして「プロパティ」を選びます

f:id:me-hige:20191223100753p:plain

「その他」タブの中の「名前」を「日付」と入力します

f:id:me-hige:20191223101014p:plain

フォームを開いたときに自動で当日の日付を表示

「データ」タブの「既定値」を「=date()」

と入力します

f:id:me-hige:20191223101151p:plain

確認のためフォームビューに切り替えてみます

f:id:me-hige:20191223101426p:plain

テキストボックスに今日の日付が入力されています

日付の文字が入り切っていないみたいなので、デザインビューに切り替え、日付テキストボックスの横幅を広げておきます

f:id:me-hige:20191223101648p:plain

書式の調整

プロパティシートを開き

「書式」タブの「書式」を「yyyy¥年mm¥月dd¥日」と入力します

f:id:me-hige:20191224095217p:plain

「データ」タブの
「使用可能」を「いいえ」
「編集ロック」を「はい」
にします

f:id:me-hige:20191224100300p:plain

 「その他」タブの
「タブストップ」を「いいえ」
にします

f:id:me-hige:20191224100524p:plain

この設定で「日付」テキストボックスは「伝票日付」フォームを開くと、当日の日付を表示させ、「日付」テキストボックスへ直接入力はできない状態となりました

f:id:me-hige:20191224100702p:plain

日付操作ボタンを作成

「日付」テキストボックスの下にボタンを配置します

f:id:me-hige:20191224101115p:plain

ボタンをコピーして6個並べます

「配置」タブの「サイズ/間隔」や「配置」を駆使して綺麗に並べます

f:id:me-hige:20191224101357p:plain

ボタンの表題を左から「+」「-」「+」「-」「+」「-」の順番で変更していきます

ボタンの名前を左から「プラス年」「マイナス年」「プラス月」「マイナス月」「プラス日」「マイナス日」と入力していきます

f:id:me-hige:20191224105814p:plain

※Accessは、なぜかコントール名の認識では「+」と「-」が同じで認識されるみたいです。なのでここでは+、ーは「プラス」「マイナス」のカタカナで表記しています

f:id:me-hige:20191224103549p:plain
このようなエラーが表示されます

ではボタンにVBAを埋め込んでんいきます

「プラス年」ボタンのプロパティシートを開き「イベント」タブの「クリック時」の右端の「・・・」をクリックして「コードビルダー」を起動します

f:id:me-hige:20191224122441p:plain
f:id:me-hige:20191224104034p:plain

VBE(Visual Basic Editor)が起動します

f:id:me-hige:20191224110226p:plain

Private Sub プラス年_Click()

Me!日付 = DateAdd(“yyyy”, 1, Me!日付)

End Sub

このコードの意味は

f:id:me-hige:20191224113947p:plain

今開いてる「日付」テキストボックスの値を
「日付」にもともと入っている日付に1年足した日付にします
という意味です

ちなみに

  • 年を加えるときは”yyyy”
  • 月を加えるときは”mm”
  • 日を加えるときは”d”

です

この命令だけだと、Accessの使用環境によっては日付表示が反映されないことがあるので

Me.Repaint

これを追加します 

Private Sub プラス年_Click()
Me!日付 = DateAdd(“yyyy”, 1, Me!日付)
Me.Repaint
End Sub

 これで「プラス年」ボタンをクリックすると「日付」テキストボックスの日付が1年足される仕組みができました

試しにフォームビューに切り替えて「プラス年」ボタンをクリックすると

「日付」テキストボックスに1年足されます

f:id:me-hige:20191224123620p:plain

次は「マイナス年」ボタンにVBAを埋め込んでいきます

f:id:me-hige:20191224122824p:plain
f:id:me-hige:20191224122946p:plain

Private Sub マイナス年_Click()
Me!日付 = DateAdd(“yyyy”, -1, Me!日付)
Me.Repaint
End Sub

プラス年と異なるところは、「1」のところが「-1」になったところです

-1を加えるという発想です


 同様に「プラス月」「マイナス月」「プラス日」「マイナス日」にもVBAを組み込んでいきます

Private Sub プラス月_Click()
Me!日付 = DateAdd(“m”, 1, Me!日付)
Me.Repaint
End Sub Private Sub マイナス月_Click()
Me!日付 = DateAdd(“m”, -1, Me!日付)
Me.Repaint
End Sub Private Sub プラス日_Click()
Me!日付 = DateAdd(“d”, 1, Me!日付)
Me.Repaint
End Sub Private Sub マイナス日_Click()
Me!日付 = DateAdd(“d”, -1, Me!日付)
Me.Repaint
End Sub

 入力したものがこちらです

f:id:me-hige:20191224124537p:plain

フォームビューで動作確認をします

f:id:me-hige:20191224125309p:plain

ボタンを押すと日付が動く仕組みができました
一つのボタンに2行のコードを入力しただけですが、この日付変更の仕組みは要所要所で活躍します。最初に仕組みを作るときは、コードの入力を自分で行い、次回別の場所で使う場う場合は、コピペをするとよいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

こんにちはAccessの壺です。
臨床工学技士としてどこかの病院で働いています。
夜な夜なMicrosoftAccessで遊びたおして、独学で病院内のいろんなシステムを開発してきました。
透析患者さんの透析条件管理システムやME機器管理システム、アンケート集計などなど作ってきました。
Accessの楽しさを発信するために、このサイトを運営中。

コメント

コメントする

目次