目次
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