Note: The other languages of the website are Google-translated. Back to English

Excelの別のセルの値に基づいてセルをロックまたはロック解除するにはどうすればよいですか?

場合によっては、別のセルの値に基づいてセルをロックまたはロック解除する必要があります。 たとえば、セルA1に値「Accepting」が含まれている場合は、範囲B4:B1のロックを解除する必要があります。 セルA1に値「拒否」が含まれている場合はロックされます。 それを達成するためにどのようにできますか? この記事はあなたを助けることができます。

VBAコードを使用して別のセルの値に基づいてセルをロックまたはロック解除します


VBAコードを使用して別のセルの値に基づいてセルをロックまたはロック解除します

次のVBAコードは、Excelの別のセルの値に基づいてセルをロックまたはロック解除するのに役立ちます。

1.シートタブ(別のセルの値に基づいてロックまたはロック解除する必要のあるセルを含むシート)を右クリックし、をクリックします コードを表示 右クリックメニューから。

2.次に、次のVBAコードをコピーして[コード]ウィンドウに貼り付けます。

VBAコード:別のセルの値に基づいてセルをロックまたはロック解除します

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") = "Accepting" Then
        Range("B1:B4").Locked = False
    ElseIf Range("A1") = "Refusing" Then
        Range("B1:B4").Locked = True
    End If
End Sub

3。 プレス 他の + Q キーを同時に閉じて アプリケーション向け Microsoft Visual Basic 窓。

これ以降、セルA1に値「Accepting」を入力すると、範囲B1:B4のロックが解除されます。

セルA1に値「拒否」を入力すると、指定した範囲B1:B4が自動的にロックされます。


関連記事:


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (52)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
可変セルをロック/ロック解除するにはどうすればよいですか。たとえば、セルが[= INDEX(A16:L35、MATCH(W5、A16:A35,0)、MATCH( "PAY"、A16:L16,0))]の場合
このコメントは、サイトのモデレーターによって最小化されました
理解できない簡単なVBAコマンドが欲しいので助けてください
セルA1がBalnkの場合、セルA2はロックされ、セルA1に値が含まれている場合、セルA2のロックは解除されます。
同様に、セルA2が空白の場合、セルA3はロックされ、セルA2に値が含まれている場合、セルA3のロックは解除されます。
など、シートの任意の部分の要件に応じた数のセル。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はこれを達成しようとしていますが、シートが保護されている場合、VBAがRangeクラスのLockedプロパティを設定できないというエラーが発生します。 シートの保護を解除すると、ロックされているセルが無効になります。 これを回避する方法は? 助けてくれてありがとう。
このコメントは、サイトのモデレーターによって最小化されました
解決しましたか? 私も同じ問題を抱えてる
このコメントは、サイトのモデレーターによって最小化されました
親愛なるメモ、
以下のVBAコードをお試しください。

プライベートサブWorksheet_Activate()
ActiveSheet.ProtectContentsでない場合は
Range( "A1")。Locked = False
Range( "B1:B4")。Locked = False
終了する場合
End Subの
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xRg As Range、xRgAAsRangeを暗くします
エラーで次の再開
Application.EnableEvents = False
xRg = Range( "B1:B4")を設定します
xRgA = Range( "A1")を設定します
Intersect(Target、xRg).Address <>Target.Address_の場合
またはxRgA="Accepting" Then
application.enablevents = true
サブを終了
ElseIf ActiveSheet.ProtectContents _
そして、Intersect(Target、xRg)= Target _
そしてxRgA.Value="Refusing" Then
xRgA.Select
終了する場合
application.enablevents = true
End Subの
このコメントは、サイトのモデレーターによって最小化されました
ブックのインターフェイス行を使用すると、ファイルを開いたときにシートが保護されますが、マクロはとにかく変更を加えることができます。

Private Sub Workbook_Open()'これは「ThisWorkbook」に入ります

Worksheets( "Order Tool")。Protect Password:= "Pwd"、UserInterFaceOnly:= True

End Subの
このコメントは、サイトのモデレーターによって最小化されました
親愛なるアリ、
以下のVBAコードは、この問題を解決するのに役立ちます。 コメントありがとうございます。

プライベートサブWorksheet_Activate()
ActiveSheet.ProtectContentsでない場合は
Range( "A1")。Locked = False
Range( "B1:B4")。Locked = False
終了する場合
End Subの
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xRg As Range、xRgAAsRangeを暗くします
エラーで次の再開
Application.EnableEvents = False
xRg = Range( "B1:B4")を設定します
xRgA = Range( "A1")を設定します
Intersect(Target、xRg).Address <>Target.Address_の場合
またはxRgA="Accepting" Then
application.enablevents = true
サブを終了
ElseIf ActiveSheet.ProtectContents _
そして、Intersect(Target、xRg)= Target _
そしてxRgA.Value="Refusing" Then
xRgA.Select
終了する場合
application.enablevents = true
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

