Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:锁定和更改excel单元格的颜色_Vba_Excel_Ms Word - Fatal编程技术网

VBA:锁定和更改excel单元格的颜色

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

下面是我的vba代码,我试图获取数据并将其分配给一个单元格。现在,我需要做的就是在填充后锁定这些单元格。有很多单元格我必须这样做,我得到的是“qa”部分在我必须填写的所有单元格名称中都是相同的。因此我必须检查“qa”是否是单元格名称的一部分,如果是,则锁定整个单元格并更改颜色

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)
。。但是我不知道为什么你要在没有数据的情况下给电池上色。。。就因为名字匹配?