Excel VBA:将表格单元格设置为只读

3

是否可以将表格中的特定单元格设置为“只读”? 或者,将表格中的某一列设置为“只读”? 这是我尝试做的事情的想法:

Sub TableInsertRow()
    Dim oLo As ListObject
    Dim oNewRow As ListRow

    Set oLo = ActiveSheet.ListObjects("Table1")

    oLo.TableStyle = "tablestylelight3"
   'insert below

    Set oNewRow = oLo.ListRows.Add(AlwaysInsert:=True)

    oNewRow.Range.Cells(1, 1).Value = "Value For New cell"
    oNewRow.Range.Cells(1, 5).ReadOnly = True
    oNewRow.Range.Cells(1, 6).ReadOnly = True
    oNewRow.Range.Cells(1, 7).ReadOnly = True

End Sub

最后三行显然不是正确的语法,而是我试图实现的想法。 或者,如果表格的列可以设置为只读,那也可以。 Rich

1
你需要先锁定单元格,然后再保护工作表。请参考此链接:https://msdn.microsoft.com/zh-cn/library/office/ff836172.aspx?f=255&MSPPError=-2147217396 - Scott Craner
2
工作表中的所有单元格默认都是“锁定”的。实际上锁定它们所需的仅是保护工作表。如果您不想锁定某些单元格,则请在保护工作表之前将它们解锁。选择单元格,[ctrl] + 1,保护。 - user4039065
我知道你可以像你描述的那样对工作表进行操作,但我只想针对表格中的特定单元格进行操作,由于VBA会添加行,因此我希望只对表格中的这些特定单元格进行操作。 是否可以将这些单元格设置为“非活动”而不是只读?然后它们将被“灰显”,无法输入? - rtemen
2
然后您将解锁所有单元格,每添加一个单元格就锁定它并保护工作表。 - Scott Craner
@rtemen 你好!你尝试过下面的解决方案了吗? - gofr1
1个回答

1
你可以使用这个基本脚本使一些单元格变为只读:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(ActiveCell, Range("A2:B4")) Is Nothing Then 'We make A2:B4 range readonly
Range("A1").Select 'when user selects some cell from the range above
MsgBox ("These cells are Readonly,So you can not Change") 'He will receive this massage
End If
End Sub

只需打开VB编辑器 (ALT + F11),选择您想要将单元格设置为只读的工作表 - 双击,粘贴此代码。

很久以前从这里获取


1
谢谢,非常简单和有用。 - bahamut100

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接