
お世話になります。いつも助けていただいています。表題の件につきまして,教えていただければと思います。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか? 2 2024/05/16 07:13
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
VBA 入力箇所指定方法
Visual Basic(VBA)
-
-
4
EXCEL vbaでシート上に配置したボタンの移動については
Visual Basic(VBA)
-
5
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
6
VBA 2次元配列の出力
Visual Basic(VBA)
-
7
不要項目の行削除方法について
Visual Basic(VBA)
-
8
vbaマクロについて
Visual Basic(VBA)
-
9
Excel 範囲指定スクショについて Excelで範囲指定してスクリーンショットする機能がありますが
Visual Basic(VBA)
-
10
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
11
VBAコードのインデント表示
Visual Basic(VBA)
-
12
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
13
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
14
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
15
[Excel VBA]特定の条件で文字を削除&残す処理をするファイルを作成したいです
Visual Basic(VBA)
-
16
エクセルvbaの対象セルに色をつける 例えば a日付 b種類 c値段 dその他 にんじん 50 ぴー
Visual Basic(VBA)
-
17
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
18
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
19
エクセルVBAのブックを開く方法 例えば [20241001] [20241002] [202410
Visual Basic(VBA)
-
20
VBAで特定の文字が入った行をコピーして貼り付けたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAコードについて教え...
-
Excel マクロについて詳しい方...
-
えくせるのVBAコードについて教...
-
エクセルのVBAコードについて教...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
VBA 最終行の取得がうまくいか...
-
VB.net 文字列から日付型へ変更...
-
マクロVBAです。 どなたかコー...
-
質問58753 このコードでうまく...
-
VBAから書き込んだ条件付き初期...
-
VBAについて教えて下さい
-
VBAで特定の文字が入った行をコ...
-
Excel 範囲指定スクショについ...
-
【マクロ】オートフィルターに...
-
Vba 型が一致しません(エラー1...
-
VBAでFOR NEXT分を Application...
-
Vba WorkBooks.Openについて教...
-
Excel VBAについて。こんな動作...
-
不要項目の行削除方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.net 文字列から日付型へ変更...
-
VBA 最終行の取得がうまくいか...
-
VBAでエクセルのテキストデータ...
-
【ExcelVBA】5万行以上のデー...
-
エクセルVBAで在庫の組み換え処...
-
VBAから書き込んだ条件付き初期...
-
エクセルのVBAコードについて教...
-
VBAでユーザーフォームを指定回...
-
エクセルのVBAについて教えてく...
-
vbaマクロについて
-
ExcelのVBAコードについて教え...
-
【VBA】 結合セルに複数画像と...
-
WindowsのOutlook を VBA から...
-
質問58753 このコードでうまく...
-
ExcelのVBAコードについて教え...
-
Excel VBAについて。こんな動作...
-
[Excel VBA]特定の条件で文字を...
-
[VB.net] ボタン(Flat)のEnable...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
おすすめ情報
お騒がせいたしました。
大きな勘違いをしていました。
Workbook_SheetSelectionChange は,Worksheet_SheetSelectionChange の間違いでした。
思い込みで,細かい部分に目がいきませんでした。
この変更で,思った動作になりました。