• 쇼핑몰
  • 커뮤니티
  • 북마크

vb6.0/vba




[vb6.0/vba] [vb6.0/vba] CallByName - Application.Run 과는 다른 텍스트(String)로 프로시저 호출

하나를하더라도최선을
2020.02.26 02:19 706 0

본문



CallByName(object, procedurename, calltype, _ [ argument1,..., argumentn])


ConstantValueDescription
vbGet 2 The called procedure is a Property Get
vbLet 4 The called procedure is a Property Let
vbMethod 1 The called procedure is a method; this can be a Sub or a Function within object
vbSet 8 The called procedure is a Property Set



사용법은 간단합니다.

아래와 같이 폼에서 체크박스를 선택한 것에 따라서 프러시 저가 실행되게 합니다. 


47c3f9d66edf790b1a638889a8ba4166_1582650405_3556.png



Private Sub CommandButton1_Click()
    Dim i As Integer, ck As Boolean
    i = (Not CheckBox1.Value) + 1
    i = i + ((Not CheckBox2.Value) + 1* 2
    i = i + ((Not CheckBox3.Value) + 1* 3
    ck = i > 0
    ck = ck = (i < 4)
    If ck Then
        CallByName Me, Choose(i, "가""나""다"), VbMethod
    Else
        MsgBox "하나만 체크하세요."
    End If
End Sub

Public Sub 가()
    MsgBox "가를 호출하였습니다."
End Sub

Public Sub 나()
    MsgBox "나를 호출하였습니다."
End Sub

Public Sub 다()
    MsgBox "다를 호출하였습니다."
End Sub


이런식으로 상요할 수 있습니다.
 

Dim ctlTarget As Control
Set ctlTarget = CallByName(UserForm1, "CheckBox1", VbGet)


이런식으로 VbGet 이라는 Type을 이용해서 컨트롤을 불러올수도 있습니다..


관련된 자료는 많지 않지만 구글링을 해보면 자료는 어렵지 않게 구할 수 있습니다.


무엇보다 초급 프로그래머는 접할일이 없겠으나 알아두면 유용한 함수입니다.



댓글목록 0

등록된 댓글이 없습니다.