0

我有一个名为的单元格,DATA_FIELD_NAME我想通过以下方式使用它:

Private Sub LockCells(iNumberOfDataColumns As Long)
  ActiveSheet.Unprotect
  ActiveSheet.Cells.Locked = False
  ActiveSheet.Range("DATA_FIELD_NAME:DATA_FIELD_NAME+iNumberOfDataColumns").Locked = True
  ActiveSheet.Protect Contents:=True
End Sub

本质上,我想锁定从DATA_FIELD_NAME单元格开始水平到DATA_FIELD_NAME + n.

但是,这不起作用。有人可以告诉我正确的语法或替代方法吗?

4

2 回答 2

2

我会试试这个:

ActiveSheet.Range("DATA_FIELD_NAME").Resize(1, iNumberOfDataColumns).Locked = True

这是Range.Resize 的参考,基本上它会根据当前范围更改您正在处理的单元格数量。在我给你的内容中,它变为 1 行和 iNumberOfDataColumns 列。

于 2012-10-19T15:15:40.447 回答
1

我只是在 SO 中写了这个,没有在 XL 中测试,所以它可能包含拼写错误,但这应该有效:

With ActiveSheet
   Range(.Range("DATA_FIELD_NAME"), .Range("DATA_FIELD_NAME").Offset(0,iNumberOfDataColumns)
End With

这个想法是结合Offset(rows, cols)使用Range(range1, range2)语法。
或者,您可以是此处解释的动态范围名称。

于 2012-10-19T15:31:00.913 回答