VBA:锁定和更改excel单元格的颜色
下面是我的vba代码,我试图获取数据并将其分配给一个单元格。现在,我需要做的就是在填充后锁定这些单元格。有很多单元格我必须这样做,我得到的是“qa”部分在我必须填写的所有单元格名称中都是相同的。因此我必须检查“qa”是否是单元格名称的一部分,如果是,则锁定整个单元格并更改颜色VBA:锁定和更改excel单元格的颜色,vba,excel,ms-word,Vba,Excel,Ms Word,下面是我的vba代码,我试图获取数据并将其分配给一个单元格。现在,我需要做的就是在填充后锁定这些单元格。有很多单元格我必须这样做,我得到的是“qa”部分在我必须填写的所有单元格名称中都是相同的。因此我必须检查“qa”是否是单元格名称的一部分,如果是,则锁定整个单元格并更改颜色 ActiveWorkbook.Names("Book.aa.a.qa.qq.le.").RefersToRange = Doc.getAttribute("le") ActiveWorkbook.Names("Book.b
ActiveWorkbook.Names("Book.aa.a.qa.qq.le.").RefersToRange = Doc.getAttribute("le")
ActiveWorkbook.Names("Book.bb.a.qa.qq.lf.").RefersToRange = Doc.getAttribute("lf")
ActiveWorkbook.Names("Book.cc.a.qa.qq.lg.").RefersToRange = Doc.getAttribute("lg")
ActiveWorkbook.Names("Book.dd.a.qa.qq.ll.").RefersToRange = Doc.getAttribute("ll")
如何做到这一点?
请为此建议一个函数。
提前谢谢。我注意到你之前问过几乎类似的问题。这里唯一不同的是,您特别询问的名称是否包含
qa
,您现在可以使用该答案中给定的详细信息修复该问题。无论如何,这里我使用Like
操作符对IF
执行相同代码的检查
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)
'--change here
If strName Like "*qa*" Then
.Interior.Color = vbRed
.Locked = True
End If
End With
End If
Next
Sheet1.Protect
大约有多少个单元格?30个单元格…但我有其他与这些单元格不同的相同excel表格。
Approx
表示在任何表格中可以得到的最大单元格数?我指的是上限:)@bonCodigo:那么是50。谢谢你的回答。它起作用了。但是你没有提到过最大电池(50个)。你为什么问我这个问题?有没有办法检查所选单元格是否在上述范围内????比如如果InStr(1,strName,“book”,vbTextCompare)>0和range()??对于您的第一条评论:我不太喜欢遍历单元格,除非确实需要。有另一种方法可以做到这一点,但我相信这对50个细胞来说是可以的。。假设在50行之前您只有命名范围。。...左右第二条评论:在哪个范围内?在整个细胞范围内?你能再澄清一点吗?是的…在范围内(B1:I35)…这个范围内包含了标题,这就是为什么我必须给那些特定的单元格添加颜色。你不需要,我已经包含了它,因为它是你正在处理的主代码。。。您可以轻松删除整个部分strID=Mid(strName,InStr(1,strName,“.”,vbTextCompare)+1,1)
和。Value=doc.getAttribute(strID)
。。但是我不知道为什么你要在没有数据的情况下给电池上色。。。就因为名字匹配?