파이스님의 질문해주셔서 만든 강좌입니다.
셀 안에 삽입된 이미지의 정가운데(가로+세로)정렬 방법이 궁금합니다.
셀안에 도형이나 이미지를 어떻게 정렬할것인가를 알려주는 강좌입니다.
도움이 되셨기를..
아래 이미지는 첨부된 엑셀 파일을 이미지로 만든 것입니다.
엑셀파일을 다운 받아 실습해보세요..
다운 받기 : abyul.com_arrangeImages_20111011-1.xlsx
** 여러 개의 이미지를 한번에 정렬하고 싶으시면 저 아래쪽에 VBA를 활용하는 방법을 참고하세요..
[ 강좌 추가 ]
추가 질문에 대한 답변입니다.
▲추가 질문..
안녕하세요. 아별님 파이스입니다.
알려주신대로 하니 정말 신기하게 잘 되었습니다.
혹시 A열에 예시처럼 3개의 셀이 아닌 300개의 셀에 일일히 정렬되지 않고 크기도 서로 다른, 이미지가 이미 들어가 있고
이것을 일괄적으로 맞추고자 한다면,
알려주신 것처럼 (1) (셀 크기에 맞춘 하나의 도형과 그 안의 이미지를 같이 잡아서 가운데 맞춤 중간맞춤)
위의 (1)의 과정을 300회 반복하는 것보다 좀 더 효율적인 방법이 있을까요?
좋은하루 보내세요 ~^^
▲추가 답변..
파이스님.. 엑셀의 기본 기능으로 해결하려면,
설명드린데로 하실 수 밖에 없을 것 같습니다.
하지만.. 엑셀에는 VBA가 있지요..
첨부파일을 다운 받아 테스트해보세요..
다운받기 : abyul.com_arrangeImages_VBA_20111012-3.xlsm
해당 코드는 아래와 같습니다.
Sub arrangeImageToCenter() For Each s In ws.Shapes End Sub |
댓글 '4'
사랑님..
반갑습니다. 이왕이면 가입하셔서 질문하시면 좋을텐데.. ㅎㅎ
암튼.. 나그네에게도 친절한 아별이므로 답변 드립니다. ^^
지금보니 원본 코드가 좀 간결하지 못하네요.. @_@;;
간결하게 고쳐보면 아래와 같습니다.
Sub arrangeImageToCenter() '### Created by Joowon Oh @ abyul.com '### created 2011.10.12, updated 2013.03.15 Dim s As Shape, r As Range Dim ws As Worksheet: Set ws = ActiveSheet For Each s In ws.Shapes Set r = s.TopLeftCell If r.Column = 1 Then s.Left = r.Left + (r.Width - s.Width) / 2 s.Top = r.Top + (r.Height - s.Height) / 2 End If Next s End Sub |
위 코드에서 "r.Column = 1" 부분의 숫자 1은
A열을 의미하는 것이므로.. 2나 3으로 바꾸면 2번째열 3번째 열 정렬도 가능합니다.
특정 열에 상관없이 전부 정렬하려면 아래처럼 하시면 되겠죠..
IF조건을 빼버리면 됩니다.
Sub arrangeImageToCenter() '### Created by Joowon Oh @ abyul.com '### created 2011.10.12, updated 2013.03.15 Dim s As Shape, r As Range Dim ws As Worksheet: Set ws = ActiveSheet For Each s In ws.Shapes Set r = s.TopLeftCell s.Left = r.Left + (r.Width - s.Width) / 2 s.Top = r.Top + (r.Height - s.Height) / 2 Next s End Sub |
도움이 되셨기를.. ^^