sheet1 以外の別のシートまたはワークブックが選択されている場合、マクロを実行するとコードが機能しないのはなぜですか? 後でセル エントリの値を変数に変更できるように、この形式のコードが必要です。これを回避する方法はありますか?
Sub testhsa()
ThisWorkbook.Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 2)).Value = 1
End Sub
Cells
ステートメントのコンポーネントを修飾していないため、機能しません。
以下が必要です - の.
前に注意してCells
ください:
With ThisWorkbook.Sheets("Sheet1")
.Range(.Cells(1,1), .Cells(2, 2)).Value = 1
End With
編集:コメントのさらなる明確化。.
ワークシート/範囲/セルをオフのままにすることで、アクティブな親が必要であることを Excel に伝えます。すなわちCells(1, 1)
、同じActiveSheet.Cells(1,1)
でRange("A1:D4")
あり、と同じActiveSheet.Range("A1:D4")
です。
このWith
ステートメントは、それに続くものはすべてそのオブジェクトに関連付けられていることを効果的に Excel に伝えるため、私の 3 行のコードは次のようになります。
ThisWorkbook.Sheets("Sheet1").Range(ThisWorkbook.Sheets("Sheet1").Cells(1,1), ThisWorkbook.Sheets("Sheet1").Cells(2, 2)).Value = 1
ActiveWorkbook
これにより、コードが実行されているワークブックの範囲にアクセスするコードが何であれ、Excel に明確になります。
最後に、範囲を頻繁に使用している場合は、HeadofCatering が正しく示唆しているように、それらを変数に割り当てたいと思うでしょう。