1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

특정개체 수정 관련

VBA 조회 수 6243 추천 수 0 2015.04.02 17:11:39

업무 중에 답답한게 있어서 코드 수정 좀 부탁드리고쟈 이렇게 글을 올립니다. 

엑셀2010 32비트, 윈764비트 입니다.


아래코드는 매크를 실행하면 범위설정 대화상자가 뜨는데요.

범위를 설정하면 범위 안에 있는 개체가 선택되어집니다.

그런데 위 코드는 범위 안에 개체가 전부 들어가 있어야만 하는데요.

이런 것을 범위 안에 전부 들어와야만 선택이 되도록 하는 방법과 범위안에 일부라도 들어와도 선택이 되게끔 하는 것이죠.

그래서 매크로를 실행하면 나타나는 대화상자에 옵션단추가 두개(즉, 범위 일부, 범위 전부)가 있고

범위설정 할 수 있게 구성해서 사용자가 옵션단추를 선택하고 범위를 설정하게 하는 것이죠.

어떻게 수정하면 좋을런지요? 


Sub 선택영역개체선택()
   Dim MyShape As Object
   Dim rngSelect As Range
   Dim rngMySahpe As Range
   Dim rngSelectedCells As Range
   Dim arrShape() As Variant
   Dim W As Worksheet
   Dim i, j
   
   On Error Resume Next
   
   Set W = ActiveSheet

   i = W.Shapes.Count
   If i > 0 Then
       j = 1
       
       Set rngSelectedCells = Application.InputBox(Prompt:=i & " 개가 있습니다. 작업 하고자하는 범위를 선택하세요" _
, Title:="범위 선택", Type:=8)
       Application.ScreenUpdating = False

       ReDim arrShape(1 To i)

       For Each MyShape In W.Shapes
           Set rngMySahpe = MyShape.TopLeftCell

           Set rngSelect = Application.Intersect(rngSelectedCells, rngMySahpe)
           If Not rngSelect Is Nothing Then

               arrShape(j) = MyShape.Name
               j = j + 1

           End If
       Next MyShape

       If j > 1 Then
           ReDim Preserve arrShape(1 To j - 1)
           W.Shapes.Range(arrShape).Select
       End If

       Set rngMySahpe = Nothing
       Set rngSelect = Nothing
       Set rngSelectedCells = Nothing
       Set W = Nothing
       Erase arrShape

       If j > 1 Then
           MsgBox j - 1 & " 개 선택"
       End If
       
       Application.ScreenUpdating = True
   End If
End Sub


댓글 '5'

profile

[레벨:30]아별

2015.04.02 19:31:13
*.132.210.135

고수가 되고파님..


팁을 드리자면..


   '# 아래의 코드를..

   Set rngMySahpe = MyShape.TopLeftCell

   

   '# 아래처럼 바꾸세요..

   Set rngMySahpe = Range(MyShape.TopLeftCell, MyShape.BottomRightCell)


사용자가 선택한 셀과 rngMySahpe의 intersect한 셀의 갯수가 rngMySahpe의 셀의 갯수와 같으면 완전히 포함되는 것이고, 1보다 크고 rngMySahpe의 갯수보다 작으면 일부만 포함되는 것입니다.


그리고 rngMySahpe는 rngMyShape의 오타인것 같네요.. 타이핑할때마다 헷갈립니다. ^_^;;


도움이 되셨기를..

[레벨:4]고수가되고파

2015.04.03 16:47:42
*.156.90.221

답변 감사합니다.

그런데,  셀의 범위를 좌에서 우, 위에서 아래 그리고 우에서 좌, 밑에서 위로 설정해도 똑  같은데요.


profile

[레벨:30]아별

2015.04.06 09:49:10
*.132.210.135

무슨 말씀이신지 잘 모르겠습니다.

셀을 선택하는 방향은 상관이 없을텐데요..

선택된 셀들 안에 도형 전체가 들어갔는지, 일부가 들어갔는지를 알고 싶으신것이 아닌가요?

이런 코드의 목적이 무엇인지도 잘 모르겠습니다.


무엇을 하고 싶으신건가요?

[레벨:4]고수가되고파

