Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 如何将工作簿1中单元格的颜色反映到工作簿2中?_Vba_Excel - Fatal编程技术网

Vba 如何将工作簿1中单元格的颜色反映到工作簿2中?

Vba 如何将工作簿1中单元格的颜色反映到工作簿2中?,vba,excel,Vba,Excel,我有两本工作簿,其中工作簿1中有一个宏,根据项目的总体状态更新一个单元格的内部颜色 工作簿2是所有项目的摘要,我需要它反映工作簿1中该单元格的颜色 我对VBA还是相当陌生。。。我该怎么做呢 谢谢大家! Sub copyColorOfCell() Dim workbook1, workbook2 As Workbook Set workbook1 = Workbooks("workbookName1.xlsx") Set workbook2 = Workbooks("wo

我有两本工作簿,其中工作簿1中有一个宏,根据项目的总体状态更新一个单元格的内部颜色

工作簿2是所有项目的摘要,我需要它反映工作簿1中该单元格的颜色

我对VBA还是相当陌生。。。我该怎么做呢

谢谢大家!

Sub copyColorOfCell()

    Dim workbook1, workbook2 As Workbook
    Set workbook1 = Workbooks("workbookName1.xlsx")
    Set workbook2 = Workbooks("workbookName2.xlsx")

    Dim worksheet1, worksheet2 As Worksheet
    Set worksheet1 = workbook1.Sheets("worksheetName")
    Set worksheet2 = workbook2.Sheets("worksheetName")

    Dim cell1, cell2 As Range
    Set cell1 = worksheet1.Range("A1")
    Set cell2 = worksheet2.Range("A1")

    cell2.Interior.Color = cell1.Interior.Color

End Sub

替换工作簿和工作表名称(也可以使用索引)并指定所需的单元格。

请注意,您已将
workbook1
worksheet1
声明为
Variant
。要将它们分别声明为
工作簿
工作表
,您需要使用
将工作簿1设置为工作簿,将工作簿2设置为工作簿
将工作表1设置为工作表,将工作表2设置为工作表
。您是对的,我忘记了这一点。请您澄清将它们作为变体的含义是什么?我对在不需要它们时使用
变体的主要抱怨是,它有时会隐藏代码的问题,从而使调试变得困难。有点像没有显式的
选项
——它允许发生您不期望的事情。以下面的语句为例:
Dim v,r as Range
Set r=Range(“A1”)
Set v=Range(“A1”)
Debug.Print r.Address
Debug.Print v.Address
-这一切都很好-但将
Set v=Range(“A1”)
更改为
v=Range(“A1”)
并且它不会崩溃,直到您尝试访问
Debug.Print
行中的
Address
属性。