質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1806閲覧

Excel VBA Userformについて

lovely.wolf

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/08/31 01:49

お世話になっております。
今回はUserFormで悩んでおります。

【状況】
1か月分の情報を入力してもらうため、あるUserform上に31日×2項目のラベルと、31日×4項目のテキストボックスが並べて配置してあります。
特定のテキストボックスを選択すると、該当のラベルが太字になるように以下のコードを書いてみました。

【実現したいコト】
現状だと下記のコードを31×4組づつ書かねばならず...
できれば、「TB_in02(テキストボックス名)」を取得、変数に入れ、Enterで1つとExitで1つというように、スッキリ書きたいと考えております。

アホな質問だったらすみません。その旨ご指摘ください。
よろしくお願いいたします。

Private Sub TB_in02_Enter()
Me.LB_day02.Font.Bold = True
Me.LB_wek02.Font.Bold = True
End Sub

Private Sub TB_in02_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.LB_day02.Font.Bold = False
Me.LB_wek02.Font.Bold = False
End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

以下あたりがそのまま活用できるのではないでしょうか。
http://blog.goo.ne.jp/pc_college/e/9ca2b0c452e9e691cad1dbd2783868cf

投稿2015/08/31 02:46

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lovely.wolf

2015/08/31 02:51

Tak1wa さん ありがとうございます。 お昼から帰ったら熟読し、試行錯誤してみます。 クラスはまったく思い浮かびませんでした(汗) 取り急ぎ...ありがとうございます。
lovely.wolf

2015/08/31 05:13

試行錯誤中で、ちょっとつっかえてしまいました。 下記が現在のコードです。 エラーなく通りますが、UserForm1を表示して「TB_in02」他を選択しても ラベルの表示は変わりません。 なにがイケナイのか... お時間がある時にご教授ください<(_ _*)> よろしくお願いいたします。 ■UserForm1 For i = 1 To 31 cnt = Format(i, "00") 'classモジュール用 myClass1(i).NewClass1 Me.Controls("TB_in" & cnt), Me.Controls("LB_day" & cnt), Me.Controls("LB_wek" & cnt) myClass2(i).NewClass2 Me.Controls("TB_ou" & cnt), Me.Controls("LB_day" & cnt), Me.Controls("LB_wek" & cnt) myClass3(i).NewClass3 Me.Controls("CB_kin①" & cnt), Me.Controls("LB_day" & cnt), Me.Controls("LB_wek" & cnt) myClass4(i).NewClass4 Me.Controls("CB_kin②" & cnt), Me.Controls("LB_day" & cnt), Me.Controls("LB_wek" & cnt) Next i ■Class1モジュール 'イベントを持つテキストボックス型の変数を宣言 Private WithEvents myTextBoxIn As MSForms.TextBox Public Sub NewClass1(ByVal TB As MSForms.TextBox, ByVal LB1 As MSForms.Label, ByVal LB2 As MSForms.Label) '引数のテキストボックスを変数に格納 Set myTextBoxIn = TB 'ラベルを変数に格納 Set myLabelDay = LB1 Set myLabelWek = LB2 End Sub Private Sub myTextBoxIn_Enter() '選択したテキストボックスに応じてラベルを太字 myLabelDay.Font.Bold = True myLabelWek.Font.Bold = True End Sub Private Sub myTextBoxIn_Exit(ByVal Cancel As MSForms.ReturnBoolean) '選択したテキストボックスに応じてラベルを太字 myLabelDay.Font.Bold = False myLabelWek.Font.Bold = False End Sub
lovely.wolf

2015/08/31 07:45

いろいろクラスモジュールについて調べていたところ 下記のページにたどりつきました。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_040.html 「テキストボックス(MSForms.TextBox)をクラス化しても「Enter」や「Exit」のイベントはトラップできません。」 とのコトで、回避方法は私には難解で応用できず... 今回はあきらめてひとまず素直に必要数分、記述することにいたしました。 今回はクラスモジュールについてとても勉強になりました。 時間のある時に、難解な方法も理解できるように勉強します。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問