Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
Accessのコントロールについて
投稿日時: 19/02/04 10:01:03
投稿者: kuruppo-

はじめまして。
 
Accessで作成されたアプリの元号対応をパッチではなく
プログラムで対応することになりました。
 
その方法の一つとしてAccessのテキストボックスを
カスタマイズするという方法が挙がりましたが、そのような
事が可能のか分かりません。
 
具体的にはテキストボックスの「カスタム書式」を変更した
テキストボックスを作りたいのです。
 
そこで質問ですが、
1.テキストボックスを継承し、「カスタム書式」を変更した
  テキストボックスを作成する事は可能でしょうか。
  作成する方法はVBAにこだわりません。
 
2.もし1.が可能であれば変更したテキストボックスの適用
  方法をお教えください。
 
そのものズバリな答えではなく、参考になる考えでも助かります。
 
よろしくお願いします。

回答
投稿日時: 19/02/04 10:29:08
投稿者: Suzu

kuruppo- さんの引用:
1.テキストボックスを継承し、「カスタム書式」を変更した
  テキストボックスを作成する事は可能でしょうか。
  作成する方法はVBAにこだわりません。

テキストボックスを継承し?
新規作成時にカスタム書式が設定されていて欲しいという事でしょうか?
 
【図形またはテキストボックスの既定の設定を変更する】
https://support.office.com/ja-jp/article/%E5%9B%B3%E5%BD%A2%E3%81%BE%E3%81%9F%E3%81%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E6%97%A2%E5%AE%9A%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B-9eae1b82-f2b8-44d2-9c54-b06d28e581ce
 
或いは、カスタム書式を設定したテキストボックスのコピペ
 
 
引用:
2.もし1.が可能であれば変更したテキストボックスの適用
  方法をお教えください。

 
上記では不足でしょうか。

回答
投稿日時: 19/02/04 10:54:27
投稿者: hatena
投稿者のウェブサイトに移動

そのアプリで、テキストボックスの元号表示を現状はどのようにしているのでしょうか。
 
そもそも「カスタム書式」ってなんですか。
Accessのテキストボックスにカスタム書式というものはないですが。
 
現状、書式プロパティで設定しているなら、
帳票フォームやデータシートビューにも対応させるとなると
難しいように思います。
 
すなおにMSが対応してくれるのを待つのが得策かと。
 
2019 年 5 月の新元号への変更に関する更新
https://support.microsoft.com/ja-jp/help/4470918/updates-for-may-2019-japan-era-change
 
※Suzuさんへ
リンク先はエクセル(パワーポイント?)のものだと思いますが。
アクセスとエクセルのテキストボックスは違います。

投稿日時: 19/02/04 11:10:28
投稿者: kuruppo-

お答え頂きありがとうございます。
 
上手く説明できてなく、意図が伝わっていませんでした。
申し訳ありません。
 
テキストボックスのプロパティシート上にある書式
の機能そのものを変更したいと考えております。
 
書式に「gggee\年mm\月dd\日」を設定しテキストボックスに
「2019/10/10」を入力すると「平成31年10月10日」と表示され
ますが、「○○1年10月1日」(○○は新元号)と表示させたいので、
テキストボックス自体を変更して実現できないかと考えました。
 

回答
投稿日時: 19/02/04 11:52:05
投稿者: sk

引用:
Accessで作成されたアプリの元号対応をパッチではなく
プログラムで対応することになりました。

引用:
1.テキストボックスを継承し、「カスタム書式」を変更した
  テキストボックスを作成する事は可能でしょうか。
  作成する方法はVBAにこだわりません。

引用:
テキストボックスのプロパティシート上にある書式
の機能そのものを変更
したいと考えております。

テキストボックスの[書式]プロパティにおける元号表記に関しては、
「新元号対応のパッチを適用する」以外の手段はないでしょう。
 
CDate, IsDate, Format などの日付/時刻型のデータを
取り扱う VBA の組み込み関数に関しては、
新元号に対応した代替関数を独自に作成した上、
該当する組み込み関数を呼び出しているオブジェクト
(クエリ/フォーム/レポート/マクロ/モジュール)を
全て修正すればよいでしょう。
(厳密に言えば、これでは対応出来ないケースもある)
 
しかし、テキストボックスの[書式]プロパティによる
元号表示(和暦変換)については、あくまで Access
というアプリケーションの持つ機能によって
実現されているものであり、その機能をユーザーが
勝手に改変することは(法律的に)出来ません。
 
引用:
書式に「gggee\年mm\月dd\日」を設定しテキストボックスに
「2019/10/10」を入力すると「平成31年10月10日」と表示され
ますが、「○○1年10月1日」(○○は新元号)と表示させたいので、
テキストボックス自体を変更して実現できないかと考えました。

例えば、「yyyy/mm/dd」形式の日付を入力するための連結テキストボックスと、
そのテキストボックスの値を前述のユーザー定義関数によって
「gggee年mm月dd日」形式の日付文字列に変換した結果を返す
演算テキストボックス(表示のみ)を、フォーム上に並べて
配置するぐらいしかないのではないでしょうか。

投稿日時: 19/02/04 12:04:14
投稿者: kuruppo-

回答ありがとうございます。
 
法律的にできないと言う事は不勉強でした。
常識のなさに恥じ入るばかりです。
おかげで大きな問題になることを避けることができました。
 
本当にありがとうございました。
 
また、回答いただいたSuzuさんにも改めてお礼を申し上げます。