Excel VBA質問箱 IV

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

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


4250 / 76734 ←次へ | 前へ→

【78109】Re:アクティブ行の列を選択してセルの色を変更したい
お礼  HIRO  - 16/4/5(火) 13:27 -

引用なし
パスワード
   ▼β さん:
ありがとうございます!

迅速にご対応いただいたのに
確認が遅くなって非常に申し訳ありませんでした。

見事に成功しました!

シートに書かれているコードで、標準モジュールではなかったので
苦心していたところでした。
セル領域にシート修飾(ピリオド)をつけるという技に感動しました。
本当にありがとうございます。
そしてわかりやすい解説も付けていただき、感激しました。

まだまだ勉強が足りないな、と心から思いました。
今後とも何かあればご教示いただけますと幸甚です!

ありがとうございました。

>▼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

6 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 お礼[未読]

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