Application.런을 시작으로 셀 값과 사용자 테이블에서 매크로 [ExcelVBA] 호출
13701 단어 ExcelVBA
Application.Run
와 셀의 값으로 매크로를 호출할 수 있어 다른 모드에 카드를 추가할 계획이다.개요
하이퍼링크 이외에 셀 값을 프로세스 이름으로 설정하면 트리거에서 매크로를 실행할 수 있습니다
하이퍼링크를 터치하려면 이 칸을 참고하십시오.
또 사용자 형식의 다양한 프로그램 명칭도 보유할 수 있다.
표준 모듈: 모든 모드에서 통용되는 호칭
Option Explicit
Sub CallProc(ProcName)
On Error GoTo Err
Dim wbName: wbName = ThisWorkbook.Name
Application.Run wbName & "!" & ProcName
Exit Sub
Err:
Select Case Err.Number
Case Is = 1004 '何もしない。呼び出すものが無いときのエラーNoなので。
End Select
End Sub
Sub test1()
MsgBox 1
End Sub
Sub test2()
MsgBox 2
End Sub
워크시트 모듈부터
Worksheet_FollowHyperlink
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call CallProc(Target.Name)
End Sub
부터Worksheet_BeforeDoubleClick
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call CallProc(Target.Value)
End Sub
부터Worksheet_SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call CallProc(Target.Value)
End Sub
잘 보진 못했지만 셀 값을 매개 변수로 삼으면 뭐든지 돼사용자 창
명령 버튼:객체 이름 선택 모드
버튼을 누르면 위에 그거래요.
Private Sub test1_Click()
Call CallProc(Me.test1.Name)
End Sub
명령 버튼:설명 모드 선택버튼을 누르면 밑에 그거래요.
Private Sub CommandButton1_Click()
Call CallProc(Me.CommandButton1.Caption)
End Sub
목록 상자Private Sub UserForm_Initialize()
With Me
.ListBox1.AddItem "test1"
.ListBox1.AddItem "test2"
End With
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With Me.ListBox1
Dim myIndex: myIndex = .ListIndex
Dim myItem: myItem = .List(myIndex)
Call CallProc(myItem)
End With
End Sub
목록 보기Proc 이름의 열 너비를 최소로 설정하면, Proc 이름의 줄임말만 표시할 수 있습니다
(ListView의 구조가 아직 이해가 안 되는 점 양해)
With .ColumnHeaders
.Add 1, "key1", "略称", 50
.Add 2, "key2", "Proc名", 50
End With
Private Sub UserForm_Initialize()
Call SetListView
End Sub
Private Sub ListView1_DblClick()
Dim buf
buf = Me.ListView1.SelectedItem.ListSubItems.Item(1).Text
Call CallProc(buf)
End Sub
Private Function myProcs_()
Dim myArr(1)
myArr(0) = Array("てすと1", "test1")
myArr(1) = Array("てすと2", "test2")
myProcs_ = myArr
End Function
Private Sub SetListView()
Dim myProcs
myProcs = myProcs_
With Me.ListView1
.View = lvwReport
.LabelEdit = lvwManual
.HideSelection = False
.AllowColumnReorder = True
.FullRowSelect = True
.Gridlines = False
With .ColumnHeaders
.Add 1, "key1", "略称", 50
.Add 2, "key2", "Proc名", 50
End With
Dim cnt
For cnt = 0 To UBound(myProcs)
With .ListItems.Add
.Text = myProcs(cnt)(0)
.SubItems(1) = myProcs(cnt)(1)
End With
Next
End With
End Sub
망상프로세스 목록을 자동으로 가져올 수도 있습니다
이런 걸로 그런 일을 할 수도 있어요.
다른 책의 매크로를 호출할 수도 있어요.
wbName
투입할 책 제목을 다른 책으로 바꾸면 다른 책의 매크로도 불러낼 수 있다(또는 다른 책의 매크로가 원래 용도라고?) Dim wbName: wbName = ThisWorkbook.Name
Application.Run wbName & "!" & ProcName
여기에도 매개 변수를 교차하는 방법이 있다.
Reference
이 문제에 관하여(Application.런을 시작으로 셀 값과 사용자 테이블에서 매크로 [ExcelVBA] 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taleau/items/b3482e83154d32e65c9b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)