반응형

이번 강좌에서는 셀에 입력되어 있는 컬러 값을 이용하여 셀의 색상을 지정하는 방법을 알아보도록 하겠습니다. 디자이너 분들이라면 언제가 한번쯤은 엑셀 시트에 자신이 정의한 컬러 값을 정리해서 보내야 하는 경우가 생길 수 있게 마련입니다. 요구사항을 내는 담당자는 포토샵이나 일러스트 보다는 엑셀이 더 익숙하기 때문에 엑셀로 정의되어 있는 컬러값을 전달 받기를 원하게 마련입니다. 물론 우리는 스마트하게 컬러까지 딱 채워서 보내주면 담당자가 아주 흡족해 하겠죠.

먼저 셀에 컬러를 표현할 수 있는 RGB 에 대한 색상이 저장되어 있다는 가정하에 코드를 작성할 예정입니다. 셀에 입력되어 있는 값이 여러가지 경우가 있을 수 있기 때문에 오늘은 그 여러가지 경우의 컬러를 지정하는 방법을 알아볼 예정입니다.

먼저 셀의 색상을 지정하는 코드는 아래와 같습니다.

Cells(1,1).Interior.Color = RGB(255,255,255)

여기서 Cells(1,1) 부분은 For each c 라는 식의 반복문에서 c 로 변경하여 적용하면 됩니다.

 

오늘 알아볼 색상 적용 방법은 다음과 같습니다.

 

  • 6자리 HEX 코드로 입력된 셀에 색상을 입히는 방법
  • HEX값이 R,G,B 로 각각 나뉘어 기록되어 있는 경우 색을 칠하는 방법
  • RGB 값이 각각 셀에 지정되어 있을 때 색을 칠하는 방법
  • RGB 값이 하나의 셀에 특정한 구분자를 이용하여 적용되어 있을 때 색을 칠하는 방법

 

 

6자리 HEX 코드로 입력된 셀에 색상을 입히는 방법

 

먼제 셀에 아래와 같은 형식으로 입력이 되어 있다고 가정하고 코드를 작성해 보겠습니다.

 

색상 코드에 # 가 붙어있는 녀석도 있고 없는 녀석도 있군요

이런 경우라면 약간의 판단 코드가 추가되어야 하겠습니다.

아래 코드를 보시죠.

Sub setColor()


    Dim rngA As Range
    Dim c As Range
    
    Dim cur_value As String
    
    Dim c_red As String
    Dim c_green As String
    Dim c_blue As String
    
    Set rngA = [A1:A10]

    For Each c In rngA
    
        '첫글자가 # 이라면 #을 빼내주는 코드
        If InStr(c.Value, "#") Then
            cur_value = Mid(c.Value, 2, Len(c.Value) - 1)
        Else
        	cur_value = c.Value
        End If
        
        ' 6자리의 문자열에서 RGB 의 각각 색상으로 구분하여 주는 방법
        c_red = Left(cur_value, 2)
        c_green = Mid(cur_value, 3, 2)
        c_blue = Right(cur_value, 2)
        
        ' RGB 로 나뉘어진 16진수 값을 0~255 의 자연수로 변경해주는 함수
        c_red = WorksheetFunction.Hex2Dec(c_red)
        c_green = WorksheetFunction.Hex2Dec(c_green)
        c_blue = WorksheetFunction.Hex2Dec(c_blue)
        
        c.Interior.Color = RGB(c_red, c_green, c_blue)
        
    Next c
        
    

End Sub

실행시켜 보시면 요렇게 셀에 예쁘게 색상이 적용이 됩니다.

여기서 코드중에 WorksheetFunction.Hex2Dec(c_blue) 라는 코드가 있는데요. WorksheetFunction 이라 하면 엑셀 상단에 함수 작성하는 계산식 입력창이 있죠? 여기에 사용되는 함수가 바로 WorksheetFunction 인데요. 그 함수들 중에 Hex2Dec 라는 함수를 가져와서 쓰겠다는 것 입니다. 엑셀에는 이미 많은 훌륭한 함수 들이 있기 때문에 엑셀 vba 에서 그것들을 이용함으로써 빠르고 손쉽게 코딩이 가능하다는 장점이 있습니다.

 

HEX값이 R,G,B 로 각각 나뉘어 기록되어 있는 경우 색을 칠하는 방법

 

이번에는 아래와 같이 RGB 가 셀마다 정의되어 있는데 이 값이 Hex인 경우입니다.

위에서 작성한 코드가 거의 대부분 재활용될 예정이므로 어떤 부분이 변경이 되는지 잘 보시기 바랍니다.

Sub setColor()


    Dim rngA As Range
    Dim c As Range
    
    Dim cur_value As String
    
    Dim c_red As String
    Dim c_green As String
    Dim c_blue As String
    
    Set rngA = [A1:A10]

    For Each c In rngA
    
        ' c 를 기준으로 우측 첫번째, 두번째 칸의 값을 각각 변수에 적용
        c_red = c.Value
        c_green = c.Offset(0, 1).Value
        c_blue = c.Offset(0, 2).Value
        
        ' RGB 로 나뉘어진 16진수 값을 0~255 의 자연수로 변경해주는 함수
        c_red = WorksheetFunction.Hex2Dec(c_red)
        c_green = WorksheetFunction.Hex2Dec(c_green)
        c_blue = WorksheetFunction.Hex2Dec(c_blue)
        
        c.Interior.Color = RGB(c_red, c_green, c_blue)
        c.Offset(0, 1).Interior.Color = RGB(c_red, c_green, c_blue)
        c.Offset(0, 2).Interior.Color = RGB(c_red, c_green, c_blue)
        
    Next c
        
    

End Sub

 

2022.12.02 - [DEV/VBA] - [excel vba] 16진수를 10진수로, 10진수를 16진수로 변경

위의 코드를 실행시켜 보시면 아래와 같이 색상이 칠해지는 것을 알 수 있습니다.

이번에는 이미 값이 분리 되어 있으므로 c 라는 셀을 기준으로 우측 첫번째, 두번째 값을 RGB 변수에 저장하는 과정이 들어갔습니다.

별다를건 없죠?

 

 

RGB 값이 각각 셀에 지정되어 있을 때 색을 칠하는 방법

보통은 첫번째 케이스와 아래와 같은 케이스가 가장 많을 것 같습니다. 

