|
▼123 さん:
こんばんは。
>
>以前に同じようなご質問をさせて頂きましたが、今回はTextBoxの名前と
>ラベルの名前に規則性が無いため応用が出来ません。
なければ作ったらどうでしょうか?
どこかでテキストボックスの名前と上段、左側のラベルの名前に関連性を持たせる方法が
簡単だと思いますが・・・。
例えば、
上段ラベルには、左から
c1 c2 c3 c4・・・・・・・c15とラベル名を付けます。
左側ラベルには、上から
r1 r2 r3 r4 r5 とラベル名付けます。
次にTextboxは、
左上段から
TextBox1 TextBox2 TextBox3 ・・・ TextBox15
TextBox16 TextBox17 TextBox18・・・・
・
・
TextBox61 ・・・・・・・・・・・・・・・・TextBox75
と付けたとしましょう(タブインデックス違ってもかまいません)。
Userform1のフォームモジュールに、
'=============================================================
Dim f_t_box As MSForms.TextBox
'=============================
Private Sub TextBox1_Enter()
Call active_signal(TextBox1)
End Sub
'=============================
Private Sub TextBox2_Enter()
Call active_signal(TextBox2)
End Sub
'=============================
Private Sub TextBox3_Enter()
Call active_signal(TextBox3)
End Sub
'===============================
Private Sub TextBox4_Enter()
Call active_signal(TextBox4)
End Sub
'===============================
Private Sub TextBox5_Enter()
Call active_signal(TextBox5)
End Sub
'===============================
Private Sub TextBox6_Enter()
Call active_signal(TextBox6)
End Sub
'================================
Private Sub TextBox7_Enter()
Call active_signal(TextBox7)
End Sub
'================================
Private Sub TextBox8_Enter()
Call active_signal(TextBox8)
End Sub
'・
'・
'・
'・
'というように75個のEnterイベントを作成する
'================================
Private Sub TextBox75_Enter()
Call active_signal(TextBox75)
End Sub
'=================================
Sub active_signal(t_box As MSForms.TextBox)
Call deactive_signal(f_t_box)
i = Val(Mid(t_box.Name, Len("textbox") + 1))
y = Int((i - 1) / 15) + 1
x = i Mod 15
If x = 0 Then x = 15
Controls("r" & y).Font.Bold = True
Controls("r" & y).ForeColor = &HC0&
Controls("c" & x).Font.Bold = True
Controls("c" & x).ForeColor = &HC0&
Set f_t_box = t_box
End Sub
'==============================================
Sub deactive_signal(t_box As MSForms.TextBox)
If Not t_box Is Nothing Then
i = Val(Mid(t_box.Name, Len("textbox") + 1))
y = Int((i - 1) / 15) + 1
x = i Mod 15
If x = 0 Then x = 15
Controls("r" & y).Font.Bold = False
Controls("r" & y).ForeColor = &H80000012
Controls("c" & x).Font.Bold = False
Controls("c" & x).ForeColor = &H80000012
End If
End Sub
残念ですが、Enterイベントを一つにまとめる方法は知りませんが・・・。
|
|