https://cafe.naver.com/excelmaster/165632 질문입니다.
유저폼에 여러 개의 텍스트박스가 있고
그 중 하나를 클릭하면 해당 텍스트박스의 이름이 출력되는 코드입니다.
텍스트박스가 몇개 없을 땐 텍스트박스마다 클릭 이벤트를 지정하면 되는데
개수가 많을 땐 그럴 순 없지요
클래스모듈의 WithEvents 를 이용하여 간결하게 코드를 만들 수 있습니다.
먼저 클래스모듈 하나를 삽입하여 모듈 이름을 clsTextBox 로 변경한 후 아래 코드를 삽입합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Option Explicit
Private WithEvents MyTextBox As MSForms.TextBox
Public Property Set Control(tb As MSForms.TextBox)
Set MyTextBox = tb
End Property
Private Sub MyTextBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Call UserForm1.PersistentUpdate_ItemNumber(MyTextBox.Name)
End Sub
|
cs |
그 다음 UserForm1 에 아래의 코드를 삽입합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
Option Explicit
Dim tbCollection As Collection
Private Sub UserForm_Initialize()
Dim ctrl As MSForms.Control
Dim obj As clsTextBox
Set tbCollection = New Collection
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
Set obj = New clsTextBox
Set obj.Control = ctrl
tbCollection.Add obj
End If
Next ctrl
Set obj = Nothing
End Sub
Sub PersistentUpdate_ItemNumber(MyName As String)
Label2.Caption = Me(MyName).Name
End Sub
|
cs |
'VB(A)' 카테고리의 다른 글
미디어 파일을 날짜별로 분류 (6) | 2019.12.25 |
---|---|
경품 추첨 (8) | 2019.06.26 |
[정규식] 단어 들어 있는 문장찾기 (0) | 2019.06.03 |
도형 이름을 활용하여 도형 클릭시 해당 셀로 이동하기 (0) | 2019.04.01 |
파일 오픈 여부 판단하기 (0) | 2019.03.20 |