列のあるスプレッドシートがあります(たとえば列A)。この列には、さまざまなスコアを持つユーザーが入力するという考え方です。ユーザーが列Aの回答に満足したら、回答が正しいことを確認してもらいます(理想的には、ボタンをクリックします)。そのボタンがクリックされたら、VBAを使用して列Aが再度編集されないように保護します。一部のセルをロックして編集可能にする必要があるスプレッドシートに追加のデータがあるため、ワークシートの保護オプションは使用しません(データ検証リストを使用します)。
私はVBAのこのビットを見つけましたが、これはワークシートの変更に基づいています-どういうわけかこれを使用できても、ユーザーがデータが設定されていることを確認した後にのみアクティブにすることができれば、それは理想的です:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range("A2:A14")) Is Nothing Then Exit Sub
Application.EnableEvents = False
MsgBox "Hey, leave me alone!", 48, "Sorry, I'm protected."
Application.Undo
Application.EnableEvents = True
End Sub