반응형
변수를 사용한 Excel vba 콜서브루틴
다음 서브루틴을 정의했습니다.
Sub EnterCellValueMonthNumber(cells As range, number As Integer)
range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
서브루틴을 다음과 같이 호출하면:
EnterCellValueMonthNumber ("N23:Q23",1)
다음의 에러 메세지가 표시됩니다.
Compile error Expected: =
왜 이런 메시지를 받는지 모르겠어요.내가 뭘 놓쳤는지 아는 사람?
그 잠수함을 다음과 같이 부를 수 있습니다.
EnterCellValueMonthNumber "N23:Q23", 1
괄호 없음또는
Call EnterCellValueMonthNumber("N23:Q23", 1)
괄호 및Call그 전에.
또한 Sub는 Range 개체를 첫 번째 인수로 예상하고 문자열을 제공합니다. Sub의 시그니처를 다음과 같이 변경해야 합니다.
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
또, 이 코드로 달성하려고 하는 것은, 범위의 왼쪽 상단 셀을 1로 설정하는 것 뿐이기 때문에 불명확합니다.뭐랄까?
Range(cells).Value = number
' Or, if you're going to be passing in something more complex later...
Range(cells).FormulaR1C1 = number
더 적절한가요?
또, 이 제품을 사용하는 것도 매우 조심하고 있습니다.Range("...")어떤 시트를 참조하고 있는지 지정하지 않습니다.이는 활성 시트 중 하나에 작용하므로 예기치 않은 문제가 발생할 수 있습니다.SheetX.Range("...")사용법도 마찬가지입니다..Select이것은 불필요하고, 장래에 당신에게만 문제를 일으킬 수 있습니다.
두 가지 문제가 있습니다.
먼저 질문에 대한 실제 답변입니다.다음과 같이 말할 필요가 있습니다.
Call EnterCellValueMonthNumber("N23:Q23",1)
하지만 실행해도 동작하지 않습니다.cells타입의range...타입으로 설정string대신 다음을 사용합니다.
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
다음 코드를 사용해 보십시오.
Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
언급URL : https://stackoverflow.com/questions/6252287/excel-vba-call-subroutine-with-variables
반응형
'programing' 카테고리의 다른 글
| HTTPPOST에서 양식 값을 검색하는 방법, 사전 또는? (0) | 2023.04.27 |
|---|---|
| WPF 프리뷰이벤트란? (0) | 2023.04.22 |
| Azure WebApp URL 이름을 변경하는 방법 (0) | 2023.04.22 |
| OneDrive를 통한 Excel의 풀네임 속성 (0) | 2023.04.22 |
| WPF 데이터 바인딩 및 검증 규칙의 베스트프랙티스 (0) | 2023.04.22 |