このVBAでセルのセットをロックしたり、これに基づいて別のセルのロックを解除したりすることは可能ですか? たとえば、範囲B1:B4がロック解除され、C1:C4が「承認」のためにロックされ、次にB1:B4がロックされ、C1:C4が「拒否」のためにロック解除されますか?


おかげで、
クリスチャン
このコメントは、サイトのモデレーターによって最小化されました
親愛なるクリスチャン、
ワークシートは保護されていますか?
このコメントは、サイトのモデレーターによって最小化されました
誰かが私に次のことを手伝ってくれませんか。
あるシートに生徒の写真を挿入したいのですが、名前に基づいて別のシートに表示されます
ユーザーを支援するためのナビゲーションプレーンを作成するには
特定のシートをユーザーに割り当てるには
ブックのインターフェイスを作成するには
ログインページを作成するには
このコメントは、サイトのモデレーターによって最小化されました
親愛なるレオ、
Excelについて質問がある場合は、遠慮なくフォーラムに投稿してください。 https://www.extendoffice.com/forum.html.
あなたは私たちのExcelの専門家からExcelについてのより多くのサポートを得るでしょう。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

私はあなたのコードを試し、少し編集しましたが、ここで何が間違っているのか理解できませんか?

プライベートサブワークシート_Change(ByValターゲットを範囲として)
If Range( "A40")<> "" Then
Range( "D40:E40")。Locked = False
ElseIf Range( "A40")= "" Then
Range( "D40:E40")。Locked = True
終了する場合
End Subの


私の考えでは、何も入っていない場合(A40)でした。 次に、VBAでロックしたいと思います。 A40に何かが含まれている場合は、ロックを解除したいと思います。 その感覚をご覧いただければ幸いです。


よろしくクリストファー
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
コードに問題はありません。 それは私にとってうまくいきます。
このコメントは、サイトのモデレーターによって最小化されました
やあ。 私もこのコードを機能させることができません。 それは絶対に何もしません。 まるでコードがそこにないかのように?? 私はVBAを初めて使用し、基本的な知識を持っています。 このコードはそのまま実行されていますか、それとも実行するために何かを追加する必要がありますか? または、マクロに変換されました(これは、指示の記録であるため、理由はわかりませんが、私の理解では)
このコメントは、サイトのモデレーターによって最小化されました
セルE1、E2、E3をロックしたい場合のコードはどうなりますか..............セルB1、B2、B3の特定のテキスト(「P」と言いましょう)... ..............それぞれ。

事前のおかげで
このコメントは、サイトのモデレーターによって最小化されました
グッドデイ
以下のVBAスクリプトを試してください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Count=1の場合Then
Target.Address = Range( "A1")。Address And Target.Value ="A"Thenの場合
Range( "B1")。Locked = True
ElseIf Target.Address = Range( "A2")。Address And Target.Value = "A" Then
Range( "B2")。Locked = True
ElseIf Target.Address = Range( "A3")。Address And Target.Value = "A" Then
Range( "B3")。Locked = True
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
良い一日!
Мне тоже необходимо заблокировать значение, но только в одной ячейке в зависимости от значения в другой, я попробовала использовать код в комментарии выше, но он не работает(оставила только один параметр для блокировки), но он у меня не работает - при этом нет сообщения об ошибке, ячейка, которая должна быть заблокирована - просто не блокируется, остается активной. В чем может быть причина?

あなたは、私たちのことを知っています:

プライベートサブワークシート_Change(ByValターゲットを範囲として)
If Target.Count=1 Then
If Target.Address = Range("C9").Address And Target.Value = "согласно плану" Then
Range("C10").Locked = True
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちはゴースト、
すみません、おっしゃっている意味がよくわかりません。 わかりやすくするために、データと目的の結果を含むサンプル ファイルまたはスクリーンショットを添付してください。
このコメントは、サイトのモデレーターによって最小化されました
やあ! アドバイスが必要です。
別のセルの条件を満たさない限り、セルの更新を許可しない方法はありますか?
サンプル:セルAが更新されていない場合、セルBの値を変更して完了することはできません。

フィードバックに感謝します。
ありがとうございます!
このコメントは、サイトのモデレーターによって最小化されました
親愛なるマージー、
以下のVBAコードをお試しください。

