Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


560 / 13645 ツリー ←次へ | 前へ→

【79661】オプションボタンによるテキストボックスの表示非表示の切り替え ボタン 18/3/1(木) 16:51 質問[未読]
【79664】Re:オプションボタンによるテキストボック... マナ 18/3/1(木) 23:23 発言[未読]
【79667】Re:オプションボタンによるテキストボック... ボタン 18/3/2(金) 12:09 お礼[未読]
【79674】Re:オプションボタンによるテキストボック... マナ 18/3/2(金) 23:38 発言[未読]
【79677】Re:オプションボタンによるテキストボック... マナ 18/3/3(土) 18:33 発言[未読]
【79678】Re:オプションボタンによるテキストボック... ボタン 18/3/5(月) 14:00 質問[未読]
【79679】Re:オプションボタンによるテキストボック... マナ 18/3/5(月) 23:31 発言[未読]
【79680】Re:オプションボタンによるテキストボック... ボタン 18/3/6(火) 9:47 質問[未読]
【79683】Re:オプションボタンによるテキストボック... マナ 18/3/6(火) 21:15 発言[未読]
【79705】Re:オプションボタンによるテキストボック... ボタン 18/3/13(火) 15:50 お礼[未読]
【79716】Re:オプションボタンによるテキストボック... マナ 18/3/14(水) 21:57 発言[未読]

【79661】オプションボタンによるテキストボックス...
質問  ボタン  - 18/3/1(木) 16:51 -

引用なし
パスワード
   お世話になります。

ユーザフォーム1にオプションボタン1〜5があります。

たとえばオプションボタン1を選ぶと

Label1とTextBox1が非表示から表示に変わり
TextBoxは入力できるようにしたいです。
またオプションボタン2を選ぶと
Label1とTextBox1が非表示になり
Label2とTextBox2が表示され入力できるというのを目指してます。

最初は非表示で1を選ぶと表示に切り替わり
入力はできるのですが
別のを選んでもLabel1とTextBox1が非表示に切り替わりません。

違うのを選ぶ(1を選択していない状態)と非表示にする
というのが足りないと思うのですが…ご教授いただければ幸いです。

OptionButton1 に対してLabel1とTextBox1
OptionButton2 に対してLabel2とTextBox2…としています。
またLabelとTextBoxはすべてプロパティでEnabled = Falseに設定してあります。


Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Enabled = True
TextBox1.Enabled = True

Else
Label1.Enabled = False
TextBox2.Enabled = False

End If

End Sub

※OptionButton2にはこれの2バージョンとしています。


ちなみに非表示は文字が薄くなるだけで
見えなくなるのとは違うんですね。
完全に消えたようにすることはできないでしょうか?

【79664】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/1(木) 23:23 -

引用なし
パスワード
   ▼ボタン さん:

>ちなみに非表示は文字が薄くなるだけで
>見えなくなるのとは違うんですね。
>完全に消えたようにすることはできないでしょうか?


非表示は、Enabled でなく、Visible です。

【79667】Re:オプションボタンによるテキストボッ...
お礼  ボタン  - 18/3/2(金) 12:09 -

引用なし
パスワード
   ▼マナ さん:
非表示はVisibleなんですね。
修正したら確かに完全に消えました!
ありがとうございます。

ただまだ切り替えはできてない状態です。


>▼ボタン さん:
>
>>ちなみに非表示は文字が薄くなるだけで
>>見えなくなるのとは違うんですね。
>>完全に消えたようにすることはできないでしょうか?
>
>
>非表示は、Enabled でなく、Visible です。

【79674】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/2(金) 23:38 -

引用なし
パスワード
   ▼ボタン さん:

>修正したら確かに完全に消えました!

>ただまだ切り替えはできてない状態です。

なぜ?
非表示にできるなら再表示もできませんか。

Option Explicit

Private Sub 表示切替()
  Dim i As Long
  
  For i = 1 To 5
    Controls("Textbox" & i).Visible = Controls("OptionButton" & i).Value
  Next
  
