2016-03-07 68 views
0

我的问题是,我试图使一个细胞不能由用户编辑的输入例如发出后我想让从细胞C22-C28那么用户输入一些用户输入的单元格后,即特定的细胞不能进行编辑。这应该是最好的解决方案?有什么建议么?如何使一个特定的细胞在Excel中不可编辑

回答

0

看看这个问题 How to Lock the data in a cell in excel using vba

其中多个漂亮的答案。在基本的,您需​​要将范围设置为.locked,然后通过.protect的保护片,为更多的开发信息尝试看看MSDN

编辑:所以你可以用这个作为这个问题(Restricting the user to delete the cell contents

提到没有锁定和解锁,你可以使用这个。我们有一个全局变量来存储选择值(保存之前更改状态)。功能SelectionChange,更新当前单元格的值,以便用户尝试后恢复单元格值。

子worksheet_change只是controling,如果用户针对指定的行和列(可以为整个范围内调整),如果他试图改变的价值,他被提示和值重新设置。

Dim prevValue As Variant 

Private Sub worksheet_SelectionChange(ByVal target As Range) 

    prevValue = target.Value 

End Sub 

Private Sub worksheet_change(ByVal target As Range) 



    If target.Row = 5 And target.Column = 5 Then 

     If target.Value <> prevValue Then 
      target.Value = prevValue 


      MsgBox "You are not allowed to edit!", vbCritical + vbOKOnly 

     End If 

    End If 


End Sub 
+0

我很欣赏你的建议@Lubos淑。嗯其实我想问问是否有可能对我来说,不要让用户编辑和删除特定的细胞,而不使用** ** PROTECT关键字或没有把密码给细胞。例如它只是弹出一些'MsgBox'表示“你不允许编辑单元格!”。任何想法? – kendj

0

也许你可以试试下面的代码:

Option Explicit 
Public OriginalCell As Range 
Public ProtectedCell As Range 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim ws As Worksheet 
Dim lastRow As Long 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

lastRow = Cells(Rows.Count, 3).End(xlUp).Row + 1 

If Not Intersect(Target, Range("C1:D" & ws.Range("C" & ws.Rows.Count).End(xlUp).Row)) Is Nothing Then 
Application.ScreenUpdating = False 
Set ProtectedCell = Target 
MsgBox "Access Denied", vbExclamation, "Access Status" 
Cells(lastRow, 3).Select 
Application.ScreenUpdating = True 

End If 

希望这将有助于解决您的问题。