文字列としての薄暗いPreVal
文字列としてDimNextVal
プライベートサブWorksheet_Activate()
PreVal = Range( "A1")
NextVal = Range( "A1")
End Subの
プライベートサブワークシート_Change(ByValターゲットを範囲として)
If(Target.Count = 1)And(Target.Address = "$ A $ 1")Then
NextVal = Range( "A1")
終了する場合
End Subの
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Count=1の場合Then
Target.Address = "$ A$1"の場合Then
PreVal = Range( "A1")
ElseIf(Target.Address = "$ B $ 1")Then
PreVal=NextValの場合Then
Application.EnableEvents = False
Range( "A1")。Select
application.enablevents = true
終了する場合
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
誰かがこのplsを修正できますか>>>

プライベートサブワークシート_Change(ByValターゲットを範囲として)
私は= 7ため100へ
Range( "Cells(D、i)")= "Loan" Then
Range( "Cells(V、i):Cells(X、i)")。Locked = True
ElseIf Range( "Cells(D、i)")= "Savings" Then
Range( "Cells(Q、i):Cells(U、i)")。Locked = True
Range( "Cells(W、i):Cells(X、i)")。Locked = True
ElseIf Range( "Cells(D、i)")= "ShareCap" Then
Range( "Cells(Q、i):Cells(U、i)")。Locked = True
Range( "Cells(V、i)")。Locked = True
終了する場合
私は次の
End Subの
このコメントは、サイトのモデレーターによって最小化されました
やあ! 誰かが私を助けることができますか? セルをロック/フリーズする必要があります。 そのセルは別のセルにリンクされており、値はXNUMX分ごとに変化します。 私がすべきことは、特定の分/時間の間値を維持することです。 コピーして値として貼り付けずにそれを行うにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
親愛なるミラ、
申し訳ありませんがこれを助けることはできません、あなたは私たちのフォーラムにあなたの質問を投稿することができます: https://www.extendoffice.com/forum.html 私たちの専門家からより多くのExcelサポートを取得します。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
私はこれに本当に新しいです。
私は、請求書発行システムを優れたものにまとめようとしています。
3枚作成しました。
1.請求書テンプレート(請求書)-エージェントに毎週送信される一般的な請求書です。

2.正確なデータシート(データシート)-請求書は会社名の住所などを読み取ることができるため、何か変更があった場合、請求書は自動的に更新されます。

3.正確にはカレンダータブ(Calendar 2018)-請求書テンプレートで参照され、対応する日付と請求書番号を実際の請求書に記載します。

私がやりたいこと。
カレンダータブが私のメインページになり、「アクティブ」と「クローズ」のオプションを使用して、毎週のステータスドロップダウンセルを追加しました。 対応するセルが「クローズ」に設定されている場合、「請求書」タブ全体をロックしたいと思います。

私がやろうとしていることを皆さんが理解してくれることを願っています。
よろしくお願いします。
このコメントは、サイトのモデレーターによって最小化されました
親愛なる安藤ベレス。
以下のVBAコードが役立ちます。 カレンダー2018のシートコードウィンドウにコードを配置して、A1をドロップダウンセルに変更してください。 ありがとうございました。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRg
エラーで次の再開
xRg = Intersect(Target、Range( "A1"))を設定します
xRgが何もない場合は、Subを終了します
Target.Validation.Type>=0の場合Then
Target.Value="Closed"の場合Then
Sheets( "データシート").Protect
ElseIf xRg.Value = "Active" Then
Sheets( "データシート")。保護を解除する
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
エクセルテンプレートで倉庫在庫管理を準備します。在庫を配送するには、ゲートパスを発行する必要があります。各ゲートパスに対応するデータは、毎日の棚卸ページで更新されます。ゲートパスのシリアル番号の変更に伴い、行がロックされ、次がいっぱいになります。
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
ここにワークブックをアップロードできれば便利です。 コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
ここで何が悪いのか教えてもらえますか? 前もって感謝します。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Range( "K:K")="OVERSTOCK"の場合
Range( "S:S")。Locked = True
ElseIf Range( "K:K")= "SLOW MOVING" Then
Range( "S:S")。Locked = True
ElseIf Range( "K:K")= "NORMAL" Then
Range( "S:S")。Locked = False
ElseIf Range( "K:K")= "SHORTAGE" Then
Range( "S:S")。Locked = False
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
これを修正する方法について教えていただけますか? 前もって感謝します。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Range( "A:A")="SLOWMOVING"の場合
Range( "B:B")。Locked = True
ElseIf Range( "A:A")= "OVER STOCK" Then
Range( "B:B")。Locked = True
ElseIf Range( "A:A")= "NORMAL" Then
Range( "B:B")。Locked = False
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
VBの専門家ではないので、「Elseif」が多すぎると思います。最後のXNUMXつを除いて、すべてをIFに変更すると、うまくいくと思います。
基本的に、Xがこれを行う場合、Yがこれを行う場合、Zがこれを行う場合、それらのいずれもがない場合-これを行います。
このコメントは、サイトのモデレーターによって最小化されました
セルのブロック(行6、7、8 /文字DからU、およびセルF5とJ5)をロックし、セルE5に「X」を入れたときにロックを解除したい場合、コードはどのようになりますか? 前もって感謝します!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはMitchyII、
指定されたセルのブロックが事前に手動でロックされていて、セルE5に「X」を入力してロックを解除したいということですか?
セルE5から「X」を削除した場合、範囲を再度ロックしますか?
問題の詳細が必要です。
コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはミッチル(または誰でも)、クリスタルから構築します。 すべてのセルを手動でロックしましたが、G列の情報に基づいて、ロックしたままにするか、ロックを解除したいと思います。 列Hのセルの例は、「c/p」が列Gの前のセルに配置されている場合にのみロックを解除する必要があります
このコメントは、サイトのモデレーターによって最小化されました
セルが特定の値に達したときにセルをロックすることは可能ですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、うまくいかない理由を確認していただけますか?

