2012-07-06 2 views
0

VBA를 처음 사용했습니다. 나는 실험에서 일부 데이터를 정리하는 스크립트를 작성하려고합니다. "Object Required"라는 오류 메시지가 계속 표시되며 pold가 강조 표시됩니다. 왜 아무 생각 없어?컴파일 오류 : 필요한 개체 VBA

스크립트에 관해서는 참가자 번호 열을 내려보고 각 참가자가 속한 범위를 매핑하려고합니다. 참가자 당 약 30 행이 있으며이를 배열의 값으로 정의하려고합니다. .

Sub Cleanthismofoup() 
Dim pranges(1 To 50) As Long 
Dim pbegin As Range 
Dim pend As Range 
Dim pold As Integer 
Dim pnew As Integer 
Dim pcell As Range 
Dim pcounter As Long 
Dim i As Long 

Set pcell = Range("A1:A1") 
Set pbegin = Range("A2:A2") 
Set pold = Range("B2:B2").Value 
pcounter = 0 

'for every item, store value in pnew 
' move down one line. Check pnew = pold 
' if it is, do again. else create new range 

For i = 1 To rngl 
pcell = pcell.Offset(-1, 0) 
pnew = pcell.Cells.Value 
If pnnew <> pold Then pcell = pend 
If pcell = pend Then 
counter = counter + 1 
pranges(counter) = pbegin 
counter = counter + 1 
pranges(counter) = pend 
pbegin = pcell.Offset(-1, 0) 
Else: pold = pnew 
End If 

i = i + 1 
Next 

최종 하위

+0

오류가 발생하는 행은 무엇입니까? –

+0

'pnew'와'pnnew'의 혼합이있는 것 같지만'pnnew'는 어디에도 선언되어 있지 않습니다. 이미 모듈이 없다면'Option Explicit'을 모듈 상단에 추가하십시오. – barrowc

답변

2

당신이 개체에 대한 참조를 할당하는 데 사용되는 Set 키워드를 사용하고 있기 때문에 오류입니다. Set pold = Range("B2:B2").Value의 RHS 출력은 Integer이므로 vba에서 오류가 발생합니다. 이 문제를 해결하려면 Set 키워드를 삭제하면됩니다. 그러나 루프에서 rng1을 사용하고 있고 루프가 실행되지 않는 경우 rng1 변수를 초기화하지 않은 것으로 나타났습니다. 당신은 그것을 바로 잡고 싶을 수도 있습니다.

+1

'Set' 키워드도이 라인에서 빠져 있습니다 :'pcell = pcell.Offset (-1, 0)' – JimmyPena

+0

고마워요. 나는 그 부분을 망쳐 놓고 rng1 부분을 저장하지 않았다. – user1505743

+0

또한 pcell = pcell.Offset (-1,0)이 괜찮은 것 같습니까? pcell에 범위 값을 저장하여 열을 아래로 이동하려고합니다. – user1505743

관련 문제