2017-11-29 2 views
4

"downvotable"질문 인 경우 사전에 사과하지만 VBA 프로젝트에서 클래스를 만들려면 어떻게해야 하는지를 이해하는 데 도움이 필요합니다.VBA 클래스 결정

참고 : 클래스를 코딩하는 방법을 묻지 않습니다. 나는 무엇을 위해 수업을 할 것인지 결정할 방법을 묻는다.

내가 파워 포인트 슬라이드에 모양을 그릴 할

. 내가 그릴 필요가있는 3 가지 종류의 도형 중 2 가지는 동일한 속성과 메서드를가집니다. CShape 또는 3 클래스 : CCircle, CSquare, CRectangle이라는 클래스를 하나 생성합니까? 또한 선은 PowerPoint에서 모양으로 간주됩니다. CLine 클래스를 추가하거나 모든 항목을 CShape에 함께 묶어 야하나요?

나는 Google에서 을 검색했으며 VBA에서 클래스를 결정하는 방법은과 같지만 아무것도 찾을 수 없습니다. 누구도 프로젝트의 수업을 만드는 방법 (그리고 그 이유)을 결정하는 방법이나 방법을 가지고 있습니까?

또한 클래스 및 인터페이스에 들어가기 시작했으며이 프로젝트를 처음 사용했습니다. 감사합니다.

UPDATE

내가 이것을 발견했다 : When to use a Class in VBA?는 재사용 할 수있는 코드로 작업

+0

.net과 같은 일부 .net 언어를 사용하는 것이 좋습니다. C# 당신이 수업을 항상 필요로하고 이런 식으로 '이해'하고 그들이 무엇에 좋은지, 어떻게 식별 하는지를 배우십시오. 그런 다음 VBA로 다시 이동하면 이미 '알 것입니다'. – dee

+0

@dee 감사합니다! 사실 C# Player 's Guide Second Edition_이라는 책을 사서 다시 읽었습니다. 클래스 결정을 내리는 방법에 대한 통찰력을 줄 것입니다. – Brian

답변

2

는,이 클래스를 사용하는 완벽한 시간이다.

오류 및 가능한 잘못된 항목을 처리하는 절차가있는 클래스를 만들어야합니다. 훨씬 강력하게 코드를 만들 수 있으므로 수업은 예상대로 작동합니다. 저는 PowerPoint에서 작업하고 문서 속성을 조작하기위한 몇 가지 클래스를 만들고 슬라이드를 조작하는 클래스, 모양을 조정하는 클래스를 작성했습니다.

칩 피어슨 사이트에서 몇 가지 클래스 예제를 찾을 수 있으며 자신 만의 클래스를 만드는 방법을 알 수 있습니다. 이 도움이

http://www.cpearson.com/Downloads/Downloads.aspx

희망.

+1

그러나 재사용 가능한 함수의 라이브러리를 빌드하는 것은 또한 좋은 것일 수 있습니다 ... –

1

VBA (Visual Basic 6과 거의 동일)는 상속을 지원하지 않습니다.

몇 가지 옵션이 있으므로 인터페이스를 사용하면 일반적인 방법으로이를 처리 할 수 ​​있습니다. 따라서 각 클래스에 IDrawable 인터페이스를 구현할 수 있습니다. 이러한 기능을 다루는 기본 클래스가 있고 외부 클래스가 기본 클래스로 호출되도록 할 수 있습니다.

IDrawable에는 드로잉, 위치, 색상 및 penwidth에 대한 공용 멤버가있을 수 있으며 다른 매개 변수는 개별 클래스의 일부입니다.

특히 Liskov 대체 원리를 읽어야합니다. 나는하지 말아야 할 것들의 예로서 직사각형과 사각형을 사용하는 예제를 보았습니다.

내가 20 년 이상 VBA를 사용하고있다 예를 Is deriving square from rectangle a violation of Liskov's Substitution Principle?

+0

실제로'Draw '라는 메소드로'IShape'라는 인터페이스가 있습니다. 그러나 다른 객체 컬렉션을 반복 할 때 인터페이스의 일부가 아닌 각 클래스의 다른 속성에 도달하는 것은 어렵습니다. 더 일반적으로, 나는 단지 클래스를 결정하는 방법이 있는지 알고 싶다. 너무 주관적인 질문 일 수 있습니다. – Brian

0

이 오래된 질문을 참조하고, 클래스 모듈의 거의 사용했다.
나를 위해 가장 유용한 사례는 구조화 된 스프레드 시트 나 복잡한 텍스트 파일 (몇 개의 물리적 행에 걸쳐 논리적 행이있는)을 나타내는 클래스를 작성하여 쿼리하거나 탐색해야하는 경우입니다.
그런 다음 .EoF, .Price, .Rate과 같은 몇 가지 속성을 구현하면 해당 입력 파일 '레이아웃'을 사용하는 모든 곳에서 해당 클래스를 다시 사용할 수 있고 클래스에 캡슐화 된 복잡한 로직을 가질 수 있습니다.