目次
フォームの内容をコピーする
こんにちは。伊川(@naonaoke)です。
私が、ACCESSで一番初めに作成したシステムを紹介します。
恥ずかしいコードなのですが、この機会に紹介します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記の依頼を受けました。
フォームに入力した内容をコピーして、他のシステムに貼り付けしたい。
どのようにコードを書いたらいいだろうか?
解決策
・Chr(13) + Chr(10)で改行する。
Chr(13) + Chr(10)とはなにか?
CharCode |
Constantsの定数 |
内容 |
Chr(0) | vbNullchar | NULL文字 |
Chr(8) | vbBack | バックスペース文字 |
Chr(9) | vbTab | タブ文字 |
Chr(10) | vbLf | ラインフィード文字 |
Chr(13) | vbCr | キャリッジリターン文字 |
Chr(10)&Chr(13) | vbCrLf | 改行文字 |
上の表をみてください。
引数Charcodeで指定したASCIIコードに対応する文字列を返します。
なにがなにやら、わかりませんでした。
しかし、Chr(13) + Chr(10)は、私にとって救世主でした。
改行コードと全く同じ意味合いなのです。
しかし、Chr(13) + Chr(10)ではなくてはならないのです。
Chr(13) + Chr(10) 作成手順その1 フォームを確認
契約書番号を入力した場合に、向かって右の備考に転記します。
上の図のようにします。
Chr(13) + Chr(10) 作成手順その2 コードを確認する
フォームをデザインビューで開きます。
上の図の赤枠をみてください。
このコードで改行してメモを見やすくしています。
“■契約書番号:” & [契約書番号] & Chr(13) & Chr(10) & ”
="<成約メモ>" & Chr(13) & Chr(10) & "■契約書番号:" & [契約書番号] & Chr(13) & Chr(10) & "■契約日時:" & [契約日時] & Chr(13) & Chr(10) & "■商品名:" & [商品名] & Chr(13) & Chr(10) & "■契約者電話番号:" & [契約者電話番号] & Chr(13) & Chr(10)
備考のフィールドに、上のようなコードをそのまま入力します。
メモコピーには、上の図のコードを入力します。
Private Sub コマンド39_Click() With Me.[備考] .SetFocus DoCmd.RunCommand acCmdCopy End With End Sub
Private Sub コマンド40_Click() DoCmd.RunCommand acCmdSaveRecord DoCmd.GoToRecord , , acNewRec End Sub
Chr(13) + Chr(10) 作成手順その2 完成形
こんな感じになりました。
これが、私が最初に作成した成果物になりました。
ここがポイント
フォームに入力するのが、vbCrLfでは作動しません。Chr(10)&Chr(13)は関数です。vbCrLfは定数です。
MsgBoxでの開業なら、vbCrLfで十分です。
しかし、Chr(10)&Chr(13)は、クエリでも、フォームでも、MsgBoxでも利用できます。
まとめ
今回のフォームを作成するのに、本当に悩みました。どの本にも記載はありませんでした。
しかし、このフォームが完成したときは、本当に感動しました。
小さな成果物を積み重ねて、スキルアップしましょう。
今回のサンプルファイルは、No77です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。