2013-01-18 83 views
0

以下是我的vba代碼,我將數據填充到單元格,我所要做的就是鎖定相同的單元格併爲這些單元格添加一些顏色。VBA:爲excel中的選定單元格鎖定和填充顏色

//VBA:- 
    ActiveWorkbook.Names("book.a.").RefersToRange = doc.getAttribute("a") 
    ActiveWorkbook.Names("book.b.").RefersToRange = doc.getAttribute("b") 
    ActiveWorkbook.Names("book.c.").RefersToRange = doc.getAttribute("c") 
    ActiveWorkbook.Names("book.d.").RefersToRange =doc.getAttribute("d") 

如何做到這一點?我必須做到更多的細胞。 你有什麼建議? 在此先感謝。

回答

1

有多少個單元格?它們是連續的嗎?如果是這樣,我們可以遍歷範圍而不是引用命名範圍。如果不是,我們需要以某種方式構建一個名稱的數組 - 他們都是以「book.a.」的形式嗎?

這是你想要的細胞之一什麼(你需要解鎖/修正細胞之前取消工作表,然後在完成時再次進行保護):

Dim strName As String, objName As Name, strID As String 

Sheet1.Unprotect 
For Each objName In ActiveWorkbook.Names 
    strName = objName.Name 
    If InStr(1, strName, "book", vbTextCompare) > 0 Then 
     strID = Mid(strName, InStr(1, strName, ".", vbTextCompare) + 1, 1) 
     With ActiveWorkbook.Names(strName).RefersToRange 
      .Value = doc.getAttribute(strID) 
      .Interior.Color = vbRed 
      .Locked = True 
     End With 
    End If 
Next 
Sheet1.Protect 
+0

:謝謝你的answer.yeah ,它們很多,不是連續的。所有這些都在一張紙上,而'book.a.'只是一個單元格的名稱。你對此有何建議? – user1495475

+0

我編輯了代碼,使其遍歷包含「book」的所有名稱,然後獲取.x。從名稱中檢索'doc.getAttribute(「x」)' – MattCrum