1

マクロを使用してソリューションを実装しましたが、可能であれば削除したいと考えています。だからここで問題

セルの検証ルールを使用してドロップダウンを実装しました。同じシートの2番目のセルの値に応じて、そのセルを読み取り専用にしたい。

別の検証を使用してロックしようとしましたが、許可されません。

何か案が?

4

4 に答える 4

6

ユーザーが新しいデータを入力するのを防ぐには、Data Validation

編集:リストで数式を使用する

ケータリングの責任者のコメントのおかげで、データ検証/リストで数式を使用できることを覚えておく価値があります。

これが実際に動作していることを確認するには、別のスレッドに対する彼の回答を参照してください:https ://stackoverflow.com/a/11902463/138938

元の投稿

Excel 2007のチュートリアル:

  • リボン>データ>データ検証
  • 承認:パーソナライズ(または同様の、私のExcelは英語ではありません申し訳ありません)
  • 次の式をフィールドに入力します。
    • =IF(A1="",FALSE,TRUE)

したがって、A1がまだ空の場合、セルに値を入力することはできません。

于 2012-08-14T14:06:54.930 に答える
6

データ検証がセルA2にあり、チェックしている値がセルにあると想定していますA1

cell の値A1を「Blah Blah」に変更すると、コードが実行されて cell がロックされますA2。実際に実行する前に、コード内のコメントをよく読んでください。

コードは、ワークシートのコード領域に貼り付ける必要があります。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Cells.Count > 1 Then Exit Sub

    Application.EnableEvents = False

    Dim mypassword As String, StringToCheck As String

    On Error GoTo Whoa

    '~~> Change the password here to protect/unprotect the sheet
    mypassword = "password"

    '~~> Change it to the relevant string with which you want to compare
    StringToCheck = "Blah Blah"

    If Not Intersect(Target, Range("A1")) Is Nothing Then
        '~~> Check for the cell value
        If Target.Value = StringToCheck Then
            '~~> Un-Protect the sheet
            ActiveSheet.Unprotect mypassword

            '~~> Lock the cell
            Range("A2").Locked = True

            '~~> Re-Protect the sheet
            ActiveSheet.Protect mypassword
        End If
    End If

LetsContinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub
于 2012-08-14T13:41:44.153 に答える
2

動作するようになりましたが、実際に値を設定できるのは、ドロップダウンで動作する場合のみです

Name Manager を使用して名前testを値に設定しました=IF(Sheet1!$A$1=1,"",Sheet1!$E$1:$E$5)

これは、A1が 1 の場合A1は何も取得せず、それ以外の場合は E1:E5 を取得することを意味します。

次に、データ検証をに設定しList、ソースを使用して、テストがリストを返す=test
ときにのみ値を設定できます

これを行うと、A1 が 1 のときに、検証ドロップダウンに空のリストが表示され、値を変更できません。A1 が 1 でない場合、E1:E5 のリストを取得し、値を変更できます

于 2012-08-14T20:12:03.373 に答える