해결 엑셀2019윈도우10
Userform 사용시 컨트롤 코드 줄이는 방법이 궁금합니다.
만들 유저폼에 spinButton이 5개 정도있고 이 버튼과 각 textBox를 연결하려고 합니다.
원래 코드는 아래와 같습니다.
이렇게 작성하는 것이 너무 비효율적인것 같아서 찾아보니 반복문을 사용하여 컨트롤에 코드를 입력할 수 있다는 사실을 발견했고 아래와 같이 코드를 작성했습니다.
물론 이 코드를 적용하기 위해 컨트롤 이름도 tbx1~tbx5, spinBtn1~5 와 같이 변경하였는데 왜 적용이 안되는 것인지 궁금합니다.
혹시 다른 방법이 있을까요?
*아래 sample파일을 첨부합니다.
원래 코드는 아래와 같습니다.
Private Sub SpinBtn1_Change()
TextBox1.Value = SpinBtn2.Value
End Sub
Private Sub SpinBtn2_Change()
TextBox2.Value = Top2_SpinBtn.Value
End Sub
Private Sub SpinBtn3_Change()
TextBox3.Value = SpinBtn3.Value
End Sub
Private Sub SpinBtn4_Change()
TextBox4.Value = SpinBtn4.Value
End Sub
Private Sub SpinBtn5_Change()
TextBox5.Value = SpinBtn5.Value
End Sub이렇게 작성하는 것이 너무 비효율적인것 같아서 찾아보니 반복문을 사용하여 컨트롤에 코드를 입력할 수 있다는 사실을 발견했고 아래와 같이 코드를 작성했습니다.
물론 이 코드를 적용하기 위해 컨트롤 이름도 tbx1~tbx5, spinBtn1~5 와 같이 변경하였는데 왜 적용이 안되는 것인지 궁금합니다.
혹시 다른 방법이 있을까요?
*아래 sample파일을 첨부합니다.
Sub changeSpinButton()
Dim i As Integer
For i = 1 To 5
Me.Controls("tbx" & i).Value = Me.Controls("spinBtn" & i).Value
Next i
End Sub
동
망
달
댓글 2
각각의 스핀버튼에 해당하는 Private Sub SpinBtn5_Change() 이벤트에서 공통적으로 저 프로시저를 호출하도록 하거나
이런 스핀버튼 여거래를 하나로 묶어서 이벤트가 공통적으로 발생할 수 있도록 해야 합니다.
이걸 참고해 보세요.
https://stackoverflow.com/a/51431879
다른 샘플로 Label을 이용해서 공통 이벤트를 활용하는 것은 여기 참고하세요.
https://egtools.tistory.com/entry/VBA-DatePicker-3