Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 如果选择了多个单元格,则引用的单元格将变为黑色_Vba_Excel - Fatal编程技术网

Vba 如果选择了多个单元格,则引用的单元格将变为黑色

Vba 如果选择了多个单元格,则引用的单元格将变为黑色,vba,excel,Vba,Excel,我有这些表Sheet1,还有一张是Sheet2 Sheet1从Sheet2获取其值(包括单元格的颜色) 我使用此代码块检查Sheet2中的活动单元格颜色,然后更改Sheet1中相同单元格的颜色 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Interior.Color = 5296274 Then Worksheets("ALL BRANDS").Range(Target.Address(False, Fals

我有这些表
Sheet1
,还有一张是
Sheet2

Sheet1
Sheet2
获取其值(包括单元格的颜色)

我使用此代码块检查
Sheet2
中的活动单元格颜色,然后更改
Sheet1
中相同单元格的颜色

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Interior.Color = 5296274 Then
    Worksheets("ALL BRANDS").Range(Target.Address(False, False)).Interior.Color = 5296274
Else
    Worksheets("ALL BRANDS").Range(Target.Address(False, False)).Interior.Color = ActiveSheet.Range(Target.Address(False, False)).Interior.Color
End If 
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.Color = 5296274 Then
    Worksheets("ALL BRANDS").Range(Target.Address(False, False)).Interior.Color = 5296274
Else
    Worksheets("ALL BRANDS").Range(Target.Address(False, False)).Interior.Color = ActiveSheet.Range(Target.Address(False, False)).Interior.Color
End If
End Sub
问题是当我在
Sheet2

它将
Sheet1
中引用的单元格着色为

您需要分别收集每个单元格的
Interior.Color
属性

范围
对象由多个单元格组成时,一些属性(如
公式
)将返回一个值数组。许多属性,包括
Interior.Color
,都不会更改。在
Interior.Color
的情况下,如果该范围内的所有单元格都具有相同的背景色,您将获得正确的值。即使一个单元格的颜色不同,该属性也无法给出一个正确答案,只返回0(黑色)

作为旁注,您的If语句没有像编写的那样做任何有用的事情。我假设您想要复制以下样本的任何颜色。如果你只想复制那种绿色,保留你的If,但去掉Else

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim c As Range
  With Worksheets("ALL BRANDS")
    For Each c In Target
      .Range(c.Address).Interior.Color = c.Interior.Color
    Next c
  End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim c As Range
  With Worksheets("ALL BRANDS")
    For Each c In Target
      .Range(c.Address).Interior.Color = c.Interior.Color
    Next c
  End With
End Sub

实际上,您应该将代码移动到函数中,并从每个事件调用它,而不是在多个位置重写和维护代码

Range.Interior.Color
不返回数组。。。虽然您可以为多个单元格写入,但如果不是所有单元格都具有相同的颜色,则读取将失败…+1谢谢!至于其他的,我试着将“所有品牌”的单元格设置为当前表格的单元格嗯-这是我对问题的原始答案,但OP说它不起作用-说它仍然将所有内容设置为黑色。哦,好吧,只要现在对他们有效。