『条件付き書式』(栗栄太)
条件付き書式で
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
いわれてみると、[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
(栗栄太) 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.