2012-10-19 80 views
0

我有一個名爲DATA_FIELD_NAME細胞,我想用它的方式如下:在EXCEL執行命名的單元格添加VBA

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

但是這不起作用。有人能告訴我正確的語法或替代方法嗎?

回答

2

我想試試這個:

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

這裏是一個reference on Range.Resize基本上,它改變了你正在處理基於當前單元格範圍的量。在我給你的內容中,它更改爲1行和iNumberOfDataColumns列。

+0

這工作完美..請你解釋爲什麼它的工作原理和'調整大小'如何工作?謝謝! – czchlong

+0

添加了參考和簡要說明。 –

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)語法。
或者,您可以將動態範圍名稱解釋爲here

+0

+1作爲有效的選擇。另外,你的鏈接很有趣。 –

相關問題