본문 바로가기
VBA

[VBA_Unmerge] 병합셀 해체하고 같은 같으로 채우기

by 일등미노왕국 2021. 8. 6.

이번 시간은 병합된 셀을 병합을 풀고, 푼 영역을 원래 값으로 채우는 코드를 만들어 보자.
Unmerge 코드는 크게 보면 전체영역을 잡고 그 영역을 For each로 개체 순환하며, 병합셀을 Unmerge 하며 그 본래의 값을 Unmerge 영역에 담아주면 된다. 코드는 이렇다.

이런 코드를 처음 접하는 분들은 아직 익숙해지지 않아서일 뿐이지 크게 난이도가 있는 코드는 아니다. 오늘은 Unmerge에 대해서 글을 쓸려고 했지만 이 문제를 내기 위해서 만든 코드가 오히려 고급 코드들이 많아서 문제 만드는 코드까지 이어서 글을 써보려 한다.

사용된 코드는 크게 Collection과 Find 그리고 엑셀 함수인 RandBetween이다.

1. 영역에 랜덤하게 1부터 6까지의 숫자를 뿌려주고
2. Collection 값에 고유값을 담아라 / 물론 지금은 1부터 6이라는 숫자를 알고 있어서 컬렉션을 생략해서 그냥 1부터 6의 값을 가져오면 된다. 허나 다른 값들이 임의로 입력되었을 경우에는 그 고유값들을 일일이 바꿔줘야 함으로 이참에 Collection을 사용하였다.

3. Collection의 고유값들을 순환하며 영역에서 일치하는 값들을 하나씩 묶어서 다 묶으면 마지막에 한번에 의도한대로 변경하는 작업을 하게된다.

4. 마지막은 Collection 고유 개체가 끝날때 마다 컬러인덱스를 달리 입히고 병합을 한후
병합 영역을 초기화 해주는 구문이다.

숫자가 작으면 원색인 비비드 컬러이고 34이후 부터는 파스텔 톤 색상 계열이다.

코드가 복잡해 보일 수도 있으나 크게 보면 4개 영역으로 구성된 코드이다. Collection은 로또번호나 고유값을 뽑아낼 때 많이 사용되고 Find는 영역에서 일치하는 값들을 찾아서 색상을 변경하던지 내용을 변경할 때 사용하게 된다.

unmerge(21.08
0.02MB

댓글