Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA - Value, Formula, FormulaR1C1, Text 속성으로 값 입력 및 읽기

엑셀(Excel)/VBA
반응형

Value, Formula, FormulaR1C1, Text 속성은 셀에 값을 입력하거나 읽을 때 사용합니다. 구체적으로 Value, Formula, FormulaR1C1 는 셀 내용을 읽거나 값을 입력하고 싶을 때 이용합니다. 텍스트로 작성한 수식을 실행하고 싶을 때도 사용합니다. Text Value 와 달리 읽기만 가능합니다. FormulaR1C1 는 속성명에서도 알 수 있듯이 Formula 와 달리 상대참조 형태를 취합니다.

 

 

Value 속성 사용하기

 

먼저 코드 작성을 위해 Visual Basic 코드 입력창을 띄웁니다. 개발 도구 > Visual Basic 리본 메뉴를 클릭합니다.

 

Value 속성은 값이나 수식을 입력하거나 읽을 때 사용합니다. 속성에 값을 입력할 때는 숫자를 제외하고 모두 “” 쌍따움표로 감싸서 문자로 만들어야 제대로 동작합니다. 아래 소스를 입력하고 실행할 함수를 작성합니다.

Sub ValueSet()

    Worksheets("Sheet1").Range("A1").Value = 3.145
    
    Cells(2, "A").Value = 100
    Cells(3, "A").Value = "= A1 + A2"
    Cells(4, "A").Value = "= SUM(A1:A3)"
    Cells(5, "A").Value = "mainia.tistory.com"
    Cells(6, "A").Value = Now

End Sub

 

 

실행 결과는 아래와 같습니다. 수식이 들어간 텍스트는 실행 결과를 셀에 표시합니다. 물론 셀에는 수식이 입력한 대로 들어가 있습니다.

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA GoTo 이용해서 줄로 분기하기
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 개발할 로그 출력하는 방법
셀 VBA 셀을 병합하는 Merge 함수 사용하기



 

 

Formula 속성 사용하기

 

Formula Value 와 같이 값과 수식을 입력할 때 사용합니다. Value 와 동일한 결과를 얻을 수 있습니다.

Sub FormulaSet()

    Worksheets("Sheet1").Range("A1").Formula = 3.145
    
    Cells(2, "A").Formula = 100
    Cells(3, "A").Formula = "= A1 + A2"
    Cells(4, "A").Formula = "= SUM(A1:A3)"
    Cells(5, "A").Formula = "mainia.tistory.com"
    Cells(6, "A").Formula = Now

End Sub

 

 

FormulaR1C1 속성 사용하기

 

FormulaR1C1 속성은 이름에서 알 수 있듯이 상대참조 형태를 취합니다. 값이 입력된 셀을 기준으로 행과 열의 이동수를 계산합니다. R[열이동수]C[행이동수] 괄호안에 이동수가 들어가고 마이너스일 때 왼쪽이나 위로 이동합니다. 수식의 실행결과는 아래와 같습니다.

Sub FormulaR1C1Set()

    Worksheets("Sheet1").Range("A1").FormulaR1C1 = 200
    Worksheets("Sheet1").Range("A2").FormulaR1C1 = 500
    Worksheets("Sheet1").Range("A3").FormulaR1C1 = "= R[-2]C * R[-1]C"

End Sub

 

 

Text 속성 사용하기

 

Text 속성은 값을 출력할 때 사용합니다. Value 와 달리 출력 포맷을 사용자가 지정하고 싶을 때 사용하는 속성입니다. 엑셀의 사용자지정 포맷과 같습니다. 아래 소스는 A1,A2 에 입력한 값이 어떻게 다르게 출력되는지 보여줍니다. Text 에 출력하는 값의 포맷은 NumberFormatLocal 속성으로 변경합니다. Value 와 어떻게 다른지 비교해 보세요.

Sub TextSet()

    Range("A1").Value = 200
    Range("A2").Value = 500
    Range("A1:A2").NumberFormatLocal = "$#,##0_);($#,##0)"
    MsgBox Range("A2").Value
    MsgBox Range("A2").Text

End Sub

 

실행 결과 NumberFormatLocal 에서 변경한 출력 포맷대로 Text 는 앞에 $ 표시가 붙었습니다.

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA GoTo 이용해서 줄로 분기하기
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 개발할 로그 출력하는 방법
셀 VBA 셀을 병합하는 Merge 함수 사용하기

 

반응형
Posted by 녹두장군

댓글을 달아 주세요