Access (VBA)

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

 
(Windows 10 Pro : Access 2016)
タブコントロールのページ挿入をVBAでしたいです。
投稿日時: 23/08/13 09:21:34
投稿者: 縞縞

いつもお世話になります。
タブコントロールのページ挿入をVBAで行いたいのですが、
エラーが発生して困っています。
Web上で調べたところ、Microsoft Learnによると
「Pages.Add メソッド」が検索されました。
(https://learn.microsoft.com/ja-jp/office/vba/api/access.pages.add)
サンプルコードを参考に記載しましたがエラーで動きません。
どのように記載してよいかわかりません。
教えていただけませんでしょうか。よろしくお願い致します。
 
【記載したコード】
 Private Sub コマンド1_Click()
  Dim frm As Form
   Dim tbc As TabControl
   Set frm = Forms!Form1
   Set tbc = TabCtl0
   tbc.Pages.Add
   AddPage = True
  End Sub
 
【状態】
 フォーム名(Form1)上にタブコントロール名(TabCtl0)を
 配置しています。
 ボタンをクリックするとエラー2147が発生します。
 
お手数をおかけしますがお教え願えませんでしょうか。
よろしくお願い致します。
 
 
 
 
 
 
 

回答
投稿日時: 23/08/13 11:38:49
投稿者: hatena
投稿者のウェブサイトに移動

タブコントロールがどこにあるか教えてあげないと、Accessくんは探せません。
 

Private Sub コマンド1_Click()
  Dim frm As Form
   Dim tbc As TabControl
   Set frm = Forms!Form1
   Set tbc = frm!TabCtl0 'frm(Form1)上のタブコントロール(TabCtl0)
   tbc.Pages.Add
   AddPage = True
End Sub

投稿日時: 23/08/13 16:33:09
投稿者: 縞縞

hatena様
 
早急なご回答誠にありがとうございます。
頂戴したコードを記載したところ、エラー2147が発生してしまいます。
デバックボタンをクリックすると、
tbc.Pages.Add の行で停止していました。
 
すみませんが、解決策をお教え願えませんでしょうか。
お手数をおかけしまして申し訳ございません。
 
 

回答
投稿日時: 23/08/13 17:20:18
投稿者: Moko

(https://learn.microsoft.com/ja-jp/office/vba/api/access.pages.add)
には
 
> Page オブジェクトは、フォームのデザイン ビューでのみ、タブ コントロールの Pages コレクションに追加できます。
 
と書かれていますが、その点は大丈夫でしょうか

回答
投稿日時: 23/08/14 10:38:57
投稿者: hatena
投稿者のウェブサイトに移動

Mokoさんの回答で指摘済みですが、デザインビューでないとページ追加はできません。
 
下記のように無理矢理デザインビューに切り替えて追加すれば可能ですが、
運用中にデザインビューに切り替えて更新するのはお勧めできません。
 

Private Sub コマンド0_Click()
  Dim fm As String
  Dim tbc As TabControl

  Application.Echo False      '画面の描画を止める
  fm = "Form1"
  DoCmd.OpenForm fm, acDesign 'デザインビューに切り替え
  Set tbc = Forms(fm)!TabCtl0
  tbc.Pages.Add
  DoCmd.OpenForm fm, acNormal 'フォームビューに切り替え
  Application.Echo True       '画面の描画を行う
End Sub

 
ページ追加するだけでは意味がないので、コントロールなども追加することになると思いますが、どのような状況でページ追加が必要になるのでしょうか。
 
詳細を提示していただければ、代替案をアドバイスできるかもしれません。

回答
投稿日時: 23/08/14 15:42:37
投稿者: Suzu

コントロールや オブジェクトの 追加/削除 は ファイル破損の原因になりやすい。
 
特に、VBAの実行環境で実行する様にするのは 破損の危険度がより高くなるので
辞めた方が良い と言われていました。 (今は判りませんが)
 
なので、非表示にしておいて、必要になったら表示する 方法で
 コントロールを追加している様に 見せる事を やりました。
その方法が良いかと。
 (位置や、色は変更しても良いので、追加/削除を避けます)
 
 
 
テーブルの作成・削除(テーブル作成クエリや、DROP TABLE ステートメント )も避けた方が良いですよ。
やるなら、レコード削除→レコード追加 ですね。

投稿日時: 23/08/15 06:49:29
投稿者: 縞縞

Moko様 hatena様 Suzu様
 
このたびはご回答ありがとうございます。
VBAでページ挿入するのはフォームのデザインビューのみとのこと、
知りませんでした。また、コントロールや オブジェクトの追加/削除は
ファイル破損の原因の可能性もあるとのこと、Suzu様の仰います、
別案を考えます。
 
このたびは大変勉強になりました。
今後ともどうぞよろしくお願い申し上げます。