Professional Documents
Culture Documents
xls
Excel Programmer(외국에서 보면, 사실은 외국의 홈페이지, News Group에서 보면) 엑셀 프로그래머 또는
Solution Provider, Spreadsheet Developer라는 말들을 많이 합니다. 단순히 엑셀을 사용하는 것이 아니라
VBA를 사용해서 업무의 특성에 맞도록 여러가지 솔루션을 만드는 별도의 직업이 존재한다고도 하더군요
With ~ End With 구문은 하나의 오브젝트에 대해 여러 가지 조작을 할 때 코드자체를 매우 간결하게 표현할 수
있도록 해 줍니다. 옆의 버튼을 누르세요.
Sub ChangeFont()
Range("b24").ClearContents
Range("b24").Value = "Learning Visual Basic"
Range("b24").Select
Selection.Font.Name = "Arial"
Selection.Font.FontStyle = "Bold Italic"
Selection.Font.Size = 12
Selection.Font.ColorIndex = Rnd() * 56 + 1
Selection.Font.Underline = xlSingle
End Sub
위의 프로시저는 range 오브젝트에 대해 3개의 프로퍼티를, font 오브젝트에 대해 5개의 프로퍼티를 사용해서
작업을 하고 있는데 매번 오브젝트명을 다 불러서 작업을 하고 있습니다. 이렇게 하면 보기에도 좋지 않을뿐
아니라 수행속도도 느려터지게 됩니다.(지금은 코드가 짧아서 별로 큰 차이는 나지 않겠지만…)
Sub ChangeFont2()
With Range("b50")
.ClearContents
.Value = "Learning Visual Basic"
.Select
End With
With Selection.Font
.Name = "Arial"
.FontStyle = "Bold Italic"
6쪽 중 1쪽
01/22/2021 20:52:20 Sheet1 506906196.xls
.Size = 12
.ColorIndex = Rnd() * 56 + 1
.Underline = xlSingle
End With
End Sub
Sub ShowName()
Dim sht As Worksheet
For Each sht In Worksheets
MsgBox sht.Name, , "//Exceller"
Next sht
End Sub
워크북 오브젝트 내의 워크시트 컬렉션을 For Each ~ 라는 구문에 의해 하나씩 접근해 가면서 해당작업을
진행하는 프로시저이지요.
또다른 예를 살펴볼까요?
Sub ColoringCells()
Dim rngCell As Range
'rngCell이라는 변수를 하나 정의해 주고,
Range("Stage").Clear
'Stage라는 영역의 내용을 없앤 다음,
6쪽 중 2쪽
01/22/2021 20:52:21 Sheet1 506906196.xls
rngCell.Interior.ColorIndex = Rnd * 56
'각 rngCell(즉 Stage라는 영역 내의 각각의 셀)에 대해 ColorIndex(셀에 색깔을 입히는 속성입니다
'지정해 주라는 명령이지요. 가만있자 Rnd라는 명령에 대해 설명을 드렸던가요? 세가지 강좌를 병행
'하려니까 마구 헷갈리네요. 또 하지요 뭐!
'Rnd는 0과 1사이의 임의의 숫자를 발생시켜 주는 Visual Basic 명령어 입니다. Excel에서도 이와 유사한
'함수가 있습니다. 워크시트 내의 아무 셀에나 가서 =rand()라고 입력하고 엔터키를 쳐 보세요. 0~1
'에 있는 임의의 수가 나타날 것입니다.
'그리고 ColorIndex는 1에서 56까지의 값을 갖습니다. 즉,
'ColorIndex가 1이면 검정색,
'ColorIndex가 2이면 흰색,
'ColorIndex가 3이면 빨간색,
'ColorIndex가 4이면 연두색,… 등 총 56가지의 색상값이 숫자 형태로 저장이 되어 있습니다.
'각 색상값에 대해서는 도움말을 참고하시기 바랍니다.
Next rngCell
End Sub
다음 시간에 또…
5/22/2000
6쪽 중 3쪽
01/22/2021 20:52:21 Sheet1 506906196.xls
6쪽 중 4쪽
01/22/2021 20:52:21 Sheet1 506906196.xls
6쪽 중 5쪽
01/22/2021 20:52:21 Sheet1 506906196.xls
6쪽 중 6쪽