『マルチページの使い方について』(初心者)
ユーザーフォーム上にマルチページとチェックボックスを配置します。 次にマルチページ上にテキストボックスを配置します。
チェックボックスにチェックを入れると ユーザーフォーム上にテキストボックスを配置し、 チェックを外すとマルチページ上に配置するようにしたいのですが
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.