ACCESSのVBAで変数を使う

こんにちは。伊川です。今回は、初めてACCESSでシステムを作成したときに、どうしても理解できなかったことを紹介します。

 題名の通りなのですが、私は、コールセンターに勤務しています。お客様の対応内容を素早くコピーできるようにしたいという要望が部署内からありました。

こんな人にこの動画はお勧め

・VBAでの変数が、いまいち、理解できない人

・フォームの内容をコピーしたい人

伊川が悩んだこと

下図のようなことを実現したかったのです。


下図が完成図です。


皆目見当もつかないようなことでした。

このよなことは、当然、書籍には記載がありません。

NET上で検索したくても、どのようなキーワードで検索するのかもわかりせん。

ExcelのVBAを利用して、セルの内容をコピーするコードはしっていたのですが、

ACCESSは、まったくの初体験でしたので、チンプンカンプンとはこのことでした。



このVBAを完成するためのコードを書き出してみた

・Excelでできるか試してみた

・コピーをするコード

・改行コード


=”■機種:”&A1&”■色:”&A2

この数式でそれっぽいことができました。

【&:アンパサンド】と【=:イコール】

では、コピーをするコード、改行コードがわかれば、完成すると思いました。

なんとか変数を使って、コードを簡略化しようと考える

なんとか、変数を使って、コード簡略化したいと思うのは、メンテナンスが楽だからです。

変数のことは、ExcelのVBAで少し理解していました。

Excelは、i=Range(“A1”)のように変数にセルを代入できます。

ならば、ACCESSは、変数にフォームの名前を代入できるはずと過程しました。

スポンサーリンク

完成したコードの解説

Private Sub コマンド10_Click()

Dim e As String

eを文字列の変数Stringで宣言

Dim f As String 

fを文字列の変数Stringで宣言

e = “■機種:” & Me.[機種]


■機種の冠をつけて、機種のiPhone11を表示させる変数をeとする 

f = “■色:” & Me.[色]

■色の冠をつけて、色の赤を表示させる変数をfとする

Me!メモ欄 = e & vbCrLf & _

   f

メモ欄に変数を使って【=】でつなぐ。【vbCrLf】⇒これが改行コード

【_】アンダースコアを利用することで、VBAのコード改行できます。


Me!メモ欄.SetFocus

メモ欄を選択する

DoCmd.RunCommand acCmdCopy

メモ欄の内容をコピーする

End Sub

コードを整理する

Private Sub コマンド10_Click()

Dim e As String

Dim f As String

e = “■機種:” & Me.[機種]

f = “■色:” & Me.[色]

Me!メモ欄 = e & vbCrLf & _

    f

Me!メモ欄.SetFocus

DoCmd.RunCommand acCmdCopy

End Sub

まとめ

結論
簡単に記載しましたが、知っている知識を使って再現をして、コードを考えることが重要です。
サンプルファイルNo4はです
スポンサーリンク

Twitterでフォローしよう

おすすめの記事