0

私はこのコードを長い間見つめてきましたが、非常に単純なものが欠けていると思います。このステートメントの目的は、「lastRowCompass」変数 (範囲) を列の最初の空のセルとして設定することです。

Set lastRowCompass = Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)

変数が設定されたら、次のようにループで使用したいと思います。

For i = lastRowCompass To Range("D" & Rows.Count).End(xlUp).Row
If ActiveSheet.Cells(i, 4) <> "" Then
    Cells(i, 4).Offset(0, -2) = hireDate
End If
Next

変数は Range として宣言されているため、非常に混乱します。コードをステップ実行すると、set ステートメントを実行した後でも i = 0 になります。誰か提案はありますか?私が見たすべての例は、問題のトラブルシューティングに役立ちませんでした。どうもありがとう!

編集:私もこの行を試しました:

Set lastRowCompass =Range("B1").End(xlDown).Offset(1, 0)

そしてこの行:

Set lastRowCompass = Range("B" & Rows.Count).End(xlDown).Offset(1, 0)

しかし、私は両方で同じ結果を得ました。

4

1 に答える 1

3

For i =は整数が必要ですが、範囲を渡しています。(オフセットは Range オブジェクトを返すため、lastRowCompass は整数ではなく、Range です)

プログラムは、Range を整数に正確に変換できないと思います。

For i = lastRowCompass.Rowまたは別の開始値を使用してみてください。


私が提案する場合は、常にOption Explicitコードファイルの先頭で使用してください。これにより、すべての変数を宣言する必要がありますが (余分なコーディングはほとんどありません)、奇妙な代入を回避するのに役立ちます。

于 2013-05-06T18:26:48.250 に答える