2017-12-10 6 views
3

対私はRng.Item(1)及びRng.Item(2)を使用して、RNG範囲の最初の2個の細胞を処理Selection |の行をループします。範囲は、行

Public Function Init(Rng As Range) As Portal 

でクラスのポータルを持っています。これは、選択範囲の最初の行のために正常に動作します:

Sub ProcessPortal() 
    Dim mPortal As Portal 

    Set mPortal = New Portal 
    With mPortal 
     .Init Selection 
    End With 

End Sub 

しかし、私が欲しいときには、行の残りの部分をループに失敗します。

Sub ProcessPortal() 
    Dim mPortal As Portal 
    Dim a As Range, b As Range 

    Set a = Selection 
    For Each b In a.Rows 
     Set mPortal = New Portal 
     With mPortal 
      .Init b 
     End With 
    Next b 
End Sub 

bは、右だけの選択のような範囲であり、 ? .Init bで型の不一致が生じるのはなぜですか?

+0

'Item(1)'と 'Item(2)'の代わりに 'Cells(1)'と 'Cells(2)'を使います。 'Range'オブジェクトには様々な"味 "があり、" Item'プロパティは異なる場合を返します。 (例えば行の項目(1)は行です) – YowE3K

+0

素晴らしいです!ありがとうございました! –

答えて

2

あなたは、すなわちあなたのInit手順でCells(1)Cells(2)を使用し、むしろItem財産よりも、RangeオブジェクトのCellsプロパティを使用して、セルにアクセスしようとしている場合。

Debug.Print Rows(1).Cells(1).Address 

$A$1が返されながら$1:$1が返され

Debug.Print Rows(1).Item(1).Address 

:によって分かるよう

全体行の最初Itemは、行自体です。

関連する問題