programing

vba의 셀 주소에서 Excel의 병합된 셀 값을 가져옵니다.

telecom 2023. 4. 15. 08:21
반응형

vba의 셀 주소에서 Excel의 병합된 셀 값을 가져옵니다.

vBA에서 "$B$4:$B$11"과 같은 범위 주소를 가진 Excel의 병합된 셀 값을 얻는 방법

Excel에서 Marge 셀을 사용하는 것이 정말 권장되지 않더라도(예를 들어 필요한 경우 사용), 값이 "포함"된 셀은 왼쪽 상단에 있는 셀입니다.

따라서 범위 내에서 병합된 셀의 값을 얻을 수 있습니다.B4:B11여러 가지 방법으로요.

  • Range("B4").Value
  • Range("B4:B11").Cells(1).Value
  • Range("B4:B11").Cells(1,1).Value

또한 다른 모든 셀에는 값이 없습니다.디버깅 중에 값이 다음과 같은 것을 알 수 있습니다.empty.

또, 주의해 주세요.Range("B4:B11").Value동작하지 않는다(실행 에러 번호 13을 표시하려고 하면 표시된다).Debug.Print이는 배열을 반환하기 때문입니다.

Josh Brown은 (코멘트를 통해) 내가 생각하는 가장 좋은 대답을 했다.

병합된 영역의 경계를 모를 경우 다음과 같은 값을 얻을 수 있습니다.

Range("B6").MergeArea.Cells(1,1).Value

이 방법은 예를 들어 알 수 없는 범위의 셀이 Marge된 파일을 루프하는 경우 VBA에서 유용하기 때문에 이 방법을 사용하면 훨씬 일반적입니다.고마워요, 조쉬!

이 작업은 다음 두 단계로 수행할 수 있습니다.

먼저 병합된 셀의 범위를 지정하고 병합된 셀을 강조 표시한 다음 리본 막대로 이동합니다.Formulas Tab --> Define Name;

이름에 공백이 없어야 합니다.예:defined_Name출력/결과를 보고 싶은 셀로 이동합니다.이 셀에 다음과 같이 입력합니다.=defined_Name.

완료되었으므로 Enter 키를 누릅니다.

(2016년 11월)

나는 이것이 누군가에게 도움이 되기를 바란다.

병합된 셀에서 삭제를 누르면 target.delect.count = 병합된 셀의 수라는 것을 발견했습니다.

한편, 같은 셀에서 값을 변경하면 target.target.count = 1

이로 인해 선택한 셀 수를 테스트하여 worksheet_change 코드에서 여러 선택을 건너뛰고 있었기 때문에 문제가 발생했습니다.

언급URL : https://stackoverflow.com/questions/9407474/get-value-of-a-merged-cell-of-an-excel-from-its-cell-address-in-vba

반응형