お世話になります。いつも助けていただいています。表題の件につきまして,教えていただければと思います。
Range(Worksheets("sheet1").Cells(1, 2), Worksheets("sheet1").Cells(101, 14)).FormatConditions.Add(Type:=xlExpression, Formula1:="=CELL(""ROW"")=ROW()").Interior.Color = rgbPowderBlue
をVBAから書き込んでいますが,書き込む方法によって挙動がちがうようですので,アドバイスいただければと思います。その都度,条件付き書式設定の「ルールの管理」で確かめてみると,書き込みは行われているようです。
this workbook に
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Worksheets("sheet1").Cells.FormatConditions.Delete
Range(Worksheets("sheet1").Cells(1, 2), Worksheets("受付名簿").Cells(101, 14)).FormatConditions.Add(Type:=xlExpression, Formula1:="=CELL(""ROW"")=ROW()").Interior.Color = rgbPowderBlue
End Sub
のように記載した時だけ思った動作になります。
これを,sub にして,標準モジュールに記載し,
sub きょうちょう()
Worksheets("sheet1").Cells.FormatConditions.Delete
Range(Worksheets("sheet1").Cells(1, 2), Worksheets("受付名簿").Cells(101, 14)).FormatConditions.Add(Type:=xlExpression, Formula1:="=CELL(""ROW"")=ROW()").Interior.Color = rgbPowderBlue
end sub
this workbook から下記のように
Private Sub Workbook_Open()
call きょうちょう
End Sub
呼び出すと,条件付き書式に書き込みはあるようですが,思った動作になりません。
該当のSheet1には,
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
の記述いづれもしてあります。アドバイスいただけるとたすかります。
No.1ベストアンサー
- 回答日時:
>該当のSheet1には,
>Private Sub Workbook_SheetSelectionChange(ByVal Sh ~
これは、Sheet1のシートモジュールに、Workbook_SheetSelectionChangeイベントプロシジャを記述しているってことですか?
そもそもWorkbook_SheetSelectionChangeイベントプロシジャは、ThisWorkbookモジュールに記述するものなので、シートモジュールに書いても動かないような気がする。
質問の記載ミスでしょうか?
No.2
- 回答日時:
こんばんは
なさりたいことが記述されていないので目的がよくわかりませんけれど、選択セルの行を色付けしたいってことでしょうか?
古い記事だと、CELL関数で第二引数を省略すると
CELL("row")=row()
で、選択セルの行がTRUEになるようなことがかかれていますが、当方の環境ではそうはなりませんね。
最後に計算が発生した際のActiveCellが計算の対象となるようです。
一方で、Changeイベントで再設定しようとしているようですが、その方法を取るのなら
>ScreenUpdating
ではなく、対象範囲に対して、
Range.Calculate
を行えば、ActiveCellに対して再計算してくれるようになり、(多分)ご希望の動作になるのではないかと思います。
(ご希望が何なのかわからないので、推測ですけれど・・)
さらに言うなら、どうせChangeイベントで処理するのなら、条件付き書式などは使わずに、イベント内で対象セルに色付けをすれば済む話ではないでしょうか?
ただし、もともと色付けされているセルがあるような場合には、色付けをキャンセルする際に元の色に戻す必要が出てくるので少々厄介ですが、色付けセルがなければ一番簡単な方法と思います。
既存で色付けセル等が存在する場合には、当該セル範囲の書式を記録しておいて元に戻すという方法も考えられますが、少々面倒です。
当該行にだけ条件付き書式で色付けをするという方法も考えられますが、他に条件付き書式が設定されている場合にはキャンセルする際に設定した条件だけを削除しなければならないので、こちらもやや面倒です。
(ご提示のように、全部キャンセルしても良いのなら、面倒もなく簡単ですが)
作業セルを使っても良ければ、非表示の作業セルを空きセルに用意しておいて、事前に条件付き書式で
Row()=作業セル
を設定しておき、Changeイベントで「作業セルにActiveCellの行番号を記入する」ようにしておけば、条件付き書式をいじる必要がなくなるので簡単になります。
なお、仮に条件付き書式を利用するにしても、ご提示のように
>Private Sub Workbook_Open()
>call きょうちょう
>End Sub
のようなことを行うと、そのシートでは別の条件付き書式を設定してもキャンセルされてしまうことになりますけれど・・・
(実質的に、他の条件付き書式を利用できなくなる)
ちなみに、以下は、他のセルは色付けをキャンセルしても良いと想定した場合の一例です。
(シートのSelectionChangeイベントに設定します。)
(ご提示の条件付き書式は邪魔をするので、削除してください。)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const Carea = "E1:H10" ' ←色付けの対象セル範囲
Range(Carea).Interior.Color = xlNone
If Not Intersect(ActiveCell, Range(Carea)) Is Nothing Then _
Intersect(ActiveCell.EntireRow, Range(Carea)).Interior.Color = rgbPowderBlue
End Sub
早速のご回答ありがとうございます。
やりたかったのは,何よりも,VBAより条件付き書式を設定することです。
その過程でいろいろやりましたが,大きな勘違いで,おかしな動作をするのは当たり前でした。
worksheet と 記述 すべきところを workbookと記述していまして。
これで大きな疑問が解消です。
条件付き書式設定では,アクティブセルを含む行(列)を強調視することです。アドバイスの通り,条件付き書式を使わないと,アクティブセルの記憶,もとのアクティブセルの色を戻す,等と,処理ば煩雑になるので,条件付き書式をえらんだところです。
お騒がせしましたが,自己解決しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
EXCEL vbaでシート上に配置したボタンの移動については
Visual Basic(VBA)
-
-
4
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
5
VBA 入力箇所指定方法
Visual Basic(VBA)
-
6
VBA 2次元配列の出力
Visual Basic(VBA)
-
7
不要項目の行削除方法について
Visual Basic(VBA)
-
8
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
9
Excel 範囲指定スクショについて Excelで範囲指定してスクリーンショットする機能がありますが
Visual Basic(VBA)
-
10
VBAコードのインデント表示
Visual Basic(VBA)
-
11
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
12
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
13
[Excel VBA]特定の条件で文字を削除&残す処理をするファイルを作成したいです
Visual Basic(VBA)
-
14
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
15
エクセルvbaの対象セルに色をつける 例えば a日付 b種類 c値段 dその他 にんじん 50 ぴー
Visual Basic(VBA)
-
16
エクセルVBAのブックを開く方法 例えば [20241001] [20241002] [202410
Visual Basic(VBA)
-
17
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
18
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
19
VBA Application.Matchについての質問です
Visual Basic(VBA)
-
20
VBAでエクセルのテキストデータをクリップボードに格納したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでユーザーフォームを指定回...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
VBAについてです。 データのチ...
-
エクセルのVBAについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルVBAで在庫の組み換え処...
-
WindowsのOutlook を VBA から...
-
VB.net 文字列から日付型へ変更...
-
修正依頼:【VBA】 結合セルに...
-
エクセルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
Excel 範囲指定スクショについ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについて詳しい方...
-
ExcelVBA シート名を複数セルか...
-
【マクロ】オートフィルターに...
-
【ExcelVBA】5万行以上のデー...
-
VBAでエクセルのテキストデータ...
-
Excel VBAについて。こんな動作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAについて教えて下さい
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
【ExcelVBA】5万行以上のデー...
-
VBA Application.Matchについて...
-
Excelのマクロについて教えてく...
-
Excel VBAについて。こんな動作...
-
Excelの数式について教えてくだ...
-
ExcelのVBAコードについて教え...
-
VBA 同じフォルダ内のすべての...
-
不要項目の行削除方法について
-
Vba 型が一致しません(エラー1...
-
【マクロ】オートフィルターに...
-
【VBA】 結合セルに複数画像と...
-
VBAで特定の文字が入った行をコ...
-
ExcelのVBAコードについて教え...
-
VBAでセルの書式を変えずに文字...
-
VBAのエラー表示の対処法について
-
Excelのマクロについて教えてく...
-
Excel マクロについて詳しい方...
おすすめ情報
お騒がせいたしました。
大きな勘違いをしていました。
Workbook_SheetSelectionChange は,Worksheet_SheetSelectionChange の間違いでした。
思い込みで,細かい部分に目がいきませんでした。
この変更で,思った動作になりました。