MEのHigeさんのためになる話

4児のパパ臨床工学技士が綴るお役立ち情報、初心者向けMicrosoftAccessについて

第9回 臨床工学技士(ビジネスマンの方も)のためのAccess講座 VBAでフォームの日付テキストボックス操作をする

この記事の前に読みたい

 

www.me-hige.com

 


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

↑動画でも学べます↑

どんどんVBAに慣れていこう!

「平静を装いながら脆弱性を指摘する海外エンジニア」の写真[モデル:アドリアーノ]

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

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

 

第8回の続きです

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

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

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を加えるという発想です


 同様に「プラス月」「マイナス月」「プラス日」「マイナス日」にも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行のコードを入力しただけですが、この日付変更の仕組みは要所要所で活躍します。最初に仕組みを作るときは、コードの入力を自分で行い、次回別の場所で使う場う場合は、コピペをするとよいと思います。