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

 복대리 (cyser007)

추천:  2
파일:     조회:  2553
제목:   vba와 동적배열. 코딩 질문.
     
  Sub 주소()

Dim rngmyrange As Range
Dim c As Range
Dim addcell() As String
Dim intnum As Integer


Set rngmyrange = Worksheets("포지션").Range("c8: c30")

For Each c In rngmyrange
    If Not IsEmpty(c) Then
                
        ReDim Preserve addcell(intnum)
        addcell(intnum) = CStr(c.Address)
               
               intnum = intnum + 1
            MsgBox addcell(intnum)
            
    Else
    
    End If
Next c

End Sub

위와 같은 코딩문이 있습니다. addcell(intnum) = CStr(c.Address)
"아래첨자 사용이 잘못되었습니다 " 라는 에러가 뜨는데 왜 그런지요.

c.address 가 주소로 나타남으로 문자로 변형시키고, addcell을 string으로 변수를 주었습니다.

무엇이 잘못되었는지 고참님들의 답변 부탁합니다.

제가 하고 싶은것은. addcell(intnum)에 각각의 주소를 동적배열을 사용하여 주소를 담고 싶은 것입니다.
 
[불량 게시물 신고]  
졸따구안녕하세요?

'addcell(intnum) = CStr(c.Address)'이 부분이 아니라 'MsgBox addcell(intnum)' 에서 에러가 나지않던가요? 이렇게 수정해보세요.

MsgBox addcell(intnum-1)

그럼..


09-08 (18:27)
삭제 ■신고
복대리작동이 되는군요.. 좀 전에는 작동이 안되었는데요.. 제가 뭘 하나 빠뜨린 모양입니다..  

고맙습니다.
09-08 (18:44)
삭제 ■신고
작은오리안녕하세요? 복대리 님!
허접하지만 제 실력도 형편없지만 잠시 한 글자 적습니다

ReDim Preserve addcell(intnum)
addcell(intnum) = CStr(c.Address)   ' 현재 intnum 값은 0입니다
intnum = intnum + 1                 ' 0 + 1 = 1 intnum값은 1입니다
MsgBox addcell(intnum) ' addcell(1) 할당되지 않는 배열값을 참조하므로 
  오류가 발생한답니다. 그러므로 졸따구 님의 코드처럼 -1를 해야 하지요

위 코드는 아래와 같이 되어도 무방할 것 같습니다
ReDim Preserve addcell(intnum)
addcell(intnum) = c.Address
MsgBox addcell(intnum)
intnum = intnum + 1

address는  String형식이므로 일부러 Cstr변환함수는 사용치 않아도 될 듯 하군요

그럼.. 하시는 일 잘 되시기를 바랍니다.
09-08 (19:01)
삭제 ■신고
복대리감사합니다. 배열이 0 부터 시작하니. -1을 해주어야 하는것이 옳은것이군요.. 고맙습니다.09-08 (19:13)
삭제 ■신고
        
  

작성일 : 2003-09-08(17:53)
최종수정일 : 2003-09-08(17:53)
 


 ◎ 관련글

  제 목   작성자   날짜
vba와 동적배열. 코딩 질문. 복대리 2003-09-08
[RE]vba와 동적배열. 코딩 질문. 놀란토끼 2003-09-08