엑셀을 제어하기위해서 프로그래밍을 배우기 시작했지만, 자바스크립트를 계속 공부하고 있어서 사실상 실무적으로 도움이 별로 되고 있지는 않다. 그래서 오늘은 일단, 실무에서 좀더 업무를 원활하게 하기 위해서 엑셀 VBA를 공부해 보기로 했고, 유튜브에 관련 실습 과제를 굉장히 잘 정리해서 올려주신 분이 있어서 보고 공부하고 있다.
★엑사남님 블로그
https://www.youtube.com/watch?v=ankMjLXyRmE&list=PLX_j6S8lDkZ_Wr0S9fGLX6utD_Uznj6Dg&index=5
여기에서 다양한 소스코드를 알려주시는데, 확실히 자바스크립트를 그래도 1년가까이 끄적대다보니 구조를 이해하기가 쉬웠다. 다만, 변수선언이라든가 형식이 달라서, 코드를 정리해볼 필요가 있을것 같아서 공부용으로 정리해둔다.
#. 1강의 내용
// 열에 반복으로 숫자를 넣어주는 매크로코드.
Sub test1()
// vba에서는 시작시 sub선언을 해준다.
Dim i As Long
// 변수 선언 및 해당 변수 타입선언. long이 숫자이다.
For i = 1 To 9
// 반복문
Cells(i, 1) = i
// Cells ( row , colum ) 행,열인데.. 한국어가 더 헷갈린다..
Next
// 반복문 종료시 next를 꼭 해주어야함.
End Sub
Sub gugudan()
Dim i As Long
Dim j As Long
// 포문을 중첩해서 사용할 수 있다.
// 열행을 잘 따져야되서, 공간지각력(?)이 딸린다.. (= 머리아프다.)
For i = 1 To 9
For j = 1 To 9
Cells(j, i) = i * j
Next
Next
End Sub
#. 2~5강의 내용
Sub shape_color()
Dim sh As Object
// 오브젝트를 선언
Dim lngC As Long
For Each sh In ActiveSheet.Shapes
// 오브젝트에 현재 활성화된 시트의 도형들을 담아준다.
lngC = lngC + 1
//색변경_ 좀 더 공부를 해야겠지만, 하나씩 증가하며 해당 색번호를 바꿔준다고 한다.
sh.Left = Range("b1").Left
//sh의 왼쪽은 b1셀의 왼쪽
//여기서 오브젝트를 어떤 개념으로 쓰고 있는지 이해가 잘 안됨.
sh.Fill.ForeColor.SchemeColor = lngC
//sh에 색을 lngC번호의 색을 넣어라 라는 명령어인듯.
//색변경의 경우, 별로 사용할 일이 없으므로 일단 관련 공부는 패스.
Next
End Sub
+) 추가공부내용 VBA의 Object
https://www.youtube.com/watch?v=7aJuLgiJpSs
Sub test()
Dim myName As String
Dim myage As Integer
myName = "hi"
myage = 20
MsgBox myName
MsgBox myage
//일반 변수는 직접 할당이 가능하다.
End Sub
Sub test()
Dim myRange As Range
Set myRange = Sheet1.Range("a1")
//객체의 경우 set지정이 필요하다.
myRange.Value = "hi"
//myRange를 객체로 지정했기 때문에, 그 안에 지정된 속성들을 사용할 수 있다.
//myRange의 키값 중 value를 지정하면 엑셀에 값을 넣어준다.
MsgBox myRange.Address
MsgBox myRange.ColumnWidth
//지정된 속성들이 나타나는걸 볼 수 있다.
myRange.ColumnWidth = 30
myRange.Interior.Color = vbYellow
End Sub
마지막행렬정리
Sub test_1()
Dim i As Long
Dim lngR As Long
lngR = Range("B10000").End(xlUp).Row
//열 B10000을 맨 끝으로 보고, 위로 올라가면서, 첫번째 값이 있는 행을 맨 끝행으로 본다.
For i = 3 To lngR
If Cells(i, 2) < 600 Then
Cells(i, 2).Font.Color = 255
Cells(i, 3) = "warning"
End If
Next
End Sub
Sub colum_2()
Dim i As Long
Dim lngC As Long
lngC = Range("iv2").End(xlToLeft).Column
//행 iv2를 맨 끝으로 보고,왼쪽으로 가면서, 첫번째 값이 있는 열을 맨 끝열로 본다.
For i = 6 To lngC
If Cells(2, i) < 600 Then
Cells(2, i).Font.Color = 255
Cells(3, i) = "warning"
End If
Next
End Sub
글이 길어져서 마무리.
'Excel - VBA' 카테고리의 다른 글
엑셀 VBA 코드정리 _ 엑셀남 7강 (0) | 2020.07.28 |
---|
댓글