[[20260326091404]] 『マルチページの使い方について』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『マルチページの使い方について』(初心者)

 ユーザーフォーム上にマルチページとチェックボックスを配置します。
 次にマルチページ上にテキストボックスを配置します。

 チェックボックスにチェックを入れると
 ユーザーフォーム上にテキストボックスを配置し、
 チェックを外すとマルチページ上に配置するようにしたいのですが

 Private Sub CheckBox1_Click()
     If CheckBox1.Value Then
         MultiPage1.Pages(0).Controls.Remove TextBox1.Name
     Else
         MultiPage1.Pages(0).Add "TextBox1"
     End If
     TextBox1.Top = 10
     TextBox1.Left = 10
 End Sub

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


>チェックを外すとマルチページ上に配置するようにしたいのですが
すでに配置されいるのでマルチページそのものを非表示にすればいいのでは。

(?) 2026/03/26(木) 09:33:02


 質問は何ですか?

 Private Sub CheckBox1_Click()
   Me.TextBox1.Visible = Me.CheckBox1.Value
 End Sub
(初心者って名前かぶりまくりだからやめて) 2026/03/26(木) 09:35:18

名前を「初心者」改め「まだまだ初心者」にしました。

チェックボックスの選択によって
テキストボックスの表示する位置を切替えたいのですが
どうすればいいですか
現在はテスト用でマルチページ(ページ数も)やフォーム上にも
他のコントロールを配置または増やしていきます。

 ┌─────────────┐┌─────────────┐
 │┌─┐          ││┌─┐          │
 ││ │チェックボックス  │││レ│チェックボックス  │
 │└─┘          ││└─┘          │
 │             ││┌────────┐   │
 │             │││テキストボックス│   │
 │             ││└────────┘   │
 │┌─┐┌─┐┌─┐    ││┌─┐┌─┐┌─┐    │
 ││P1││P2││P3│    │││P1││P2││P3│    │
 ││ └┴─┴┴─┴───┐│││  └┴─┴┴─┴───┐│
 ││┌────────┐ ││││           ││
 │││テキストボックス│ ││││           ││
 ││└────────┘ ││││           ││
 │└───────────┘││└───────────┘│
 └─────────────┘└─────────────┘
各ページに用意したボタンを押して処理を行います。
この時、チェックボックスがない場合はページ1の処理だけ
ページ1のテキストボックスを使用します。
チェックボックスが入っている場合は
各ページの処理でテキストボックスを共通で使用したいと
おもっています。

(まだまだ初心者) 2026/03/26(木) 10:16:25


 テキストボックスを複数作って非表示フラグをチェックボックスにすればいいのでは?
 同一IDのテキストボックスにしたいっていうならわからない
(ちくわ) 2026/03/26(木) 10:46:11

 当初、Parentの切り替えだけで可能と思ったがNGだった。なので動的追加してみた。
 新規UserFormにCheckBoxとMultiPageのみ配置して以下を試してみて下さい。
 (※TextBoxは動的に配置するので配置しない事)
 表示位置はSetLocation内の.Left、.Topで調整。

 個人的には、他の回答にもあるようにデザイン時に2つTextBoxを配置しておいて、
 CheckBoxでVisibleを切り替えるのが簡単だと思います。

 Private m_TextBox As MSForms.TextBox
 Private Sub CheckBox1_Click()
    Dim txt$: txt = m_TextBox.Value
    Me.Controls.Remove m_TextBox.Name
    If CheckBox1.Value Then
        Set m_TextBox = Me.Controls.Add("Forms.TextBox.1")
    Else
        Set m_TextBox = Me.MultiPage1.Pages(0).Controls.Add("Forms.TextBox.1")
    End If
    m_TextBox.Value = txt
    Call SetLocation
 End Sub
 Private Sub UserForm_Initialize()
    Set m_TextBox = Me.MultiPage1.Pages(0).Controls.Add("Forms.TextBox.1")
    Call SetLocation
 End Sub
 Private Sub SetLocation()
    If CheckBox1.Value Then
        m_TextBox.Left = 10
        m_TextBox.Top = 30
    Else
        m_TextBox.Left = 10
        m_TextBox.Top = 10
    End If
 End Sub
(まる2021) 2026/03/26(木) 11:29:32

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.