【ExcelVBA】Formula 프로퍼티의 함정

2993 단어 VBAExcel

소개



ExcelVBA에는 Range 개체에 Formula라는 속성이 있습니다.
이름에서 알 수 있듯이 셀 (또는 범위)에 설정된 수식을 얻거나 수식을 설정할 때 사용됩니다.

Microsoft API 참조 에는 이하와 같이 쓰여졌습니다만, 어느 때에 Formula 프로퍼티의 거동이 부자연스러운 것을 깨달았으므로, 그 거동을 확인해 보기로 했습니다.

객체의 암시적으로 교차하는 수식을 A1 형식의 표기로 나타내는 Variant 형 (Variant ) 의 값을 가져오거나 설정합니다.

Formula 속성 테스트



테스트에 사용한 환경


  • OS
  • Windows 10 Home

  • Excel
  • Microsoft Office Personal 2013


  • 테스트 데이터


  • 테스트에 사용한 데이터는 다음과 같이 매우 간단합니다.
  • A2 셀과 A3 셀에는 같은 값(식)이 포함되어 있는 것처럼 보이지만 실제로 들어 있는 값(식)은 다릅니다.
  • A2 셀: =3000*2
  • A3 셀: 6000




  • 테스트 프로그램


  • Formula 프로퍼티의 거동을 확인하기 위한 테스트에는, 이하의 코드를 사용했습니다.

  • Formula 속성 테스트 코드
    Sub Test_CopyFormula()
        With ThisWorkbook.Worksheets("Sheet1")
            .Range("B2:B3").Formula = .Range("A2:A3").Formula
        End With
    End Sub
    

    테스트 결과


  • 대상 셀은 수식( =3000*2 ) 뿐만 아니라 값( 6000 )까지 복사되었습니다.



  • 고찰



  • API 참조에는 수식을 얻거나 설정합니다.
  • 그 밑의 「주석」란에는, 「셀에 정수가 입력되고 있을 때는, Formula property는 그 정수를 돌려줍니다.셀이 하늘의 경우는 하늘의 캐릭터 라인을 돌려줍니다. 에 수식이 포함되어 있으면 formula 속성은 수식 표시줄에 표시되는 것과 같은 형식(등호(=) 포함)의 문자열로 수식을 반환합니다."라고 쓰여졌습니다.
  • 즉, Formula 프로퍼티의 올바른 거동은, 「셀에 수식이 설정되어 있으면 수식을 돌려주지만, 셀에 정수가 설정되어 있을 때는 정수를 돌려준다」라고 하는 것입니다.

  • 요약


  • Formula 프로퍼티의 버그는 아니었습니다만, 프로퍼티명으로부터 상상할 수 없는 움직임을 하고 있었던 것에는 놀랐습니다.
  • 셀에 수식이 설정되어 있지 않으면 빈 문자를 반환한다고 생각했습니다 ...

  • 약간의 일이 생각하지 않는 불편을 낳기 때문에, 수고를 아끼지 않고 공식의 정보를 확인하는 것은 중요하다고 실감하게 되었습니다.
  • 좋은 웹페이지 즐겨찾기