본문 바로가기
Excel - VBA

엑셀 VBA 코드 정리

by 시계의온도 2020. 7. 27.

엑셀을 제어하기위해서 프로그래밍을 배우기 시작했지만, 자바스크립트를 계속 공부하고 있어서 사실상 실무적으로 도움이 별로 되고 있지는 않다. 그래서 오늘은 일단, 실무에서 좀더 업무를 원활하게 하기 위해서 엑셀 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

댓글