위의 두가지 케이스를 직접 해보셨다면 아래의 케이스는 이제 감이 잡이실것 같은데요.

네. 바로 Hex --> Dec 로 변경하는 코드는 여기에선 필요가 없습니다. 그냥 바로 셀에 적용하면 되겠죠?

Sub setColor()

    Dim rngA As Range
    Dim c As Range
    
    Dim cur_value As String
    
    Dim c_red As String
    Dim c_green As String
    Dim c_blue As String
    
    Set rngA = [A1:A10]

    For Each c In rngA
    
        cur_value = c.Value
        
        ' 6자리의 문자열에서 RGB 의 각각 색상으로 구분하여 주는 방법
        c_red = c.Value
        c_green = c.Offset(0, 1).Value
        c_blue = c.Offset(0, 2).Value        
        
        c.Interior.Color = RGB(c_red, c_green, c_blue)
        c.Offset(0, 1).Interior.Color = RGB(c_red, c_green, c_blue)
        c.Offset(0, 2).Interior.Color = RGB(c_red, c_green, c_blue)
        
    Next c           

End Sub

요렇게 적용하시면 됩니다. 적용 결과는?

네 .. 이렇게 잘 색칠이 되었네요.

 

 

RGB 값이 하나의 셀에 적용되어 있을 때 색을 칠하는 방법

네 마지막으로 RGB 값이 하나의 셀에 적용되어 있을때 입니다. 보통은 , 로 255,235,223 이런식으로 구분을 하여 넣어 주겠죠. 위에 LEFT, MID, RIGHT 와 같은 문자열의 위치를 이용하여 잘라내기가 쉽지 않습니다. 숫자가 1~3자리까지 다양하게 나올 수 있기 때문에 좀 다른 방법으로 글자를 떼어내볼 예정입니다.

여기서 사용할 함수는 Split 이라는 함수고요. 특정 글자를 이용하여 문자열을 배열로 잘라 나눠담아 주는 함수 입니다.

바로 엑셀에 이렇게 값이 들어있는 경우입니다.

Sub setColor()

    Dim rngA As Range
    Dim c As Range
    
    Dim cur_value() As String
    
    Dim c_red As String
    Dim c_green As String
    Dim c_blue As String
    
    Set rngA = [A1:A10]

    For Each c In rngA
    
        cur_value = Split(c.Value, ",")
        
        ' 문자 배열에서 RGB 의 각각 색상으로 꺼내어 적용해주는 주는 방법
        c_red = cur_value(0)
        c_green = cur_value(1)
        c_blue = cur_value(2)
        
        c.Interior.Color = RGB(c_red, c_green, c_blue)
        
    Next c
            
End Sub

코드를 보면 크게 달라진건 없는데요. 배열에 값을 담기위한 배열 변수를 선언해 주는 부분, Split 을 이용하여 문자열을 분리하는 작업, 배열의 값을 각 색상별 변수에 적용하는 과정이 약간 차이가 있습니다.

Dim cur_value as string --> 일반 적인 문자열 변수

Dim cur_value() as string --> 배열 형식의 문자열 변수

문자열을 배열에 담기 위하여는 위와 같은 배열 형의 문자열 변수를 선언해주어야 합니다.

이후 Split (자를 문자, 구분자) 를 이용하여 잘라 배열 변수에 담게 되면 잘라진 각각의 내용을 하나씩 꺼내어 사용할 수 있게 됩니다.

 

 

어렵지 않죠? 

 

여기까지 하여 셀에 색상을 적용하는 스크립트를 마무리 해보겠습니다.

셀에 색상을 모두 지우는 스크립트도 준비하여 올려보도록 하겠습니다.

 

감사합니다.

도움이 되셨다면 공감~

2019/09/02 - [DEV/VBA] - [vba] 엑셀 시트의 모든 색상의 셀 색상 제거하기

 

[vba] 엑셀 시트의 모든 색상의 셀 색상 제거하기

요이번 강좌는 에셀 시트의 모든 셀의 색상을 한번에 제거하는 방법을 알려 들리려고 합니다. 강좌라고 할것도 없을 만큼 간단한 스크립트인데요. select all 한다음 셀 색상을 빼내도 되긴 하겠지만 자동화 과정..

diy-dev-design.tistory.com

