フォームにタブコントロールを置いて、ページを6つにして、コマンドボタンを置きました。
3から6ページをVBAで削除する事は可能でしょうか?
(1・2は残したいです)
「ページを削除する」というVBAコードがわかりません。
Private Sub コマンド7_Click()
Dim ctl As Control
For Each ctl In Forms(Me.Name).Controls
If ctl.ControlType = acPage Then
Debug.Print ctl.Name
'ここでページを削除したい
End If
Next ctl
End Sub
あと、もしかしてデザインビューでないと削除できないですか?
であれば、DoCmd.OpenForm Me.Name, acDesign
を追加しようと思っています。
ご回答よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.2です。
解決に至ったのでしたら何よりです。
> 自分でウィザードを作成することが出来るのですか?
はい、可能です。
ただ、必ずしも簡単ではありませんが(汗)、ある意味、こういった
「普段のデータベース用のプログラムではやらないこと」をやるのは
いろいろと勉強になります。
(なので、igetanmzztさんもそういったことをされているのかなと
思った次第です)
こちらのサイトが、非常にわかりやすいかと思いますので、もしも
興味をお持ちでしたら、参考までに:
http://www.tsware.jp/study/indexv2.htm
No.2
- 回答日時:
> 「ページを削除する」というVBAコードがわかりません。
自前でフォームウィザードを作られているのか、『困り度』が『暇なときにでも』に
されているところをみると単純に興味があってなのかもしれませんが、本当に
「削除」が必要なのか、ちょっと気になったので・・・(汗)
タブコントロールのページには、それぞれ個別に「Visible」プロパティがあり、
これで表示/非表示の切替が可能です。
また、これを使用して動的に切り替えるのであれば、削除と違って、デザイン
ビューにする必要もありませんし、同一フォームからの実行も可能です。
'対象フォーム上に設置した『コマンド1』コマンドボタンから3ページ目以降を
'非表示にする想定のコード
Private Sub コマンド1_Click()
'エラー発生時に「エラー処理」の行に飛ばすための宣言
On Error GoTo エラー処理
Dim oTab As TabControl, oPages As Pages, i As Integer
Const cTabName As String = "タブ0" '対象タブの名前
Const cRemain As Long = 2 '残すページ数
'対象タブコントロールのPagesコレクションを変数に格納
Set oTab = Me.Controls(cTabName)
Set oPages = oTab.Pages
'指定したページ以降を不可視化
For i = 2 To (oPages.Count - 1)
oPages(i).Visible = False
Next
終了処理:
'念のため、明示的に変数を解放
Set oPages = Nothing
Set oTab = Nothing
'通常時に「エラー処理」を実行させないための処理
Exit Sub
エラー処理:
'エラー発生時はその内容をMsgBoxで表示の上、「終了処理」に移動
MsgBox Err.Number & ":" & Err.Description
Resume 終了処理
End Sub
・・・以上、です。
なお、独自ウィザードを作成されているのであれば、コントロール全般に対して
Call Application.DeleteControl(フォーム名, コントロール名)
で削除が可能ですので、併せて参考まで。
(なお、こちらについては、nicotinismさんご紹介のPages.Removeと同様に
デザインビューへの切替が必要です)
困り度についてはものすごく困っているわけではなく
知ってる人がいればいいな、解決できればいいな、と言う意味でした。
実はタブが30枚くらいってそのうち28枚を削除したいのです。
削除ではなく非表示にも出来るのですね。うまく出来ました!
ちなみに
「独自ウィザードを作成されているのであれば」
の意味がよくわからないのですが、
自分でウィザードを作成することが出来るのですか?
No.1
- 回答日時:
ヘルプに載ってるのは
『Page オブジェクトは、フォーム (フォーム: Access のデータベース オブジェクトの 1 つ。フォームでは、アクションを実行するコントロールや、フィールドのデータを入力、表示、または編集するためのコントロールを配置することができます。)のデザイン ビュー (デザイン ビュー: データベース オブジェクトのデザインを表示するビュー。テーブル、クエリ、フォーム、レポート、およびマクロで使用できます。デザイン ビューでは、新しいデータベース オブジェクトの作成や、既存のオブジェクトのデザイン変更を行うことができます。)でのみ、タブ コントロールの Pages コレクションから削除できます。』
『Pages コレクションのインデックスは 0 で始まります。タブ コントロールの左端ページのインデックスは 0 です。左端ページのすぐ右側のページのインデックスは 1 です。以降も同様です。』
また、自身を自身中のコードでデザインモードで開いて変更は出来ません。
なので、別のフォームや標準モジュールから
こんな風でしょうか。
Sub delPage()
Dim myForm As String
Dim frm As Form
Dim i As Long
myForm = "フォーム1"
DoCmd.OpenForm myForm, acDesign
Set frm = Forms(myForm)
For i = frm!タブ0.Pages.Count - 1 To 2 Step -1
frm!タブ0.Pages.Remove (i)
Next
DoCmd.Close acForm, myForm, acSaveYes
Set frm = Nothing
End Sub
「自身を自身中のコードで
デザインモードで開いて変更は出来ません。」
と言うのは、フォームモジュールでは変更できないという事ですね。
添付のコード、うまく出来ました!ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
フレーム内に移動したい
Visual Basic(VBA)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
5
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
6
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
7
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptからVBAの関数を呼び...
-
カメラスクロールするのを動画...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
エクセル・VBA CheckBoxのオブ...
-
VB.NET開発。ラジオボタンとコ...
-
C# タブのコントロール取得
-
チェックボックスをオンにした...
-
With~EndWithの省略部分と引数...
-
エクセル コントロールツール...
-
vb.netで画面のコントロールId...
-
VBAのフォームでTextBoxがいっ...
-
Access2007 コントロールの削除
-
ACCESS2010のVBAでフォーム内ク...
-
行方不明になるコントロール
-
(VBA)スピンボタンの大量...
-
Labelコントロールの(左右)余...
-
Excelコマンドボタン名を変数に...
-
Validated イベントについて
-
他フォームのコントロールを直...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
(VBA)スピンボタンの大量...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
コンボボックスの文字によるif...
-
VBAのエラーについて、”実行時...
-
変数をコントロール型で使用す...
-
chr関数の呼び出しで「プロ...
-
With~EndWithの省略部分と引数...
-
C#で自分のウインド・ハンド...
-
excelのリストボックスで選択し...
-
'ckbl' コントロールは作成され...
-
フォーム上の現在アクティブな...
おすすめ情報