programing

모듈 또는 시트에 Excel-VBA 코드를 입력하시겠습니까?

minxs 2023. 4. 11. 22:33
반응형

모듈 또는 시트에 Excel-VBA 코드를 입력하시겠습니까?

좋은 관행과 좋은 코드 위생을 알려주세요.모듈 또는 시트에 코드를 삽입하시겠습니까?

이 Excel 워크북은 각 시트에 사용자 인터페이스가 포함되어 있습니다.워크북의 각 시트는 일부 전체 작업의 다른 부분을 수행합니다.각 시트에 관련된 코드를 시트 오브젝트 내부에 배치해야 합니까, 아니면 모듈에 배치해야 합니까?하나의 모듈로 그룹화하시겠습니까, 아니면 다른 모듈로 그룹화하시겠습니까?

Excel 2003을 사용하고 있습니다.

확실히 모듈입니다.

  • 시트를 삭제, 복사, 이동할 수 있어 놀라운 결과를 얻을 수 있습니다.
  • 참조를 완전히 검증하지 않고 시트의 "코드 이면" 코드를 다른 모듈에서 호출할 수 없습니다.이로 인해 시트와 코드가 다른 모듈/시트에 결합됩니다.
  • 모듈을 내보내고 다른 워크북으로 Import하여 버전 관리를 할 수 있습니다.
  • 논리적으로 모듈로 분할된 코드(데이터 액세스, 유틸리티, 스프레드시트 포맷 등)는 유닛으로 재사용할 수 있으며 매크로가 커질 경우 관리가 용이합니다.

Excel VBA와 같은 원시 시스템에서는 툴링이 매우 열악하기 때문에 베스트 프랙티스, 강박적인 코드 위생 및 규약에 대한 종교적 준수가 중요합니다.특히 툴링을 사용하여 조금이라도 복잡한 작업을 수행하려고 하는 경우에는 더욱 그렇습니다.

문서에서는 다양한 유형의 코드 컨테이너의 사용 목적에 대해 설명합니다.이러한 구별이 필요한 이유는 알 수 없지만, 엑셀 플랫폼에서 중요한 애플리케이션을 개발하려는 대부분의 개발자들은 이를 따르고 있다고 생각합니다.

Excel VBA와 직접 관련이 없지만 VBA 코딩 규약 목록도 도움이 됩니다.사이트에 있는 말도 안 되는 명명 규칙은 무시해 주세요. 모두 도 안 되는 헝가리식입니다.

제 경험상 이름 있는 모듈에는 가능한 한 많은 코드를 넣고 실제 워크시트 오브젝트에는 필요한 만큼의 코드만 넣는 것이 가장 좋습니다.

예:워크시트_SelectionChange 또는 워크시트_Calculate와 같은 워크시트 사건을 사용하는 코드입니다.

각 시트 또는 모듈 고유의 기능과 목적에 따라 코드를 분리할 것을 권장합니다.이렇게 하면 시트의 모듈 내부에 시트의 UI에 관련된 코드만 삽입하고 각 모듈에 관련된 코드만 삽입할 수 있습니다.또한 다른 여러 시트 간에 공유 또는 재사용되는 코드를 캡슐화하려면 별도의 모듈을 사용하십시오.

예를 들어, 데이터베이스의 데이터를 특수한 방법으로 표시하는 여러 시트를 사용한다고 가정합니다.이 경우 어떤 기능을 사용할 수 있습니까?각 시트에 관련된 기능, 데이터베이스에서 데이터를 가져오는 작업, 시트에 데이터를 입력하는 작업 등이 있습니다.이 경우 데이터 액세스용 모듈로 시작하여 시트를 데이터로 채우는 모듈로 시작하고 각 시트에는 코드에 액세스하기 위한 코드가 포함되어 있습니다.

이렇게 배치될 수도 있어요.

모듈: Data Access:

Function GetData(strTableName As String, strCondition1 As String) As Recordset
    'Code Related to getting data from the database'
End Function

모듈: 입력시트:

Sub PopulateASheet(wsSheet As Worksheet, rs As Recordset)
    'Code to populate a worksheet '
End Function

시트: 시트 1 코드:

Sub GetDataAndPopulate()
    'Sample Code'
     Dim rs As New Recordset
     Dim ws As Worksheet
     Dim strParam As String
     Set ws = ActiveSheet
     strParam = ws.Range("A1").Value

     Set rs = GetData("Orders",strParam)

     PopulateASheet ws, rs
End Sub

Sub Button1_Click()
    Call GetDataAndPopulate
End Sub

언급URL : https://stackoverflow.com/questions/3255478/put-excel-vba-code-in-module-or-sheet

반응형