2020/01/30 - [분류 전체보기] - [vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

 

[vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

이번 포스트에서는 vba 를 이용하여 셀의 속성을 조정하는 방법을 설명 드리겠습니다. 엑셀은 단순한 표의 형식을 취하고 있지만 셀의 간격이나 테두리 등의 속성을 자유롭게 조정할 수 있어 다양한 서식에 사용하..

diy-dev-design.tistory.com

2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

2019/08/12 - [DEV/VBA] - [VBA] 문자열 가지고 놀기

 

[VBA] 문자열 가지고 놀기

안녕하세요. 이번 글에서는 VBA 에서 문자열을 가지고 무엇인가를 하는 것을 알아보겠습니다. 프로그래밍을 하다 보면 조건을 가지고 어떤 액션을 해야 하는 결우가 무척 많은데요. 그중에 대표적인 것의 하나가..

diy-dev-design.tistory.com

 

 

 

 

 

반응형
반응형

오늘은 엑셀 시트에 있는 모든 그림을 한번에 삭제하는 스크립트를 만들어 보겠습니다. 엑셀 시트에 첨부된 그림을 일일이 또는 어떤 조건에 맞는 모든 그림을 삭제 하는 것은 매우 귀찮은 일입니다. 일단 다중 선택을 위하여 하나하나 그림 개체를 선택해 주어야 하는데 대상을 잘못 클릭하거나 그 대상이 수백개 이상일 때는 정말 난처한 상황이 발생되죠.

그래서 이번에는 엑셀 시트에 있는 모든 그림을 삭제하는 방법 또는 특정 영역에 있는 모든 그림을 삭제하는 방법을 포스팅 하려고 합니다.

 

스크립트 내용은 아주 짧으니 참고하시면 됩니다.

 

Sub delPic() '영역안의 사진 지우기

    Dim cwkbook As Workbook
    Dim cwkSht As Worksheet
    
    Dim shpC As Shape
    Dim rngShp As Range
    Dim rngAll As Range
    Dim rngStartValue As String
    Dim rngEndValue As String
    
    Set cwkbook = ActiveWorkbook
    Set cwkSht = cwkbook.ActiveSheet
    
    rngStartValue = "A1"
    rngEndValue = "z9999"
    
    Set rngAll = cwkSht.Range(rngStartValue, rngEndValue)
    
    For Each shpC In cwkSht.Shapes
        Set rngShp = shpC.TopLeftCell
        If Not Intersect(rngAll, rngShp) Is Nothing Then
            shpC.Delete
        End If
    Next shpC
    
    Set rngAll = Nothing
    Set rngShp = Nothing
    
End Sub

 

스크립트 상단에 각종 변수를 정의해 주게 되는데요. 워크북 (엑셀 파일) 과 워크시트 (시트) 를 지정해주는 부분이 있습니다. 이곳에서는 일단 현재 활성화된 파일의 활성화된 워크시트를 선택해 주었습니다. 만약 특정 엑셀 파일을 지정할 계획이고 해당 엑셀 파일에 특정 시트에 대해 작업을 해주어야 한다면 해당 부분만 아래와 같이 작성해주면 됩니다.

Set cwkbook = Excel.Workbooks("엑셀파일이름.xlsx")
Set cwkSht = cwkbook.Worksheets("해당워크시트이름")

그 아래에 rngStartValue 와 rngEndValue 를 이용하여 영역의 시작부분과 끝부분의 셀 이름을 정해주면 해당 셀안에 있는 모든 그림은 삭제가 됩니다. 

만약 세로로 같은 열에 있는 그림만 삭제를 해야 한다면 시작칸과 종료칸의 열 번호를 동일하게 지정해 주면 됩니다.

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

 

 

 

그림 한번에 삭제하기, 자동으로 붙여넣는 프로그램은 아래 포스트를 참고하세요.

2020/01/08 - [DEV/c#] - Excel Automate, 엑셀 자동화 프로그램

 

Excel Automate, 엑셀 자동화 프로그램

필자의 블로그 명칭을 보고 이미 알고 계신분이 있을지 모르겠지만 사실 저는 디자이너 입니다. 하지만 블로그에 맨 개발 관련 된 이야기만 적고 있지요. 음... 그런데 실제로 회사에서도 저는 대부분의 시간을 코..

diy-dev-design.tistory.com

 

현재 시트에서 사용자가 선택한 영역을 가져오는 것은 아래 포스트를 참고하시면 됩니다.

https://diy-dev-design.tistory.com/23?category=791049

 

[vba] 현재 엑셀 시트의 선택한 영역을 vba 스크립트에서 가져오기

vba를 이용하여 자동화를 하기 위하여는 어떤 범위에 있는 대상에 대하여 작업이 이루어 지는지를 설정 해주어야 합니다. 보통 range 라는 개체를 이용하여 설정을 해주게 되는데 이 range 를 현재 엑셀 시트에서..

diy-dev-design.tistory.com

 

특정 영역을 지정하여 스크립트를 동작시키는 것은 아래 포스트를 참고 바랍니다.

https://diy-dev-design.tistory.com/20?category=791049

 

[vba] 자동화를 위하여 엑셀의 영역 설정하는 방법

엑셀을 사용하는 목적 자체가 근본적으로 문서를 만들기 위함은 아니다 보니 세로 또는 가로로 굉장히 길게 데이터가 나열되어 있는 경우가 많습니다. 우리는 vba 를 이용하여 자동화를 할 것이기 때문에 어디부..

diy-dev-design.tistory.com

2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

 

이상으로 엑셀 시트에 있는 모든 그림을 삭제하는 스크립트 소개를 마치겠습니다.

 

도움이 되셨다면 공감 부탁드립니다.

그럼 이만~

반응형
반응형

안녕하세요. 이번 글에서는 VBA 에서 문자열을 가지고 무엇인가를 하는 것을 알아보겠습니다. 프로그래밍을 하다 보면 조건을 가지고 어떤 액션을 해야 하는 결우가 무척 많은데요. 그중에 대표적인 것의 하나가 문자열의 내용을 이용하는 것 입니다. '문자열 내에 특정 문자가 포함되어 있는지?' , '문자열의 첫번째 글짜는 무엇인지?' , '문자열의 전체 길이가 얼마인지?,' 등등 문자열을 이용하여 로직을 구성하는 경우는 아주 흔하기 때문에 VBA 안에서 문자열을 다루는 방법을 잘 알면 아주 매끄러운 코드를 작성할 수 있습니다. 

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

 

 

이번 페이지에서 다룰 내용은 아래와 같습니다.

 

  • 특정 문자열이 문자열 내부에 포함되어 있는지 검사
  • 문자열의 앞에서부터 몇개의 글자를 추출 하기
  • 문자열의 뒤에서 부터 몇개의 글자를 추출 하기
  • 문자열의 중간에 지정된 위치의 글자를 추출하기
  • 문자열의 특정 기호를 이용하여 배열(리스트)로 돌려 주기
  • 문자열 합치기
  • 알파벳 대소문자 전환

 

 

 

 

어렵지 않은 내용들 이므로 가볍게 따라해 봅시다.

 

 

 

특정 문자열이 문자열 내부에 포함되어 있는지 검사

문자열 내부에 특정 단어 또는 글자가 있는지를 검사하는 함수로 Instr 라는 함수가 있습니다.

Sub stringTest()

    Dim testString As String
    
    testString = "The color is #FFCC23"
    
    If InStr(testString, "#") Then
        MsgBox ("컬러코드가 포함되어 있습니다.")
    Else
        MsgBox ("컬러코드가 포함되어 있지 않습니다.")
    End If
    
End Sub

위의 코드에서는 testString 이라는 변수를 생성한뒤 " The color is #FFCC23" 이라는 문자열을 적용해 주었습니다.

Instr 라는 함수를 이용하여 해당 문자열 안에 "#" 이라는 문자가 포함되어 있는지를 검사하는 로직이죠. 만약 "#" 이라는 글자가 있다면 Instr 라는 함수는 해당 문자를 만난 첫번째 위치 (숫자) 를 돌려줍니다. 없는 경우에는 -1 을 돌려주게 되는데요. IF 구분에 사용하게 되면 무엇인가 의미 있는 숫자가 나오면 true 로 인식되고 -1 이 나오면 false 로 인식되기 때문에 해당 문자열이 있는지 없는지를 알수 있게 됩니다.

 

 

 

 

문자열의 앞에서부터 몇개의 글자를 추출 하기

이번에는 문자열의 앞부분부터 몇개의 글자를 추출해 보겠습니다. 몇개의 글자라는게 좀 애매하니까 문자열의 첫번째 단어를 추출하는 것을 작성해 보겠습니다.

 

Sub stringTest()

    Dim testString As String
    Dim firstWord As String
    Dim firstSpacePos As Integer
    
    testString = "The color is #FFCC23"
    
    firstSpacePos = InStr(testString, " ") ' 첫번째 공백의 위치를 돌려줍니다.
    
    MsgBox (firstSpacePos)
    
    firstWord = Left(testString, firstSpacePos - 1) ' 처음부터 첫번째 공백 이전까지의 글자를 추출합니다.
    
    MsgBox (firstWord)
    
    
End Sub

시작 부분에 변수가 두개 더 추가가 되었습니다. 하나는 결과값을 돌려 받을 첫번째 단어를 저장하기 위한 문자열 변수와 첫번째 공백의 위치를 알기위한 숫자 변수 입니다. 문장의 시작부터 첫번째 공백까지의 글자를 추출하면 첫번째 단어가 될테니까요. 여기서도 역시 Instr 를 이용하여 첫번째 공백의 위치를 알아낸 뒤 LEFT 라는 함수를 이용하여 처음부터 몇개의 글자를 추출하는 내용입니다. VBA 에서의 위치는 첫번째 위치가 1 부터 시작이므로 첫번째 공백은 4가 리턴되게 되고 우리가 필요한 글자의 수는 3개이므로 공백 이전까지의 자릿수가 필요합니다. 그래서 firstSpacePos 에서 -1 을 한 값이 적용되었습니다. -1 을 하지 않게 되면 공백까지 추출이 됩니다.

 

 

 

 

문자열의 뒤에서 부터 몇개의 글자를 추출 하기

문자열의 뒤에서 부터 글자를 추출하는 함수는 RIGHT 입니다. 오른쪽이라느 뜻이죠? 사용 방법은 LEFT와 동일합니다. RIGHT(string, number) 와 같이 작성하며 string 의 오른쪽 끝부터 시작해서 number 만큼의 글자를 뽑아내어 돌려줍니다.

 

 

 

 

문자열의 중간에 지정된 위치의 글자를 추출하기

문자열의 맨 앞부터 또는 맨 뒤부터 글자를 추출하는 경우는 사실 아주 일반적으로 사용되지 않습니다. 보통은 특정 위치로부터 몇개의 글자를 뽑아내는 경우가 많죠. 이번에는 위에서 사용한 샘플 문장에서 색상 코드에 해당하는 부분만 추출해 보도록 하겠습니다.

 

Sub stringTest()


    Dim testString As String
    Dim firstWord As String
    Dim firstSpacePos As Integer
    
    testString = "The color is #FFCC23"
    
    firstSpacePos = InStr(testString, "#")
    
    MsgBox (firstSpacePos)
    
    firstWord = Mid(testString, firstSpacePos, 7)
    
    MsgBox (firstWord)

End Sub

이번에는 # 이라는 글자가 보여지는 첫번째 위치를 알아낸 뒤 그뒤의 7개의 글자를 뽑아내는 내용입니다. 어떤 문장이든 이제 #과 함께 오는 6개의 색상 값의 위치를 알수 있게 됩니다. 추출된 결과는 "#FFCC23" 이 됩니다.

 

 

 

 

 

문자열의 특정 기호를 이용하여 배열(리스트)로 돌려 주기

 

문자열 내부에 반복적으로 보여지는 특정 글자 또는 기호를 이용하여 배열로 만드는 방법입니다. 저는 샘플 문자열을 이용할 것이기 때문에 공백을 이용할 계획인데요. CSV 파일을 읽어 사용하거나 할 때는 tab 이나 ","(쉼표) 를 이용하면 되겠습니다.

Sub stringTest()


    Dim testString As String
    Dim filterChar As String
    Dim stringArray() As String
        
    testString = "The color is #FFCC23"
    
    filterChar = " " ' 구분을 위한 문자열 또는 기호를 작성합니다.
    
    stringArray = Split(testString, filterChar) ' stringArray 라는 문자 배열에 담아냅니다.
    
    
    For Each myStr In stringArray
        MsgBox (myStr)				'한단어씩 차례로 배열안의 값을 보여줍니다.
    Next myStr
        
End Sub

이렇게 하면 전체 문자열은 공백을 기준으로 각각 단어별로 잘라지게 됩니다. 앞서 이야기 한것처럼 CSV 파일 등을 이용하여 자료를 불러들이거나 할때 유용한 기능입니다.

 

 

 

 

 

문자열 합치기

 

문자열을 합치는 방법을 알아보겠습니다. 보통의 스크립트 언어에서는 일반적으로 문자열 변수끼리는 + 로 문자열을 합칠 수 있습니다. string3 = string1 + string2 이런식이죠. 그런데 VBA 에서는 좀 다른 방법으로 합쳐주는 것이 좋습니다. 바로 & 기호를 이용하는 방법인데요. 작성하는 방법은 동일합니다. 기호만 다를뿐

Sub stringTest()


    Dim testString As String
    Dim filterChar As String
    Dim stringArray() As String
    Dim sting2 As String
    Dim resultString As String
    
    string2 = " what color is your favorite?"
    
    testString = "The color is #FFCC23"
    
    
    resultString = testString & string2
    
    MsgBox (resultString)  
    
End Sub

 

이렇게 합치는데는 여러가지 이유가 있겠지만 숫자형과 문자형을 합치는데 가장 큰 이유가 있는 것 같습니다. 다른 언어에서는 숫자와 문자는 기본적으로 합치는 것이 불가능합니다. 그런데 VBA 에서는 & 기호를 이용하면 숫자든 문자든 보이는 그대로 연결하여 합쳐진 문자열을 출력하는 것이 가능합니다. 

바로 이렇게요.

Sub stringTest()

    Dim sting2 As String		' 문자열 변수를 설정    
    Dim myNumber As Integer 	'숫자인 변수를 설정
    Dim resultString As String
    
    string2 = "The number is "
    myNumber = 16

    resultString = string2 & myNumber	' 문자와 숫자가 합쳐져 하나의 문자열이 됨
    
    MsgBox (resultString)
    ' 결과: The number is 16
End Sub

 

사실 자료형을 변경해가며 문자열을 다루는 것은 매우 꼼꼼하게 코드를 작성하지 않으면 대부분 실수가 나오는 부분이거든요. VBA 는 나름 편리하게 이런 문제를 예방하고 있다고 판단됩니다.

 

 

 

알파벳 대소문자 전환

끝으로 문자열의 모든 글자를 대문자로, 또는 소문자로 변경하는 함수를 소개해드리고 마무리를 할까 합니다. 

 

Sub stringTest()


    Dim testString As String
    Dim resultString As String   
    
    testString = "The color is #FFCC23"
    
    resultString = UCase(testString) ' 모든 문자를 대문자로
    MsgBox (resultString)
    
    resultString = LCase(testString) ' 모든 문자를 소문자로
    MsgBox (resultString)
    

End Sub

UCase(string) 는 string 의 모든 문자를 대분자로 바꿔주며 LCase(string) 은 반대로 모든 문자를 소문자로 변경해 줍니다.

 

 

이상으로 VBA 에서 기본적인 문자열을 다루는 내용을 알아보았습니다. 사실 복잡한 함수와 기능이 더 있지만 이정도만 알아도 기본적으로 문자열을 컨트롤 하는데는 무리가 없을 것으로 판단이 됩니다.

 

슬기로운 개발생활이 되기길 바랍니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

2022.12.02 - [DEV/VBA] - [excel vba] 16진수를 10진수로, 10진수를 16진수로 변경

 

[excel vba] 16진수를 10진수로, 10진수를 16진수로 변경

오늘은 간단한 VBA 코드를 하나 소개해 드릴까 합니다. 프로그래밍을 하다보면 16진수를 10진수로 바꾸거나 10진수를 16진수로 바꾸어야 하는 경우가 종종 있습니다. 읭? 16 진수? 라고 하실수도 있

diy-dev-design.tistory.com

2020/02/12 - [DEV/VBA] - [VBA] 엑셀에서 파일 쓰기, 텍스트 추출

 

[VBA] 엑셀에서 파일 쓰기, 텍스트 추출

엑셀 파일을 이용하여 정말 다양한 작업이 가능합니다. 계산이며 표만들기며 각종 정보를 분석하거나 데이터 화 시키는 작업 등 정말 할 수 있는 일이 무궁무진 하죠. 그런데 가끔 엑셀을 이용하여 특정 정보를 별..

diy-dev-design.tistory.com

2020/01/30 - [분류 전체보기] - [vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

 

[vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

이번 포스트에서는 vba 를 이용하여 셀의 속성을 조정하는 방법을 설명 드리겠습니다. 엑셀은 단순한 표의 형식을 취하고 있지만 셀의 간격이나 테두리 등의 속성을 자유롭게 조정할 수 있어 다양한 서식에 사용하..

diy-dev-design.tistory.com

2019/12/06 - [DEV/VBA] - [vba] 하위폴더 내의 모든 파일 정보 가져오기

 

[vba] 하위폴더 내의 모든 파일 정보 가져오기

일을 하다 보면 가끔 업무를 진행하던 경로 하위에 있는 데이들의 리스트를 만들어야 하는 경우가 있습니다. 하나의 폴더라면 어떻게 해보겠는데 그 폴더가 하위 뎁스가 연속해서 있고 저장되어 있는 파일이 불특..

diy-dev-design.tistory.com

 

반응형
반응형

vba를 이용하여 자동화를 하기 위하여는 어떤 범위에 있는 대상에 대하여 작업이 이루어 지는지를 설정 해주어야 합니다. 보통 range 라는 개체를 이용하여 설정을 해주게 되는데 이 range 를 현재 엑셀 시트에서 사용자가 선택한 영역으로 하고 싶은 경우가 있습니다.

 

선택을 필요로 하는 대상 셀이 한정 적이거나 자동화 대상이 필요에 따라 자주 변경되는 경우에는 사용자가 선택한 영역을 이용하여 range 를 설정해주는 것이 편리하기도 합니다.

 

엑셀 시트에서 특정 영역을 선택한 다음 vba 에디터 창으로 가서 아래와 같이 입력한 후 F5 를 눌러 실행해 봅시다.

 

Sub selectiontest()

    Dim currentSelection As Range
    Dim row_Count As Integer
    Dim column_count As Integer
    
    Set currentSelection = Selection.Cells()
    
    row_Count = currentSelection.Rows.Count
    column_count = currentSelection.Columns.Count
    
    MsgBox (row_Count) '현재선택한 셀의 세로 줄 수
    MsgBox (column_count) '현재선택한 셀의 가로 줄 수
    

End Sub

현재 선택한 셀의 가로 줄 수와 세로 줄 수가 팝창으로 안내가 됩니다.

 

선택한 모든 셀에 대하여 무엇인가를 해야 한다면 For 구분을 통하여 실행이 가능합니다.

 

 

 

 

여기서 한번 응용을 해보도록 하겠습니다.

 

특정 셀안에 색상을 표기하는 16진수 값이 들어있을 때 해당 값을 이용하여 섹의 색상을 칠한다고 하면 아래와 같이 하면 되겠습니다.

 

먼저 필요한 명령들을 보면 아래와 같습니다. 

 

선택 영역을 지정하는 함수 : Selection.Cells()

문자열의 일부 영역을 잘라내는 함수 : LEFT(string, number), MID(string,from, number), RIGHT(string, number)

16진수 값을 10진수로 변경해주는 함수 : WorksheetFunction.Hex2Dec(value)

셀의 배경색상을 지정하는 함수 .Interior.Color = RGB(255,255,255)

 

 

엑셀의 특정 영역에 16진수 색상 값을 적어 보겠습니다.

 

해당 셀을 영역으로 선택한 뒤 아래의 코드를 vba 에디터 창에 입력한 후 F5 를 눌러봅시다.

위에 설명했던 코드들이므로 한번 훓어 보시면 되겠습니다.

Sub selectiontest_setCellColor()

    Dim currentSelection As Range
    Dim row_Count As Integer
    Dim column_count As Integer
    
    Set currentSelection = Selection.Cells()
    
    row_Count = currentSelection.Rows.Count
    column_count = currentSelection.Columns.Count
    
    For Each c In currentSelection
        
        Dim clr_red As Integer
        Dim clr_green As Integer
        Dim clr_blue As Integer
        
        clr_red = WorksheetFunction.Hex2Dec(Mid(c.Value, 2, 2))
        clr_green = WorksheetFunction.Hex2Dec(Mid(c.Value, 4, 2))
        clr_blue = WorksheetFunction.Hex2Dec(Right(c.Value, 2))
        
        c.Interior.Color = RGB(clr_red, clr_green, clr_blue)
        
    Next

End Sub

짜잔. 요렇게 색상이 칠해졌습니다.

 

물론 당연히 선택한 셀이 아닌 기존 방식대로 특정 영역의 모든 셀에 대하여도 동일하게 적용이 가능합니다.

코딩을 하는 이유는 많은 작업을 쉽고 빠르며 정확하게 하기 위함이므로 위와 같은 칸이 수천개가 있다면 당연히 코딩을 하는 것이 좋은 방법이 되겠습니다.

 

디자이너분들이라고 겁먹지 마시고 과감히 코딩을 배워봅시다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

이상입니다.

반응형
반응형

 

엑셀에서 자동화를 한다는건 사실 이유가 뻔 합니다. 처리해야 할 셀이 엄청나게 많거나 일반적인 함수로 연산이 불가한 경우 입니다. 그 중 오늘은 엄청나게 많은 데이터에 대한 자동화 처리를 위하여 반복문을 사용하는 방법을 알아보겠습니다.

 

우선 셀의 영역을 설정을 해야 합니다.

앞장에서 설명 하였던 영역을 설정하는 부분을 참고하세요.

 

[vba] 자동화를 위하여 엑셀의 영역 설정하는 방법

https://diy-dev-design.tistory.com/20?category=791049

 

Sub checkError()

    Dim asht As Worksheet
    Dim rngA As Range
    
    Set asht = ActiveSheet
    
    Set rngA = asht.Range("a3")
    Set rngA = asht.Range(rngA, rngA.End(xlDown))
        
End Sub

요렇게요. 그럼 a3 부터 a 열의 제일 마지막 행까지 설정이 됩니다.

 

반복문으로 무었을 할거냐면요. 

a 열에 있는 단어를 모두 소문자로 바꿔서 b 열에 넣을 겁니다.

 

엑셀 기본 제공 함수에는 왜인지 모르겠지만 이 기능을 지원하지 않는것 같습니다. 그러면 vba 로 하면 되는거죠.

 

위에 작성한 함수 아래 부분에 for 구문을 이용해서 위에서 말했던 소문자로 바꾸눈 기능을 개발해보겠습니다.

 

Sub checkError()

    Dim asht As Worksheet
    Dim rngA As Range
    
    Set asht = ActiveSheet
    
    Set rngA = asht.Range("a3")
    Set rngA = asht.Range(rngA, rngA.End(xlDown))
    
    '반복문 추가
    For Each c in rngA
    	c.offset(0,1).value = LCase(c.value)    
    next c
    
End Sub

요렇게 하면 됩니다.

 

For 뒤에 Each c 라는 부분이 있는데요. rngA 라는 Range의 각각의 셀을 c 로 하겠다는 의미 입니다. 모든 셀이 각각 턴마다 c 에 대응되고 나면 종료가 됩니다.

 

아래쪽에 Next c 라는 부분을 만나면 다음 셀로 넘어가게 되죠. 즉 For ~ Next 사이의 코드가 계속해서 반복됩니다. 언제까지요? 네. 모든 셀이 한번씩 지나가는 동안요.

 

그 아랫줄에 오늘 설명하기로 하였던 하나의 명령어가 나왔습니다.

 

바로 offset 입니다.

 

문장을 그래도 해석해 보면 c 라는 셀로 부터 아래쪽으로 0칸, 오른 쪽으로 1칸 위치에 있는 셀의 value, 즉 값에다가 c 의 값을 이용하여 LCase - 소문자로 변경하는 함수 - 로 세팅하라는 의미 입니다. 

 

문장이 좀 이상한데요. 어쨌든, LCase 는 소문자로, 반대로 UCase 는 뒤의 괄호안의 문자를 모두 대분자로 변경하라는 의미입니다. 즉 소문자로 변경한 c 의 값을 c 의 오른쪽 첫번째 칸에 입력하라는 의미가 되겠습니다.

 

offset 은 특정 셀에 대하여 사용할 수 있는 명령어 인데요. offset은 두개의 인자를 입력받는데 첫번째 인자는 세로 방향, 두번째 인자는 가로방향입니다. 0 이면 제자리이고요. 가로에 대하여 - 는 왼쪽, + 는 오른쪽입니다. 세로방향에 대하여 -는 위쪽, + 는 아래쪽입니다. 

 

특정 셀에 대하여 오른쪽으로 두칸, 아래로 한칸이면 c.offset(1,2) 가 됩니다.

특정 셀에 대하여 왼쪽으로 세칸, 위로 두칸이면 c.offset(-2, -3) 이라고 작성하면 됩니다. 

 

offset 은 아주 자주 사용되고 유용한 명령어 이므로 꼭 기억해두시길 바랍니다.

 

다음 강좌에서는 셀의 색상을 칠하는 방법, 셀 안의 글자 색을 변경하는 방법을 알아보겠습니다.

또한 색상의 경우 16진수 값으로 FF143F 와 같이 작성되는 경우가 많은데요. 이런식의 색상 코드를 이용하여 셀의 색상을 채우는 방법을 알아보겠습니다.

 

도움이 되셨다면 공감을 부탁드립니다~

 

그럼 이만

 

 

 

반응형
반응형

엑셀을 사용하는 목적 자체가 근본적으로 문서를 만들기 위함은 아니다 보니 세로 또는 가로로 굉장히 길게 데이터가 나열되어 있는 경우가 많습니다. 우리는 vba 를 이용하여 자동화를 할 것이기 때문에 어디부터 어디까지 자동화를 할것인지 영역을 설정을 해주어야 할 필요가 있는데요. 일반적으로 제가 자주 사용하는 패턴을 몇개 올려보려 합니다.

 

우선 alt+F11 을 눌러 vba 편집창을 열어줍니다.

 

 

좌측 트리구조에서 현재 엑셀 파일에 포함되어 있는 시트의 이름과 마지막에 ThisWorkbook 이라는 트리가 보일텐데요. 저는 보통 ThisWorkbook 라는 부분에 코드를 작성합니다. 왜나하면 현재 엑셀 파일내의 모든 시트에 자동화를 하기에 적당한 위치이기 때문입니다. 대신 스크립트 동작을 위하여 어떤 시트에서 동작을 할 것인지를 설정 해 주어야 합니다. 해당 위치를 더블클릭하면 스크립트 에디터 창이 열리게 됩니다.

 

아래는 제가 가장 많이 사용하는 패턴의 시트, 영역 설정하는 코드 입니다.

Sub checkError()

    Dim asht As Worksheet
    Dim rngA As Range
    
    Set asht = ActiveSheet
    
    Set rngA = asht.Range("a3")
    Set rngA = asht.Range(rngA, rngA.End(xlDown))
        
End Sub

Dim 은 엑셀에서 변수를 정의할때 사용하는 명령어 고요. Dim 뒤에 있는 asht 가 변수 명이 되겠습니다.

뒤에 As Worksheet 라는 것은 앞에 선언한 asht 가 워크시트를 저장할 변수임을 알려주게 됩니다.

 

역시 rngA 는 변수이며 Range 즉 엑셀의 어떤 영역을 지칭합니다. 그 아래에 set 으로 시작하는 부분에서 위에 정의한 변수에 실제 유의미한 정보를 설정해 주게 됩니다.

 

asht 는 현재 활성화된 워크시트를,

rngA 는 일단 현재 시트의 a3 칸을 지정한 뒤 다시 a3 으로부터 아래 마지막까지를 설정하는 명령입니다.

 

이렇게 하면 특정 위치로부터 행의 가장 아래까지 설정이 가능합니다. 행이 몇행까지 있는지 알지 못하거나 경우에따라 변경이 될 수 있는 상황에서 이렇게 작성하면 일일이 코드 수정을 하지 않아도 되는 장점이 있습니다. 

 

이런식으로 작성할 때 가끔 문제가 발생할 수 있는 여지가 있는데요, a 열에 어떤 행이 중간에 값이 비어 있을때 입니다. Range.End(xlDown) 이라는 명령은 값이 있는 마지막까지를 탐색하기 때문이죠. 매번 마지막 행을 확인할 필요가 없으니 편리한 기능이기는 한데 기준이 되는 a 열의 중간에 값이 비어있을 수도 있다면 이렇게는 안됩니다. (중간에 빈칸이 필요한 경우 의미 없는 문자열(예> N/A)을 삽입하여 자동화 시 걸러내는 방법을 사용하는 것이 좋습니다)

 

만약 시작부터 끝을 알고 있는 경우, 또는 빈 칸이 포함되어 있는 경우 아래와 같이 정의를 해주어야 하죠.

 

Dim rngA As Range
Set rngA = asht.Range("a3","a3000")

이렇게 하면 a3 ~ a3000 까지 각 셀에 값이 있건 없건 영역으로 설정이 됩니다.

 

제가 소스 코드를 ThisWorkbook 에 작성을 한다고 하였고 그 때문에 스크립트가 동작할 시트가 어떤 시트인지를 지정해주어야 한다고 하였는데요. 만약 특정 시트에 바로 스크립트를 작성할 것이라면 아래와 같이 간단하게 영역을 설정 할 수 있습니다.

 

Sub checkError()

    Dim rngA As Range
    Set rngA = [a3:a3000]

End Sub

바로 대괄호 [ ] 를 이용하여 설정하는 방법입니다. 동일하게 a3 ~ a3000 까지를 설정하는 코드입니다. 시트는 현재 이미 선택이 되어 있기 때문에 별도로 시트를 설정할 필요가 없죠. 

 

특정 셀 하나를 설정하려면 아래와 같이하면 됩니다.

Sub checkError()

    Dim rngA As Range
    Set rngA = [a125]

End Sub

 

저는 대부분의 자동화 코드를 이런식으로 시작합니다. 

그 아래 부분에 For 구문을 이용하여 필요한 기능을 적용할 수 있습니다.

 

 

다음 편에서는 For 구문을 이용하여 반복 처리하는 부분과 offset 이라는 기능을 이용하여 선택된 셀로 부터 특정 위치에 있는 셀을 지정하는 방법을 알아보겠습니다.

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

2019/07/12 - [DEV/VBA] - [vba] For 구문 이용하기와 offset 사용 해 보기

 

[vba] For 구문 이용하기와 offset 사용 해 보기

엑셀에서 자동화를 한다는건 사실 이유가 뻔 합니다. 처리해야 할 셀이 엄청나게 많거나 일반적인 함수로 연산이 불가한 경우 입니다. 그 중 오늘은 엄청나게 많은 데이터에 대한 자동화 처리를 위하여 반복문을..

diy-dev-design.tistory.com

 

2020/02/05 - [DEV/VBA] - [VBA] 셀의 넓이를 픽셀로 지정하기 (set column width by pixels)

 

[VBA] 셀의 넓이를 픽셀로 지정하기 (set column width by pixels)

정말 지긋지긋한 마이크로 소프트 입니다. 저는 VBA 를 하면서 이번 포스트 내용만큼 어의가 없는 경우는 없었던거 같습니다. 왜 때문이냐고요? 바로 아주 단순한 셀 넓이를 VBA 를 이용하여 지정하는 방법 때문입..

diy-dev-design.tistory.com

 

반응형
반응형

마이크로 소프트 엑셀은 수많은 기능과 자동화된 연산 처리, 편리한 템플릿 가공, 다양한 그래프 드을 이용한 데이터의 시각화 외에도 아주 많은 유용한 기능을 제공하여 사무 업무의 표준 프로그램이 되었다. 나는 디자이너이지만 후배들에게 포토샵이나 일러스트만큼이나 중요한 프로그램이라고 자신있게 말할 수 있는 것이 바로 엑셀이다. 회사에서 작성되고 확인되는 거의 모든 수치를 다루는 문서는 바로 엑셀이기 때문이다. 

견적서도, WBS 같은 일정표도, 데이터 분석 결과도 모두 엑셀이며 지금은 전자문서로 대체되긴 했지만 각종 결재 서식이나 양식역시 워드보다 엑셀을 많이 사용했었다.

본 포스트를 보신 후
도움이 되었다 생각되시면 공감 클릭!!  부탁드려요~

 

 

엑셀 전문가 하면 다양한 기능을 사용하는 것도 있지만 무엇보다 엑셀에서 지원하는 강력한 기능인 함수의 사용 여부로 판가름 할 수 있겠다. 엑셀에서 각종 지원 함수를 이용하면 엑셀이 더이상 문서가 아닌 하나의 프로그램이 되기 때문이다. 엑셀 지원 함수를 이용한 기능은 너무나도 다양하기 때문에 여기서 다루지는 않을 것이고 따로 찾아보는 것이 좋을 것이다. 관심이 있다면 학원을 잠시 다니는 것도 추천한다.

 

그럼 여기서 이야기 할 주제는 무엇인가 하니, 바로 VBA 라고 하는 프로그래밍 언어에 대하여 작성할 예정이다.

 

VBA 란 Visual Basic for Application 의 약어로 마이크로 소프트에서 제공하는 office 제품군에서 사용할 수 있는 visual basic 언어를 말한다. 

 

visual basic 은 하나의 프로그래밍 언어로 문법이 다른 언어와 약간 차이가 있지만 막상 배우려고 보면 아주 쉽게 습득할 수 있는 언어이며 인터넷에 아주 많은 레퍼런스가 널려 있어 새로 개발을 할때에도 참고할 만한 자료가 아주 많은 괜찮은 개발 언어이다.

 

이 포스트를 보는 분이 이런 글 보자고 들어온 것은 아닐 것 이므로 바로 본론으로 들어가자.

 

엑셀( 다른 office 제품군 포함)에서 VBA 를 작성하기 위하여 먼저 개발창을 열어야 한다.

 

alt + F11 키를 누르면 아래와 같은 창이 나타난다.

 

F11 키를 눌러 VBA 에디터 창이 표시된 화면 - 현재 좌측 tree 의 sheet1을 더블클릭한 상태

좌측 상단에는 현재 엑셀에 열려있는 문서와 각 문서가 포함하고 있는 워크시트 (엑셀 창 하단에 보이는 탭) 이름이 보여지는 창이 하나 있고 아래는 복잡한 테이블... 별로 알필요 없음. 우측은 회색 공간이 있다. 회색 공간에 창이 하나 떠 있는데 이는 필자가 좌측 트리뷰에서 Sheet1(Sheet1) 로 표시된 부분을 더블클릭한 상태이다.

 

이 하얀색 텍스트 에디터에 VBA 를 작성하여 각종 자동화 작업을 할 수 있다.

 

VBA 에서는 어떤 목적을 위하여 수행하는 기능을 묶어서 실행을 시키게 되는데 바로 아래와 같은 형태로 정의한다.

 

 

Sub setText() 

    수행할 명령어

End Sub 

 

여기서 setText 는 사용자가 원하는 기능의 명칭을 적으면 되며 실제 수행하는 기능은 "수행할 명령어" 부분에 입력하면 된다.

 

Sub setText()

    Cells(1, 1).Value = "DIY"
    Cells(2, 1).Value = "Dev."
    Cells(3, 1).Value = "Design"
    
End Sub

 

요렇게 입력하고 F5 키를 누르면 엑셀 창의 Sheet1 에 아래와 같이 자동으로 작성이 된다.

위의 코드가 의미하는 것을 살펴보면

Cells 는 엑셀 화면의 칸들을 의미한다. Cells( rowIndex, columnIndex) 의 순서로 셀을 지정하게 되는데 rowIndex 는 번호 즉 좌측에 세로로 보이는 숫자를 말하고 columnIndex 는 을 의미하며 위에 보이는 알파벳에 해당되는 번호다. 물론 VBA 에서는 알파벳으로 기재를 하지 않고 숫자로 기재를 해야 한다. VBA 에서 가로 세로 열을 앞에 말한바와 같이 지칭할때는 항상 앞자리가 행, 뒷자리가 열 임을 기억하자.

 

참고로 코드 실행을 위하여 F5 를 누를 때 키보드의 커서가 Sub 와 End Sub 사이에 이어야 해당 기능이 실행이 된다.

 

엑셀 VBA 를 공부하면서 알아가야 할 것이 많겠지만 우선 다음과 같은 것들을 고민해보아야 한다.

  • 무엇을 위해 VBA 를 사용할 것인가?
  • VBA 를 배우면 내가 하는 실무 (또는 생활) 에 당장 도움이 되는 것은 어떤 것일까?
  • 엑셀을 이용하면서 가장 시간 낭비라고 생각했던 것은 무엇이었는가?

 

막연히 공부해야 겠다는 생각으로 시작한 스크립팅 공부는 생각보다 진도가 빠르게 나가지 않는다. 당장 1분이라도 내 시간을 아껴 줄 수 있는 부분을 빨리 찾아 직접 만들어 보는 것이 가장 빠른 학습방법이 된다. 아래 몇가지 예를 들어 볼테니 본인에게 해당되는 사항이 있다면 엑셀을 열고 Alt + F11 을 눌러 바로 코드를 작성해 보자.

 

위에 예시를 든 케이스 외에도 VBA 로 할 수 있는 작업은 무궁무진하다. 하지만 어려운 것부터 시작한다면 첫걸음을 떼기 어려우니 간단한 작업부터 도전해 보자. 

 

VBA 관련 첫번째 포스트는 여기서 마무리를 할텐데 이 주제에서 다룰 내용은 아래와 같다.

 

1. 각종 VBA 명령어와 사용법

2. 알아두면 유용한 코드들

3. 완성된 코드 샘플

 

필자는 디자이너지만 프로그래밍을 접하면서 업무의 질이 많이 달라졌다. 개발직군이 아니라고 개발을 등한시 하지 말고 적극적인 자세로 접하도록 해보자. 어느 순간 개발자가 와서 이것 좀 해줄 수 있을까 하고 개발 의뢰를 할 것이다. 그럴때가 우리에게 채무자가 아닌 채권자의 입장이 될 수 있는 절호의 찬스일 것이다. 

 

세상에 VBA 만큼 쉬운 프로그래밍이 없으니 걱정말고 시작하자. 개발자 아닌 디자이너, 기획자, 일반 사무직 분들.

내가 작성하는 내용만 다 따라와도 엑셀 붙잡고 머리 터지게 숫자 계산하는 업무시간이 1/10 으로 줄어들 것이다.

 

 

궁금한 내용이나 질문은 뎃글을 남겨주면 답변해 드리겠습니다.

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

반응형

+ Recent posts