-
여러 개의 텍스트박스를 클릭하여 이름 알아내기VB(A) 2019. 6. 17. 20:54
https://cafe.naver.com/excelmaster/165632 질문입니다.
유저폼에 여러 개의 텍스트박스가 있고
그 중 하나를 클릭하면 해당 텍스트박스의 이름이 출력되는 코드입니다.
텍스트박스가 몇개 없을 땐 텍스트박스마다 클릭 이벤트를 지정하면 되는데
개수가 많을 땐 그럴 순 없지요
클래스모듈의 WithEvents 를 이용하여 간결하게 코드를 만들 수 있습니다.
먼저 클래스모듈 하나를 삽입하여 모듈 이름을 clsTextBox 로 변경한 후 아래 코드를 삽입합니다.
123456789101112131415161718Option ExplicitPrivate WithEvents MyTextBox As MSForms.TextBoxPublic Property Set Control(tb As MSForms.TextBox)Set MyTextBox = tbEnd PropertyPrivate Sub MyTextBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)Call UserForm1.PersistentUpdate_ItemNumber(MyTextBox.Name)End Subcs 그 다음 UserForm1 에 아래의 코드를 삽입합니다.
1234567891011121314151617181920212223242526272829303132333435Option ExplicitDim tbCollection As CollectionPrivate Sub UserForm_Initialize()Dim ctrl As MSForms.ControlDim obj As clsTextBoxSet tbCollection = New CollectionFor Each ctrl In Me.ControlsIf TypeOf ctrl Is MSForms.TextBox ThenSet obj = New clsTextBoxSet obj.Control = ctrltbCollection.Add objEnd IfNext ctrlSet obj = NothingEnd SubSub PersistentUpdate_ItemNumber(MyName As String)Label2.Caption = Me(MyName).NameEnd Subcs 'VB(A)' 카테고리의 다른 글
미디어 파일을 날짜별로 분류 (6) 2019.12.25 경품 추첨 (8) 2019.06.26 [정규식] 단어 들어 있는 문장찾기 (0) 2019.06.03 도형 이름을 활용하여 도형 클릭시 해당 셀로 이동하기 (0) 2019.04.01 파일 오픈 여부 판단하기 (0) 2019.03.20 댓글