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 に答える