A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.4です。
>B2は
>=DATE(YEAR(A2),MONTH(A2),1)
>となっておりB3~B32までは一つ上のセル+1となってます。
ということで同条件でテストしてみましたが、やはり、ご質問者が示されたような症状は再現できませんでした。
ご質問者のEXCELブックが動作している全容が把握できませんが、今回、ご質問され、私が回答した、
「C2~C32の条件合致セルをロックするVBA」が動作しているVBAの全てなのでしょうか?
それとも、それはあくまでも全体のVBAの一部で、他のVBAもこのブックで動作しているのでしょうか?
当然のことながら、こちらのテストはあくまでも、私が回答した、「C2~C32の条件合致セルをロックするVBA」が単独で動作している前提でしかテストできません。
もし、他のVBAも動作しているとするとそちらとバッティングしている可能性は否定できませんが、内容が不明である以上回答困難です。
No.4
- 回答日時:
No.3です。
大変申し訳ありませんが、ご質問者がコメントで例示されたような症状は再現できませんでした。
>B2~B32のセルにエラーのマークが出てC2~C16が選択できるようになってしまいます。
そもそもB2~B32はご質問者が設定された数式で表示されていると承知していますが、そこにエラーマークが出るということは、記述された数式や書式に不整合が生じているのかもしれません。
今回のコメントにはB2~B32の数式については一切説明がありませんが、B2~B32の数式と書式について教えてください。
No.3
- 回答日時:
No.2です。
>何回か保護中のセルをクリックしたりしていると
>なぜか保護が解けて選択出来てしまいます。
とのことですが、その状況を再現できません。
具体的にA2,A3,B2~B32がどんな値のとき、保護中のセルであるA3はまたC2~C32の、どのセルをクリックしているとその症状が出るのか教えてください。
なお、保存されたブックを開いたときは、すべてのロックが解除された状態になります。
No.2
- 回答日時:
ご質問者のコメントを見て、fujillinさんのコードを若干修正しました。
fujillinさん流用をお許し願います。>A3に入力した日付「以前」の日付のC列に文字を入力できないよう
という説明ですので、fujillinさんのコードはC2~C32の値がA3と等しいときは入力可ですが、等しいときは入力不可にしました。
また、A2を変更するとC2~C32のロックセルも変更されるようにしました。
対象ブックのモジュールに以下のコードをコピペし、
Private Sub Workbook_Open()
ActiveSheet.Unprotect
End Sub
さらに、対象シートのシートモジュールに以下のコードをコピペして使用します。
「不要なら削除」の行は、ご質問者が
>A3のセルにも日付を入力します。この日付は一回入力したら固定です。
とおっしゃっているので、入力されたら変更不可にしています。(つまり、誤って入力しても修正できません。シートの保護を解除する必要があります。)
不要なら、その行を削除して使用してください。
なお、fujillinさんの注釈のとおり、保護パスワード無しの状態です。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim date0
Dim cel
If Intersect(Target, Range("A2:A3")) Is Nothing Then Exit Sub
Cells.Locked = False
date0 = Range("A3").Value
For Each cel In Range("B2:B32")
cel.Offset(0, 1).Locked = (cel.Value <= date0)
Next cel
If Range("A3").Value <> "" Then Range("A3").Locked = True '不要なら削除
ActiveSheet.Protect Contents:=True, UserInterfaceOnly:=True
End Sub
No.1
- 回答日時:
こんばんは
内容がよくわかりませんが、「ロックしたい」というのはシートの保護を利用したロックで良いものと解釈しました。
>うまくいきません。
としか情報がないので、どのような状態から処理をしたいのかまったくわかりませんが、A3セルに入力したら無条件でロックするものと仮定しました。
違っている場合は、スルーしてください。
以下のマクロを、対象シートのシートモジュールにコピペしておきます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d, c
If Intersect(Target, Range("A3")) Is Nothing Then Exit Sub
Cells.Locked = False
d = Range("A3").Value
Cells(3, 1).Locked = True
For Each c In Range("B2:B32")
c.Offset(, 1).Locked = c.Value < d
Next c
ActiveSheet.Protect Contents:=True, UserInterfaceOnly:=True
End Sub
※ 保護にパスワードをかけてはありませんが、パスワードが必要な場合は追加してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) EXCEL関数(数式)を教えてください 4 2023/05/08 17:19
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
- Excel(エクセル) ExcelにてA1セルに1、B1セルに月と入力した際に、A列に日付、B列に曜日が入力される様になる為 1 2023/03/02 06:47
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
参照先セルに値が入っていない...
-
Excelで同じセルに箇条書きをし...
-
A1セルに入力したら、入力時間...
-
空白でないセルの値を返す方法...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
Excelでセルに入力されたカラー...
-
値を入力後、自動的にアクティ...
-
エクセルで時間の判定をしてい...
-
エクセルで10分ごとの時刻の...
-
入力したところまでを自動的に...
-
yyyy/mm/ddからyyyy/mmへの変換
-
バーコードが読み取れない原因...
-
エクセルの数式で計算結果に文...
-
Excel で空欄にも単位 \\や円 ...
-
エクセルで入力した数字を倍に...
-
エクセルの数式がかぶって、選...
-
百万単位
-
エクセルで、例えばAのセルの...
-
ExcelVBAでセルを編集状態にす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
参照先セルに値が入っていない...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
Excel:文字と数字の組合せ、次...
-
空白でないセルの値を返す方法...
-
値を入力後、自動的にアクティ...
-
エクセルで時間の判定をしてい...
-
yyyy/mm/ddからyyyy/mmへの変換
-
Excelでセルに入力されたカラー...
-
エクセルの数式がかぶって、選...
-
エクセルで、特定のセルの内容...
-
エクセルで複数の条件で掛け算...
-
マイナス同士の前年比
-
入力したところまでを自動的に...
-
EXCELのセル上のURLを...
-
excel 関数にて文字を0として認...
-
バーコードが読み取れない原因...
-
ExcelVBAでセルを編集状態にす...
おすすめ情報
説明がわかりづらくすみません。
大体の内容はこのコードでクリアできているのですが
>A2の日付がA3の日付より前の月であればC2~C32を全てロック出来れば
というのはA3は固定なのですがA2の日付は月ごとに変更するようになっていて
その月がA3の日付以降であればC2~C32は全てロック解除でA3の日付以前であれば全てロックできるようにしたいのです。
返信も遅れ、説明もわかりづらいですが何卒宜しくお願い致します。
ご回答ありがとうございますm(__)m
返事が遅くなりすみません。
このコードでほとんどやりたいことは出来ているのですが
何回か保護中のセルをクリックしたりしていると
なぜか保護が解けて選択出来てしまいます。
なぜでしょうか?
例えばですが
A2 2021/1/1
A3 2021/1/15
B2~b32 2021/1/1~2021/1/31
C2~C32 全て空欄
A3,C2~C16は保護されていますが
保護されていないセルを選択し文字を入力出来る様
点滅する棒のようなものを出した後
保護中のセルを選択し文字入力を出来る様にクリックすると
B2~B32のセルにエラーのマークが出てC2~C16が選択できるようになってしまいます。
すみませんよろしくお願いいたします。
この様なエラーが出るとは思わず度々説明不足になってしまい申し訳ありません。
B2は
=DATE(YEAR(A2),MONTH(A2),1)
となっておりB3~B32までは一つ上のセル+1となってます。
例:B3であれば=B3+1
それ以外数式は入っていません。
よろしくお願いいたします。