0

私はVBAが初めてです。実験から一部のデータをクリーンアップするスクリプトを作成しようとしています。「オブジェクトが必要です」というエラーが表示され続け、pold が強調表示されます。誰かが理由を知っていますか?

スクリプトに関しては、参加者番号の列を調べて、各参加者がどの範囲にいるかをマップしようとしています。参加者ごとに約 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

サブ終了

4

1 に答える 1

4

エラーはSet、オブジェクトへの参照を割り当てるために使用されるキーワードを使用しているためです。の RHS の出力Set pold = Range("B2:B2").Valueは整数であるため、vba はエラーを返します。Set解決するには、キーワードを削除するだけです。ただし、変数を初期化せずにループで使用rng1していることにも気付きました。その場合、ループは実行されません。それを修正したい場合もあります。forrng1for

于 2012-07-06T05:29:19.543 に答える