2012-05-01 4 views
2

과거에 n00bish 질문에 답변 해 주셔서 감사합니다. 나는 광범위한 연구를 수행하고 답변을 찾을 수없는 또 다른 질문을 가지고 있습니다.for 문에서 행의 열 값을 선택하는 방법은 무엇입니까?

테이블의 행을 반복하고 특정 열의 값을 선택하려고합니다.이 시점에서이 값을 MsgBox에 넣었지만 그 시도가 반복적으로 실패했습니다.

Dim id As Range 
Dim trtype As Range 

set id = Activesheet.Range("Table1[Column1]") 

For Each r In id 
    r.Select 
    Set trtype = .Range(Cells(.ActiveRow, "Column5")) 
    MsgBox trtype.Value 
Next r 

trtype = .Range(Cells(.ActiveRow, "Column5") 강조 행에 "형식 불일치"를 반환합니다.

이 아이디어를 만드는 방법에 대한 아이디어가 있으십니까?

+0

'. (셀 (.ActiveRow, "Column5"))'With '블록 내에서만 작동 할 수 있어야합니다. 하나 있습니까? 또한 객체를 할당 할 때 set을 사용할 필요가 있습니다 :'Set trtype = .Range ...'. – assylias

답변

0

는 나는 다음을 수행하여 작업을 가지고 :

For Each r In id 
    r.Select 
    trtype = Selection.Text 
    MsgBox trtype 
Next r 

감사를 설정 사용하는 경우의 토론과 발견를 알려준 그, 세트에 대한 대답과 함께 바른 길에 저를 얻기 위해 그 그것은 객체만을위한 것이고, 문자열은 .Text이 아니라 .Value

+0

내 대답을 참조하십시오. –

1

당신은 라인에서 설정 한 단어를 놓친 :

trtype = .Range(Cells(.ActiveRow, "Column5")) 

trtype은 (내장 된 Excel 개체를 가리키는 즉 하나의) 객체 변수입니다. VBA 규칙은 SET을 사용하여 지정해야한다는 것입니다.

오랜 세월 동안 이것은 가장 일반적인 VBA 오류였습니다!

+0

그건 불일치 오류를 해결했지만, 지금은 "유효하지 않거나 부적합한 참조"라고 말하고'.ActiveRow'를 선택합니다. 선택을 활성화해야합니까? – SpeedCrazy

+0

모든 셀에 VALUE 속성이 있으며, 일반적으로 사용하고 있습니다. 범위 자체를 얻으려면 다음이 필요합니다. SET trtype = ActiveCell MsgBox trtype ActiveCell.Value 그러나 셀을 선택하여 작업 할 필요가 없습니다. 매크로 속도를 늦추십시오). 대신 다음을 사용할 수 있습니다. MsgBox r.Value –

관련 문제