私はたまにしか VBA を使用しませんが、VBA に戻るたびに、次のようなバリエーションに悩まされます。
スプレッドシートで作業しているセルを追跡するために使用するRange
オブジェクトがあります。currentCell
これを更新して別のセルを指すようにすると、次のように記述します。
currentCell = currentCell.Offset(ColumnOffset:=1)
問題は、キーワードを忘れてしまったことです。そのSet
ため、上記の行が実際に行うことは、Range
オブジェクトのデフォルト プロパティを使用することです。
currentCell.Value = currentCell.Offset(ColumnOffset:=1).Value
したがって、現在のセルの内容は新しいセルの内容によって上書きされ、currentCell
変数は新しいセルを指すように変更されていません。同じ間違いを 100 回も繰り返していることに気づき、怒りでいっぱいになります。 .
「今日 Set を使うのを覚えていましたか?」というポストイットをモニターに貼るよりも良い答えはおそらくないでしょうが、誰かが私を助けるために何か提案があれば、聞いていただければ幸いです. 特に:
- デフォルトのプロパティを暗黙的に使用するときに警告をオンにする方法はありますか? 私は意図的にこのように使用したことはありません
Range.Value
。 - 「これはスプレッドシートからの読み取りにのみ使用する必要があります」として変数をマークするための良い方法はありますか? 私が書いたほとんどのコードでは、ほとんどすべての変数がデータを収集するためのものであり、何かがこのようにセルを誤って編集し始めた場合に警告を受け取ると便利です。