2017-11-28 10 views
0

私はsheet2の列Mのセルが "Special"に変更されるたびに、そのセルの行番号が最初の行にコピーされるようにマクロを作成しようとしていますSheet12の列Bの空白セル。 「9」今、私はランタイムエラーを取得していますモジュールの外側のシートを参照 - 範囲外の範囲

If Target.column = 13 Then 

    Dim l As Integer 

    With Sheet2 

     For l = 3 To 1000 
      If .Cells(l, 13) = "Special" Then 
       Worksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = l 
      End If 
     Next 

    End With 

End If 

:ラインWorksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = lのための範囲外の添字が、私は変更になるかわからないんだけどここでは、現在のSheet2に、私がこれまで持っているものです同じエラーでいくつかの繰り返しを試した後。私はこのタイプのエラーを参照するいくつかの他の質問があることを知っていますが、私はこの特定のスクリプトで助けられたものは見つかりませんでした。

+0

:@Lowparで、それがより良いように書かれることになるので、列に最後に使用された行を検索しようとしたときにEnd(xlUp)を使用することをお勧めします12 "?また、私は範囲( "B100000")のファンです。end(xlup) – Lowpar

+0

Sheet12で変更を加えるために、Sheet2のM列をループしたいと思います。 @Lowpar – Kim

+0

あなたのコードでは、 "sheet12"ではなく "Sheet12"となっています。範囲外の添字は、使用可能なメモリノードを指していないことを示します – Lowpar

答えて

0
声明で

Worksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = l 

あなたが「sheet12」のNameとワークシートを持っていない場合は、「下付き範囲外」エラーを引き起こす可能性が高いだけの事はあります。

あなたがWith Sheet2文を持っていることを考えると、「Sheet12」は実際にあなたのシートのCodeNameあるので、あなたの文があるべきと思わ:コメントで指摘したように、しかし

sheet12.Range("B1").End(xlDown).Offset(1, 0).Value = l 

それは「シートであるべき

sheet12.Range("B" & sheet12.Rows.Count).End(xlUp).Offset(1, 0).Value = l 
関連する問題