programing

변수를 사용한 Excel vba 콜서브루틴

iphone6s 2023. 4. 22. 09:08
반응형

변수를 사용한 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

반응형