|
▼HIRO さん:
少しお先走ることになるかもしれませんが。
もし、このコードが Sheets(ShName) ではないシートのシートモジュールに書かれていた場合は
Range(Cells(gyou, 59),Cells(gyou,60)).Select
このコードで、1004エラー RangeクラスのSelectメソッドが失敗しましたよいうエラーになります。
Sheets(ShName).Activate
これで、確実に Sheets(ShName) がアクティブシートになります。
gyou = ActiveCell.Row
ActiveCell はブックに1つしかありません。今アクティブになっているシートのアクティブになっているセルです。
ですから、このコードも、確実に Sheets(ShName) のアクティブセルを参照します。
問題はそのあと。
Range(Cells(gyou, 59),Cells(gyou,60)).Select
セル領域に どのシートなのかという情報を明示しない場合、
・標準モジュールなら、今、アクティブになっているシート とみなされます。
で、このコードは問題なくOKになるはずです。
・シートモジュールの場合は、そのコードが書かれたシートということになります。
そのコードが書かれたシートが Sheets(ShName) ではなかった場合、
Range(Cells(gyou, 59),Cells(gyou,60)) という領域は、今アクティブになっていないシートの領域になります。
アクティブではないシートの領域は Select できません。なので、Select仕様とすると、
それはエクセルのルールに反している!! と叱られます。
対応策は2つ。
1.このコードを標準モジュールに書く。
2.シートモジュールであれば
With Sheets(ShName)
.Activate 'これはActiveCell取得のためやむなし
gyou = ActiveCell.Row
'セル領域にシート修飾(ピリオド)をつける
.Range(.Cells(gyou, 59), .Cells(gyou, 60)).Interior.ColorIndex = 10
End With
|
|