인프런 커뮤니티 질문&답변

bluesky님의 프로필 이미지
bluesky

작성한 질문수

엑셀 매크로와 VBA 기초부터 실무활용까지 완전 정복

2-2. 매크로 코드 수정한 후 복사하기

사업부 행번호 자동입력

작성

·

299

0

 안녕하세요,

2-2 매크로 코드작성시, 특정사업부에 해당하는 행을 눈으로 세어서 코드에 입력을 하는데요, 만약 익월 또는 익년도에 해당사업부의 제품코드개수가 변경이 되어 또다시 매크로를 수정할때 수작업을 하게 됩니다. 혹시 해당사업부(예를 들어 수원사업부의 제품코드 개수의 변경시 이를 자동캐치하여 수원사업부만 보여주는 매크로를 작성할수 있는 방법을 여쭤보고 싶습니다.

감사합니다.

답변 1

1

엑셀여신님의 프로필 이미지
엑셀여신
지식공유자

안녕하세요? 각 사업장마다 숨기는 행의 개수가 다를 때는 자동 매크로를 사용할 수 없고 모든 코드를 코딩하면 됩니다.

해당 사업장의 행 개수를 카운트하여 숨기기를 해도 되는데, B열의 사업장이 셀 병합되어 있어서 카운트하기는 쉽지 않으니 사업장의 순서가 동일하다는 가정하에서 [소계(수원)] 행의 위치와 [소계(아산)] 행의 위치를 찾아 숨기는 것이 더 좋은 방법입니다.

아래의 코드는 [아산] 사업장만 표시하는 코드입니다. 참고해서 응용해보시면 될것 같습니다.

맨 위의 변수 선언하는 3문장은 모든 매크로에 공통으로 사용할 수 있는 코드라 프로시저 외부에 코딩하여 사용할 수 있습니다. ([6-3.변수선언과사용방법살펴보기] 강좌 참고)


Sub 아산_동적()
Dim endRow As Integer '마지막 데이터 행 저장 변수
Dim iRange As Range, jRange As Range '각 사업장별 소계 글자가 입력된 셀 위치 저장 변수
Dim i As Integer, j As Integer '합계가 있는 행 번호 저장 변수
endRow = Range("B4").CurrentRegion.Rows.Count + 3 '마지막 행 계산
Set iRange = Columns("B:C").Find("소계(수원)", lookat:=xlWhole) '소계(수원)을 찾아 셀 위치 변수에 대입
Set jRange = Columns("B:C").Find("소계(아산)", lookat:=xlWhole) '소계(아산)을 찾아 셀 위치 변수에 대입
i = iRange.Row '소계(수원) 셀을 찾아 행 번호를 변수에 대입
j = jRange.Row '소계(아산) 셀을 찾아 행 번호를 변수에 대입

Rows("7:" & endRow).Hidden = True
Rows(i + 1 & ":" & j).Hidden = False
End Sub

bluesky님의 프로필 이미지
bluesky
질문자

바쁘실텐데 상세한 설명 해주셔서 정말 감사합니다. 도움이 많이 되었습니다 :)

 

bluesky님의 프로필 이미지
bluesky

작성한 질문수

질문하기