Class Module
일반적인 방법과 크래스모듈을 사용함을 비교해보자
그림과 같이 도형을 워크시트에 만들고
도형의 이름의 두문자를 "shp"라고 한후
아래의 프로시져를 실행하면
도형의 위치와 크기가 각각 바뀐다
이동하면서 이동하는 곳에 당초에 있었던 도형의 정보를
어디엔가 저장(관리)하여야 할것이다
Type MyShape
Left_ As Single
Top_ As Single
Width_ As Single
Height_ As Single
End Type
Sub RelocateShapes()
Dim shpX As Shape
Dim shpArray() As MyShape
Dim shpNameArray() As String
Dim iX As Integer, iY As Integer
Dim iNum As Integer
Dim myShapeTemp As MyShape
Dim iRandom_1 As Integer, iRandom_2 As Integer
For Each shpX In ActiveSheet.Shapes
If Left(shpX.Name, 3) = "shp" Then
ReDim Preserve shpArray(iX)
With shpArray(iX)
.Height_ = shpX.Height
.Width_ = shpX.Width
.Left_ = shpX.Left
.Top_ = shpX.Top
End With
ReDim Preserve shpNameArray(iX)
shpNameArray(iX) = shpX.Name
iX = iX + 1
End If
Next
iNum = UBound(shpArray)
Debug.Print iNum
For iX = 1 To 100
iRandom_1 = Int(Rnd() * (iNum + 1))
Do
iRandom_2 = Int(Rnd() * (iNum + 1))
Loop While iRandom_1 = iRandom_2
myShapeTemp = shpArray(iRandom_1)
shpArray(iRandom_1) = shpArray(iRandom_2)
shpArray(iRandom_2) = myShapeTemp
For iY = 0 To iNum
With ActiveSheet.Shapes(shpNameArray(iY))
.Left = shpArray(iY).Left_
.Top = shpArray(iY).Top_
.Width = shpArray(iY).Width_
.Height = shpArray(iY).Height_
End With
Next
DoEvents
Next
End Sub
위의 내용은 사용자정의 변수를 이용한 전통적방식의 코딩이다
이것을 크래스모듈을 활용하면서 비교하여 보고
크래스모듈의 사용이 자연스러워지도록 해보자
ClassModule_03.