Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4251 / 76734 ←次へ | 前へ→

【78108】Re:アクティブ行の列を選択してセルの色を変更したい
発言  β  - 16/4/4(月) 20:47 -

引用なし
パスワード
   ▼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

3 hits

【78102】アクティブ行の列を選択してセルの色を変更したい HIRO 16/4/4(月) 17:54 質問[未読]
【78105】Re:アクティブ行の列を選択してセルの色を... β 16/4/4(月) 19:21 発言[未読]
【78106】Re:アクティブ行の列を選択してセルの色を... β 16/4/4(月) 19:56 発言[未読]
【78107】Re:アクティブ行の列を選択してセルの色を... マリオ 16/4/4(月) 20:44 回答[未読]
【78108】Re:アクティブ行の列を選択してセルの色を... β 16/4/4(月) 20:47 発言[未読]
【78109】Re:アクティブ行の列を選択してセルの色を... HIRO 16/4/5(火) 13:27 お礼[未読]

4251 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free