End Sub

Private Sub OptionButton1_Click()
  表示切替
End Sub

Private Sub OptionButton2_Click()
  表示切替
End Sub

【79677】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/3(土) 18:33 -

引用なし
パスワード
   ▼ボタン さん:

考えてみると、TextBoxを5個も用意せず、
1個ですべてをまかなえば、
表示切り替えも不要になりませんか。

【79678】Re:オプションボタンによるテキストボッ...
質問  ボタン  - 18/3/5(月) 14:00 -

引用なし
パスワード
   ▼マナ さん:
いろいろありがとうございます。

現在、ユーザフォーム起動した状態では
Label1〜5  TextBox1〜5
は非表示になっています。


書いていただいたVBAを利用してみましたが
OptionButton1を選ぶと
Label1とTextBox1が表示されます。

OptionButton2を選ぶと
Label2とTextBox2は表示はされますが
Label1とTextBox1は非表示になってくれません。
(追加で表示されていく)


>考えてみると、TextBoxを5個も用意せず、
>1個ですべてをまかなえば

実は本当のユーザフォームは
OptionButton1に対して
Label1、Label3、Label12
TextBox3、TextBox9、TextBox15

OptionButton2に対して
Label1、Label5、Label15
TextBox4、TextBox9、TextBox15
となっています。

オプションボタンの切り替えのヒントがいただけたら
と思い詳しく書いておらず申し訳ありません。

>▼ボタン さん:
>
>考えてみると、TextBoxを5個も用意せず、
>1個ですべてをまかなえば、
>表示切り替えも不要になりませんか。

【79679】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/5(月) 23:31 -

引用なし
パスワード
   ▼ボタン さん:

>OptionButton2を選ぶと
>Label2とTextBox2は表示はされますが
>Label1とTextBox1は非表示になってくれません。
>(追加で表示されていく)

どんなコードで試しましたか?


>実は本当のユーザフォームは
>OptionButton1に対して
>Label1、Label3、Label12
>TextBox3、TextBox9、TextBox15
>
>OptionButton2に対して
>Label1、Label5、Label15
>TextBox4、TextBox9、TextBox15
>となっています。
>

TextBox3とTextBox4を使い分ける必要があるのですか。
どちらも、TextBox3を使うのでは、なぜだめなのですか。

Labelについても、Captionを変更するだけではだめなのですか。

【79680】Re:オプションボタンによるテキストボッ...
質問  ボタン  - 18/3/6(火) 9:47 -

引用なし
パスワード
   ▼マナ さん:

最初は以下にしてました。

Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Visible = True
TextBox1.Visible = True

Else
Label1.Visible = False
TextBox2.Visible = False

End If

End Sub

※OptionButton2にはこれの2バージョンとしています。


マナさんからのVBAを見て以下に変更しました。

Option Explicit

Private Sub 表示切替()
  Dim i As Long
 
   For i = 1 To 5
    Controls("Textbox" & i).Visible = Controls("OptionButton" & i).Value
  Next
 
End Sub

Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then

Label1.Visible = True
TextBox1.Visible = True

Else
Label1.Visible = False
TextBox1.Visible = False

End If

End Sub


Private Sub OptionButton2_Click()

If OptionButton2.Value = True Then

Label2.Visible = True
TextBox2.Visible = True

Else
Label2.Visible = False
TextBox2.Visible = False


仮にLabel1〜5と TextBox1〜5を作って
実行してみましたが、非表示から表示はされますが
ボタンを選び直しても、非表示にはなりませんでした。


TextBoxなどを使い分ける必要性ですが
考え方がおかしかったら申し訳ありません。
たとえばですが

ボタン1は社内の人間で
Label1は部署名
TextBox1は部署名
Label2は社員番号
TextBox2は社員番号
Label3は名前
TextBox3は名前となっています。

ボタン2は社外の人間で
Label4会社名
TextBox4は会社名
Label5役職名
TextBox5は役職名
Label3は名前
TextBox3は名前
となっており、名前であるLabel3とTextBox3は共通で使用できるという感じです。