2015.04.06 11:15:04
*.156.90.221

네 맞습니다. 선택된 셀들 안에 도형 전체가 들어갔는지, 일부가 들어갔는지를 알고 싶은 것입니다.

님께서 말씀하신 대로 코드를 수정해도 셀들안에 도형 전체가 들어가든 아니면 일부가 들어가던 도형 전체가 선택이 됩니다.

profile

[레벨:30]아별

2015.04.06 19:51:41
*.132.210.135

제가 답변 드린 것은,

문제 해결을 위한 가이드일뿐입니다. "팁"을 드린 것이지요..

도형 전체가 포함되었는지를 체크하려면 TopLeftCell뿐만아니라 BottomRightCell도 같이 체크해야한다는 "팁"을 드린겁니다.

위 팁을 응용하시면 문제 해결에 한발짝 더 접근할거라 생각했습니다.


제가 드린 팁을 바탕으로 한번 더 고민을 해보시고..

수정하신 코드를 다시 한번 올려주세요.. 그럼 제가 그것을 보고 다시 수정할 방향을 알려드겠습니다.

그렇게 접근하는게 공부하시는데 더 도움이 될 것 같습니다.


혹시라도, 

공부하실 생각이 없으시다면 유료로 엑셀 솔루션을 개발해주는 곳을 소개해드리겠습니다.


도움이 되셨기를..

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 43635
113 VBA 엑셀 열 추가 _ 엑셀의 마지막 셀 재 인식시키는 팁 ActiveSheet.UsedRange.Select imagefile [1] [레벨:5]눈물바다 2009-08-27 10162
112 VBA 엑셀 일괄암호저장 imagefile [1] [레벨:1]천운 2017-03-13 9501
111 VBA 매크로 질문 드립니다. [레벨:1]ORACLE 2016-08-16 8574
110 VBA 컴파일 에러가 나요? [레벨:1]구름바다 2015-09-14 8258
109 VBA 매크로를 이용한 exe 파일 자동 실행 방법 문의~ imagefile [레벨:1]hickel 2016-09-07 8113
108 VBA 추가기능 파일 수정 관련 file [1] [레벨:4]고수가되고파 2015-04-03 8057
107 VBA .Find 재고 입고월 분석(vba) file [3] [레벨:1]럽웨어 2009-07-24 7848
106 VBA 셀에 맞춰 그림 삽입하기 [1] [레벨:5]눈물바다 2012-06-05 7739
105 VBA 파일&폴더 파일 만들기 _ 파일 생성, 폴더 생성, 파일 존재하는지 여부 확인 등 [4] [레벨:3]엑셀대단해 2012-08-15 7564
104 VBA 셀 복사 후 아래셀에 수식 및 메모 붙여넣기 관련 [레벨:4]고수가되고파 2015-04-17 7499
103 VBA 사용자 정의 함수에서 변수의 행번호 추출하기 file [레벨:1]백미90 2015-08-17 7183
102 VBA .Find 매크로 질문입니다.~ [2] [레벨:1]카멜 2009-07-02 6885
101 VBA .Find ListBox1 에 추가가 되지를 않습니다. file [3] [레벨:1]사오정원조 2009-07-03 6885
100 VBA vba질문하나 올리겟습니다.ㅠㅠ file [3] [레벨:1]gg남자 2013-03-27 6728
99 VBA 랜덤 출력 관련 짧고 간결(?)한 3가지 질문입니다. _ 중복 없는 랜덤 패스워드 생성하는 방법.. [4] [레벨:6]파이스 2011-11-29 6662
98 VBA 조건문을 변수화 하는 방법 [2] [레벨:3]엑셀대단해 2012-07-23 6593
» VBA 특정개체 수정 관련 [5] [레벨:4]고수가되고파 2015-04-02 6243
96 VBA 프로그램바 질문 _ 작업 진행바 Progress bar file [2] [레벨:4]신강현 2013-01-30 6144
95 VBA VBA로 정렬하는 법 문의 file [6] [레벨:4]부루끄 2011-07-21 6119
94 VBA 한셀안의 서식을 다르게 지정할 수 있는 방법 없을까요? file [5] [레벨:4]부루끄 2011-09-28 6102