2014-03-12 2 views
0

EXCEL Userform에서 여러 텍스트 상자가 있습니다. 그들의 수는 동적으로 생성 될 때 달라질 수 있습니다.사용자 양식의 Excel VBA 텍스트 상자 클릭 이벤트

다음을 얻고 싶습니다. 사용자가 텍스트 상자를 클릭하면 메시지 상자를 표시하지만이 특정 userform에만 표시되고 첫 번째 클릭에 대해서는 한 번만 표시됩니다.

이 작업을 수행하는 데 도움이되는 설명서를 알려 주실 수 있습니까?

이에 인터넷 검색을 한 후, 내 코드는 다음과 같습니다

정의 폼 : 텍스트 상자

의 변수 번호를 만들
Option Explicit 

Dim oKlasseExcel() As Klasse1 

Sub userform_initialize() 

    Dim i As Long 
    Dim k As Long 

    k = InputBox("insert number") 
    i = 0 

    Do 
     ReDim oKlasseExcel(0 To i) 
     Set oKlasseExcel(i) = New Klasse1 
     Set oKlasseExcel(i).objTextbox = Userform1.Controls.Add("Forms.Textbox.1", "Textbox" & CStr(i)) 

     With oKlasseExcel(i).objTextbox 
      .Left = 30 
      .Top = 75 + 25 * i 
      .Width = 300 
      .Height = 25 
      .MultiLine = True 
     End With 

     i = i + 1 

    Loop Until i = k 

End Sub 

클래스 모듈 :

Option Explicit 

Public WithEvents objTextbox As MSForms.TextBox 

Sub objTextbox_click() 
    MsgBox objTextbox.Name & ": Changeereignis ausgelöst!" 
End Sub 

은 내가 만들 수 있다고 생각 아마도 클래스 모듈 일 것입니다. 그러나 저는 완전히 이것에 익숙하지 않습니다. 그리고 저는 약간의 설명문이있는 잘 쓰여진 예제가 필요하다고 생각합니다. 텍스트 상자를 클릭하면 위 코드가 아무런 효과가 없습니다.

+0

* 실마리가 없습니다. * 글쎄 ... 너 뭔가 해봤 니? 어떤 종류의 플래그를 사용하여 클릭을 캡처 한 후에 텍스트 상자가 클릭되었는지 여부를 알 수 있습니다. 제발, 몇 가지 코드로 질문을 완료하십시오. –

+0

당신이 옳습니다. 내 편집 게시물에 도움이 되었으면합니다. –

답변

0

클릭 수를 캡처하기 위해 추가 데이터 구조를 만들지 않으려면 일부 TextBox 속성을 변경하십시오 (예 : ). WordWrap = False로 TextBox를 만들고 클릭 한 후에 값을 True로 변경하십시오. - 클릭 한 것을 구별 할 수 있습니다.

+0

내 생각은 사용자가 텍스트 상자를 클릭하고 msgbox를 표시하기 전에 선택하면 부울 변수를 true로 설정하는 것이 었습니다. –

+0

텍스트 상자의 수가 바뀌고 다른 수의 bool 변수 (각 텍스트 상자에 대해 하나의 변수)가 포함되기 때문에 이것이 좋은 생각이라고 생각하지 않습니다. 텍스트 상자를 만들 때마다 추가 변수를 만들겠습니까? – crazylane

+0

msgbox가 표시되면 전역 변수를 사용하여 적절히 설정할 수 없습니까? –

관련 문제