プライベートサブワークシート_Change(ByValターゲットを範囲として)
If Range( "A3:A37")。Value <> "" Then
Range( "B3:B37")。Locked = True
ElseIf Range( "A3:A37")= "" Then
Range( "B3:B37")。Locked = False
終了する場合

If Range( "B3:B37")。Value <> "" Then
Range( "A3:A37")。Locked = True
ElseIf Range( "B3:B37")= "" Then
Range( "A3:A37")。Locked = False
終了する場合

End Subの


事前にどうもありがとうございました!!!
このコメントは、サイトのモデレーターによって最小化されました
Hi
上記のコードを使用してみました
使用しようとするとタイプ13エラーと表示されます。
これを手伝ってくれませんか。

ありがとうございました
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
どのExcelバージョンを使用していますか?
このコメントは、サイトのモデレーターによって最小化されました
hi

シート2(セルC4)からの要求に基づいて、シート1(セルC1)のセルをロックする必要がある場合、
シート1C4で「いいえ」の場合。 シート2はロックされている必要があり、シート1C4から値を転送する必要があります。
シート2C4へ。

シート1で「はい」の場合、シート2のセルに入力できる必要があります

ありがとうベンテ
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、VBAコードについて誰か助けてください。

セル範囲(A1:A1000)「abc」のドロップダウンから選択した場合、範囲(D1:D1000)を(F1:F1000)にロックしないでください



セル範囲(A1:A1000)「abc」のドロップダウンから選択した場合、範囲(D1:D1000)を(F1:F1000)にロックしないでください



セル範囲(A1:A1000)「abc」のドロップダウンから選択した場合、範囲(D1:D1000)を(F1:F1000)にロックします



つまり、D1からF1のそれぞれのセルA1



D2からF2のA2
このコメントは、サイトのモデレーターによって最小化されました
上からすべてをシートにコピーしました。 XNUMX秒間機能しましたが、「RangeクラスのLockedプロパティを設定できません」というエラーが発生します。 私はまったく新しいシートを開いて、あなたの例を逐語的にコピーしました。 何が起こっているのか考えていますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

私はあなたの好意が必要です。 セルから[いいえ]オプションを選択すると、下の列がロック/グレー表示されます。

それは可能ですか? 私はこの式を試しましたが、うまくいきません

プライベートサブワークシート_Change(ByValターゲットを範囲として)

Range( "D90")="Yes"の場合

Range( "C94:F104")。Locked = False

ElseIf Range( "D90")= "No" Then

Range( "C94:F104")。Locked = True

終了する場合

End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちはステフィ、
コードはうまく機能します。
編集を防ぐためにセルの範囲をロックする場合は、D90で[いいえ]オプションを選択した後、ワークシートを手動で保護する必要があります。
また、D90はC94:F104の範囲にあるため、ワークシートを保護した後は、D90も編集できません。
このコメントは、サイトのモデレーターによって最小化されました
D90は範囲内にありません。 C4の94行上です
ここにはまだコメントが投稿されていません
もっと読む

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護