[[20251219102853]] 『条件付き書式』(栗栄太) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『条件付き書式』(栗栄太)

条件付き書式で
B3,B4のセルに以下のように設定しました。
ルール="B3.LOCKED=FALSE"
適用先=$B$3:$B$4
書式=塗りつぶし赤

B4のセルの書式設定で保護のロックをはずして
設定したのですが
(B3=ロックする,B4=ロックしない)
B4セルの色が赤になりません。

条件付き書式ではLOCKEDは反映されないのでしょうか?

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


それってマクロですかねえ?

=CELL("protect", B3)=1

で確認できるのでは?
(ゆたか) 2025/12/19(金) 10:53:56


あっ、絶対参照しないとだめだったか。

=CELL("protect", $B$3)=1
(ゆたか) 2025/12/19(金) 10:54:42


いや、セル別に色を変えたいなら絶対参照したらだめですね。
また、ロックされていないを確認するなら=CELL("protect", B3)=0かな。
失礼しました。
(ゆたか) 2025/12/19(金) 11:02:00

LOCKEDと言う関数はありません。なので数式には使えません。
(?) 2025/12/19(金) 11:05:53

(ゆたか)さん
(?)さん
ありがとうございます。
以下の登録で表示できるようになりました。
ルール=CELL("protect", B2)=1
書式=赤
適用先=$B$2:$B$3
ルール=CELL("protect", B2)=0
書式=青
適用先=$B$2:$B$3

いわれてみると、[LOCKED]はVBAでの使い方ですよね。
登録時に"B2.LOCKED=FALSE"でエラーがでなかったので
気が回りませんでした。
CELL("protect", B2) という使い方も使ったことがなくて
気が付きませんでした。

"protect"以外にもなにかあるんでしょうね。
他にどんなものが指定できるのかも、後々のために調べておきます。
(栗栄太) 2025/12/19(金) 11:46:59


 CELL関数は使ったことがないので、VBAでということなら、
 ユーザー定義関数を利用してみてはどうですか。
 Function Locked(rng As Range) As Boolean
     Locked = rng.Locked
 End Function
 ルールに、=LOCKED(B3)=False  とします。(大文字に自動変換されますが問題ありません)

 なお、ルールの最初の一文字に"="が必要です。
 入れないと、="LOCKED(D3)=FALSE" と整形されてしまい、
 エラーにはなりません。これが仕様です。
  ↑もちろん意図した動作にはなりません。

(xyz) 2025/12/19(金) 11:57:17


(xyz)さん
ありがとうございます。
エクセルにあまりくわしくないのでCELL関数は使ったことがないだけで
使いたくないというわけではないです。
どちらかといえば、標準であるものを利用したいと思っています。
ただ、以前のAND,ORの使い方や、今回のような同じ処理でもVBAと記述が
まったく変わるようなものはエクセルを使いこなせていない私にとっては
非常に混乱してしまいます。
はっきり言って知識不足なのは自分でもわかっていますし
みなさんに迷惑かけて申し訳ありません。

(栗栄太) 2025/12/19(金) 14:03:52


 > 今回のような同じ処理でもVBAと記述がまったく変わるようなものは
 > エクセルを使いこなせていない私にとっては非常に混乱してしまいます。
 あなたの投稿を拝見するところArrayListであったり、かなり高度のことにも
 取り組んでおられるようにお見受けします。

 今回のように、
 (1)オブジェクト.メソッドやオブジェクト.プロパティ等の使用      (【オブジェクト指向言語】的要素)
 (2)ワークシート上の式、計算に登場する手続き的、関数中心の考え方(【関数型言語的要素】
 を混同してしまうのは、VBAの基本的な考え方を余りよく理解されていないことが原因だと思います。
 (ExcelVBAは、VB6という古い言語の上に、Excelを操作するためにオブジェクト指向言語的な方法を
   建て増ししたものです。
   そのオブジェクト指向言語的要素はワークシート上の式、関数には一切登場しません)

 B3.LOCKED=FALSE という書き方は
 Range("B3").LOCKED=FALSE の省略形と想像されますが、
 (1)の代表的な考え方によるものです。
 こうしたパラダイムによるものは、ワークシート上の式や関数には絶対に出てきません。

 コードの意味を十分に理解せずに形だけ真似ているのではないかと危惧します。

 >みなさんに迷惑かけて申し訳ありません。
 そういうことは一切ありません。

 もう一度VBAの基本書に立ち戻って、そのあたりを復習されることがご自身にとって有益かと助言しておきます。

(xyz) 2025/12/19(金) 17:11:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.