나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황기성 (latinum)

추천:  2
파일:     조회:  1733
제목:   [RE]6420질문 다시 하기(강용림님 다시 함 봐 주세요)
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

1. 엑셀 버전(95,97,2000,2002):
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP):
3. CPU (486,PentiumI/II/III/IV...):
4. RAM (32,64,128,256,512MB,1G...): 

* 아래줄에 질문을 작성하세요 >>

전혀 문제를 해결하고 있지 못해서 다시 정확히 여쭤 볼께요.
range의 주소를 string형태로 받아서 선택된 모든 행을 delete하기 위한 프로시져인데
range속성에서 계속 에러가 발생합니다.

6420번 질문에 대한 답을 강용림님께서 시트가 달라서 그렇다고 하시는데, 그 말씀도 잘 이해가 안됩니다.
다음은 코드입니다.


Application.ScreenUpdating = False

Set shtDbAll = ThisWorkbook.Sheets("db all") >>>본래 데이터베이스를 담고 있는 쉬트
With shtDbAll
    .Activate
    .Unprotect
    .Range("A:A,C:C,P:P,R:R,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC").Select  >>>필요한 칼럼만을 선택해서
End With

Selection.Copy    >>> 카피해서
shtDbAll.Range("a1").Select
Sheets("front").Activate >>>원래 워크북의 front 페이지 activate

Set wkNew = Workbooks.Add   >>> 새로운 워크북
Set shtNew = wkNew.Sheets(1)

With shtNew
    .Paste   >>> 붙여 넣기
    Set rngNumReg = .Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)) >>첫번째 칼럼에 등록 번호 데이터를 가지고 있는데, 모든 등록번호 선택
    Set rngGrad = rngNumReg.Offset(0, 10) >>이것은 수료식 날짜를 나타내는 칼럼임
    
    For Each mygrad In rngGrad  
        If mygrad <> "" Then   >>수료식을 한 사람들(날짜기입되어 있음)을 선별하기 위한 것임
            ReDim Preserve strAddress(intStr) As String  >>> 동적배열에 담아서
            strAddress(intStr) = mygrad.EntireRow.Address(False)
            intStr = intStr + 1
        End If
    Next mygrad
    
    
    For intStr = 0 To UBound(strAddress) - 1
        strAddr = strAddr & strAddress(intStr) & ","
    '    MsgBox strAddr
    Next intStr
    strAddr = strAddr & strAddress(UBound(strAddress))
   .Range(strAddr).Select >>straddr "31:31,33:33...... 199:199" 와 같은 결과를 가지는데 range 속성에서 에러가 발생합니다.
    selection.delete

==============[아노님님 글에 대한 답변입니다]==============
안녕하세요? 아노 님!

강용림 님은 아니지만^^*

코드 여기저기에 문제가 있어 보입니다만...다 고쳐 드리긴 그렇구요

아무튼, 

   .Range(strAddr).Select >>straddr "31:31,33:33...... 199:199" 와 같은 결과를 가지는데 range 속성에서 에러가 발생합니다.
라고 하셨는데요

strAddr라는 변수에 들어 있는 문자열의 길이가 길다면 오류가 발생하게 됩니다.

20개 이상의 떨어진 범위라면 아마도 문제가 발생할 것이므로

위와 같이 문자열을 이용해 범위를 설정하는 대신, 간단히 Union 메서드를 이용해 범위를 통합하십시오

그럼...행운이 있으시길...!
 
[불량 게시물 신고]  
        
  

작성일 : 2003-09-14(11:32)
최종수정일 : 2003-09-14(11:32)
 


 ◎ 관련글

  제 목   작성자   날짜
6420질문 다시 하기(강용림님 다시 함 봐 주세요) 아노님 2003-09-13
[RE]6420질문 다시 하기(강용림님 다시 함 봐 주세요) 놀란토끼 2003-09-14
[RE]6420질문 다시 하기(강용림님 다시 함 봐 주세요) 황기성 2003-09-14