programing

버튼에서 매크로를 호출하고 인수를 전달하는 방법

linuxpc 2023. 4. 26. 23:01
반응형

버튼에서 매크로를 호출하고 인수를 전달하는 방법

엑셀 워크시트에 하나의 인수(정수값)를 처리할 수 있는 매크로를 호출하는 버튼을 추가하고 싶습니다.안타깝게도 버튼을 만들 때 인수가 있는 매크로를 연결할 수 없습니다.매크로를 입력하기만 하면 인수가 작동하지 않습니다.

버튼을 눌렀을 때 매크로에 인수를 전달하는 간단한 해결책이 있습니까?

예, 단추(또는 기타 Excel 컨트롤/메뉴 작업)에 매크로를 할당하고 상수 OR 변수 인수를 전달할 수 있습니다.

'매크로 할당' 창(개체를 마우스 오른쪽 버튼으로 클릭하고 '매크로 할당'을 선택)에서 다음을 수행합니다.

  • 매크로 이름을 작은 따옴표로 묶습니다. 예를 들어, 두 개의 상수를 전달합니다.'Button1_Click("A string!", 7)'
  • '매크로인' 필드에서 '이 워크북'을 선택합니다.
  • 변수(예: 셀 값)를 전달하려면 평가()에 매개 변수를 포함합니다.

예를 들어, 다음 값을 전달하는 방법Sheet1!$A$1버튼 기능의 경우 '매크로 이름:' 필드에 다음 텍스트가 표시됩니다.

Button1_Click(Evaluate("Sheet1!$A$1"))

변수 인수를 '평가' 함수로 묶지 않으면 excel은 '공식이 너무 복잡하여 개체에 할당할 수 없습니다.' 오류를 반환합니다.

이것이 제 첫 게시물에 허용되었다면 이미지를 포함했을 것입니다.

아래와 같은 1개의 인수를 공개한다고 가정합니다(설명 목적으로만 사용).

매크로

그리고 아래와 같이 워크시트에 버튼을 삽입하면 이 버튼에 서브를 할당할 때 매크로 이름을 찾을 수 없습니다.

단추

이제 하위 이름 + 공백 + 인수를 아래와 같이 작은 따옴표로 수동으로 입력할 수 있습니다. 확인을 클릭하십시오.

매크로 이름 입력

그러면 문제가 해결됩니다.

결과

Sub ert()
Call ert2(Cells(1,1).Value)
End Sub

액티브X 컨트롤 명령 버튼을 사용하고 버튼 클릭 방법에서 서브를 호출하여 인수를 전달합니다.

Private Sub CommandButton_Click()

  Dim x as Integer
  x = 1
  Call SomeSub(x)

End Sub

단추에서 이 하위 항목을 호출하는 방법:

Public Sub TestButton(strMessage As String)
    MsgBox strMessage
End Sub

매개 변수가 있기 때문에 사용 가능한 매크로에 Sub이 나열되지 않습니다.통화 내용을 작은 따옴표로 입력합니다.'TestButton "Hello"'

워크시트의 일반 "양식" 단추에서 호출하면 다음과 같은 작업을 수행할 수 있습니다.

Sub TestMe()
    Dim c, arr
    c = Application.Caller
    arr = Split(c, "_")
    If UBound(arr) > 0 Then MsgBox "Got " & arr(1)
End Sub

호출 단추의 이름이 "Button_3"인 경우

또는 (간단하게) 버튼을 마우스 오른쪽 단추로 클릭하고 다음을 입력합니다.'TestMe2 5'(단일 견적 포함)

Sub TestMe2(i)
    MsgBox "Got " & i
End Sub

참고 항목:Excel 2010 - 오류: .onAction을 사용하여 매크로 SelectCell을 실행할 수 없습니다.

Personal.xlsb! 'testForXXXX("테스트 테스트")' 버전에 문제가 있었습니다.매크로가 포함된 버튼을 클릭할 때 오류가 발생했습니다.

하지만 "("와 ")를 제거하여 고칠 수 있었습니다.따라서 Personal.xlsb!'testForXXX "TestTest"가 작동했습니다(testForXXX와 "Test..." 사이의 공백에 유의하십시오).

사실, 저는 Personal.xlsb!가 필요하지 않았고 'testForXXXX "TestTest"를 사용할 수 있었습니다.

저는 같은 문제에 부딪혔습니다.assign button모든 .macros표시된 것은 내 파일에서 인수를 사용하지 않은 것뿐입니다.그런 다음 입력했습니다.Personal.xlsb!'macroNameWhichTakesArguments("arg1", ...)'그리고 시트가 그것을 집어 들었습니다.

Personal.xlsb!'testForXXXX("Test Test")'

macro testForXXXX문자열을 입력하면 시트가 정상적으로 작동합니다.

는 다음과 같이 지정합니다.button in excel 2007 적어는testForXXXX변수가 필요한 경우 잠재적 매크로 목록에 표시되지 않습니다.

Aaron C도 이것에 걸려 넘어진 것 같습니다.아마도 사용하지 않는 것이 최선일 것입니다.Personal.xlsb 파일?

QA Collective의 답변에 대해 언급하고 싶지만 아직 평판이 좋지 않습니다.매크로가 VBA 프로젝트의 명명된 모듈에 있기 때문에 이전 솔루션은 작동하지 않았습니다.

Excel 2013에서는 내 컨텍스트에서 작동하는 버튼을 사용하여 매개 변수를 매크로에 전달하는 방법은 다음과 같습니다.

'<module name>.<macro name> <parameter>'

'DataProcessor.disle "myText"'

또는

'DataProcessor.editWSProcess True'

(매개 변수로 전달되는 경우 큰따옴표가 필요하지 않음) 작은따옴표는 전체 식 주위에 있습니다.

언급URL : https://stackoverflow.com/questions/29858176/how-to-call-a-macro-from-a-button-and-pass-arguments

반응형