エクセルにそれぞれを書き込ませるつもりですが
名前は同じ列にしますが項目が違うものは列も異なります。

対象者(ボタン)によって入力したい項目(ラベルとテキストボックス)が違うので分けたいんです。

なにせVisibleとEnabledもわかっていないので
Captionを変更でできるとかはよくわかりません。


▼マナ さん:
>▼ボタン さん:
>
>>OptionButton2を選ぶと
>>Label2とTextBox2は表示はされますが
>>Label1とTextBox1は非表示になってくれません。
>>(追加で表示されていく)
>
>どんなコードで試しましたか?
>
>
>>実は本当のユーザフォームは
>>OptionButton1に対して
>>Label1、Label3、Label12
>>TextBox3、TextBox9、TextBox15
>>
>>OptionButton2に対して
>>Label1、Label5、Label15
>>TextBox4、TextBox9、TextBox15
>>となっています。
>>
>
>TextBox3とTextBox4を使い分ける必要があるのですか。
>どちらも、TextBox3を使うのでは、なぜだめなのですか。
>
>Labelについても、Captionを変更するだけではだめなのですか。

【79683】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/6(火) 21:15 -

引用なし
パスワード
   ▼ボタン さん:
OptionButton1の値がTrueにしたら
  Label1のCaptionを部署名に変更
  TextBox1の転記先ををC列に変更
  Label2のCaptionを社員番号に変更
  TextBox2の転記先ををD列に変更

OptionButton2の値がTrueにしたら
  Label1のCaptionを会社名に変更
  TextBox1の転記先ををE列に変更
  Label2のCaptionを役職名に変更
  TextBox2の転記先ををF列に変更

のようにできないかと考えています。

また場合によっては、TextBoxのかわりに、
ComboBoxを使うのも便利かもしれません。

【79705】Re:オプションボタンによるテキストボッ...
お礼  ボタン  - 18/3/13(火) 15:50 -

引用なし
パスワード
   ▼マナ さん:

コンボボックスは使用しませんでしたが、
マナさんのアドバイスから
Captionを変更、記入先の指定で
LabelやTextboxをある程度使いまわして
表示の切り替えができるようになりました。
ありがとうございます。

以下はオプションボタン1です。
こういった形で色々使いまわしました。

Private Sub OptionButton1_Click()

TextBox6.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""

Label8.Visible = False
Label9.Visible = False
Label10.Visible = False
Label12.Visible = False
Label13.Visible = False
Label20.Visible = False

TextBox6.Visible = False
TextBox8.Visible = False
TextBox9.Visible = False
TextBox10.Visible = False

Label8.Caption = "社員番号"
Label9.Caption = "部署名"
Label12.Caption = "役職"
Label10.Caption = "名前"

Label8.Visible = True
Label9.Visible = True
Label10.Visible = True
Label12.Visible = True
Label13.Visible = True

TextBox6.Visible = True
TextBox8.Visible = True
TextBox9.Visible = True
TextBox10.Visible = True


>▼ボタン さん:
>OptionButton1の値がTrueにしたら
>  Label1のCaptionを部署名に変更
>  TextBox1の転記先ををC列に変更
>  Label2のCaptionを社員番号に変更
>  TextBox2の転記先ををD列に変更
>
>OptionButton2の値がTrueにしたら
>  Label1のCaptionを会社名に変更
>  TextBox1の転記先ををE列に変更
>  Label2のCaptionを役職名に変更
>  TextBox2の転記先ををF列に変更
>
>のようにできないかと考えています。
>
>また場合によっては、TextBoxのかわりに、
>ComboBoxを使うのも便利かもしれません。

【79716】Re:オプションボタンによるテキストボッ...
発言  マナ  - 18/3/14(水) 21:57 -

引用なし
パスワード
   ▼ボタン さん:
>
>以下はオプションボタン1です。
>こういった形で色々使いまわし

使いまわすのだから、
表示、非表示切り替え不要ですよ。

560 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free