다른 서브에서 Excel VBA를 호출하는 여러 입력, 다양한 크기의 출력
같은 모듈에 있는 다른 잠수함의 잠수함을 호출하고 싶습니다.첫 번째 서브가 메인 코드이고 두 번째 서브루틴을 호출합니다.두 번째 서브루틴은 정수, 이중, 이중 배열 및 이중 행렬로 여러 입력을 수신합니다.배열과 행렬의 크기가 알려져 정수 변수에 저장됩니다.또한 서브는 여러 출력을 반환합니다.그래서 이런 걸 해보고 싶어요.
sub Main()
Nc As integer
Dim kij(1 To Nc, 1 To Nc), xi(1 to Nc), a1 As Double
'I assign values to my variables from the excelsheet e.g. Nc=Cells(1,1) etc.
CalculateA(Nc,kij, xi, a1, a)
Cells(5,5)=a
end sub
sub CalculateA(Nc as integer,kij as matrix double, xi as array double, a as Double)
a=0
For i=1 To Nc
For j=1 To Nc
a = a + kij(i,j)*x(i)*x(j)
Next j
Next i
a = a*a1
end sub
어떤 서브가 주 서브인지 어떻게 알 수 있을까요?secondary sub를 위에 올려놓고 코드를 bottom subroutine부터 시작할 수 있을까요?
다른 서브 내의 서브를 호출하려면 다음 작업만 수행하면 됩니다.
Call Subname()
그래서 당신이 가지고 있는 것은CalculateA(Nc,kij, xi, a1, a)
필요한 것은call CalculateA(Nc,kij, xi, a1, a)
어떤 문제가 먼저 실행되느냐에 따라 서브를 실행할 때 매크로목록에서 실행할 서브를 선택하고 실행할 수 있습니다.키숏컷을 지정할 수도 있기 때문에 이들 키를 누르면 실행할 수 있습니다.하지만, 2차 잠수정에서는 주로Private sub CalculateA(...)
이렇게 하면 매크로 목록에 표시되지 않고 작업하기 쉬워집니다.
도움이 되길 바라, 브루노
PS: 이 커뮤니티가 코드를 요구하는 커뮤니티가 아닌 다른 질문이 있으면 "Excel VBA 포맷으로 쓸 수 있으면 좋겠다"가 아니라 실행 중이 아닌 질문이나 코드를 가지고 와서 도움을 요청합니다.
이건 정말 두 가지 질문입니다.
첫 번째 응답은 다음과 같습니다.VBA의 서브 콜
두 번째 protip: VBA에는 메인 서브루틴이 없습니다.절차적, 범용적인 언어는 잊어버리세요.VBA 서브는 "매크로스"입니다.Alt+F8 키를 누르거나 워크시트에 버튼을 추가하고 자동으로 생성된 "ButtonX_Click" 서브에서 원하는 서브를 호출하여 실행할 수 있습니다.
VBA 서브는 매크로가 아닙니다.VBA 서브는 매크로가 될 수 있지만 반드시 필요한 것은 아닙니다.
매크로라는 용어는 기록된 사용자 작업에만 사용됩니다.이러한 액션으로부터 코드가 생성되어 서브에 저장됩니다.이 코드는 단순하며 루프와 같은 강력한 구조를 제공하지 않습니다(예: Do ..).까지그 다음에...하는 것, 그리고 다른 것.
보다 우아한 방법은 매크로 기능을 사용하지 않고 자신만의 VBA 코드를 설계하고 작성하는 것입니다!
VBA는 객체 기반의 이벤트 지향 언어입니다.서브(또는 서브 루틴)는 전용 이벤트에 의해 시작됩니다.버튼을 누르거나 워크북을 열거나 기타 많은 매우 구체적인 이벤트가 발생할 수 있습니다.
VBA가 아닌 VB6에 초점을 맞춘다면 메인 윈도 또는 메인 폼이 항상 존재함을 나타낼 수 있습니다.이 폼은 컴파일된 실행 파일 "xxxx.exe"를 시작하면 시작됩니다.
VBA에서는 이와 같은 것은 없지만 Excel에서 시작하는 XLSM 파일이 있습니다.Workbook_Open 이벤트에 코드를 첨부할 수 있습니다.이 이벤트는 워크북이라고 하는 원하는 Excel 파일을 열면 생성됩니다.워크북에는 워크시트가 있습니다.
엑셀의 오브젝트 모델에 익숙해지면 편리합니다.워크북에는 몇 가지 이벤트와 방법이 있습니다.또한 워크시트에는 여러 사건 및 방법이 있습니다.
개체 기반 모델에는 이벤트와 메서드가 포함된 개체가 있습니다. 메서드는 개체로 수행할 수 있는 작업입니다.이벤트는 물체에 일어날 수 있는 일입니다.개체는 다른 개체를 포함할 수 있습니다.시트나 차트와 같은 새 개체를 만들 수 있습니다.
언급URL : https://stackoverflow.com/questions/16763112/excel-vba-calling-sub-from-another-sub-with-multiple-inputs-outputs-of-differen
'programing' 카테고리의 다른 글
추적되지 않은 파일을 어떻게 저장합니까? (0) | 2023.04.17 |
---|---|
Swift 2.0 - 2진수 연산자 "|"를 2개의 UIUser Notification에 적용할 수 없습니다.피연산자 (0) | 2023.04.12 |
16진수 색상 값 사용 방법 (0) | 2023.04.12 |
이 file.sh을 더블클릭으로 실행 가능하게 하려면 어떻게 해야 하나요? (0) | 2023.04.12 |
명령이 빈 문자열을 출력하는지 테스트합니다. (0) | 2023.04.12 |