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

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_Colors - Fatal编程技术网

Vba 如果将单元格设为左彩色,则将内容复制到此单元格中

Vba 如果将单元格设为左彩色,则将内容复制到此单元格中,vba,excel,colors,Vba,Excel,Colors,如果可以在没有VBA的情况下执行此操作,理论上的Excel语法就是这样的: 如果(左侧单元格=彩色(或填充),将内容复制并粘贴到此单元格中,将上面单元格的内容复制并粘贴到此单元格中 如何在VBA中实现这一点?您必须编写周围的代码,以便在要计算的单元格中循环,但关键是: If Range("A2").Interior.ColorIndex > xlNone Then Range("B2") = Range("A2").Value Else Range("B1") = Rang

如果可以在没有VBA的情况下执行此操作,理论上的Excel语法就是这样的:

如果(左侧单元格=彩色(或填充)将内容复制并粘贴到此单元格中,将上面单元格的内容复制并粘贴到此单元格中


如何在VBA中实现这一点?

您必须编写周围的代码,以便在要计算的单元格中循环,但关键是:

If Range("A2").Interior.ColorIndex > xlNone Then
    Range("B2") = Range("A2").Value
Else
    Range("B1") = Range("A2").Value
End If
循环可以是For循环,可能类似于:

For i = 2 to <whatever>
    If Range("A" & i).Interior.ColorIndex > xlNone Then
        Range("B" & i) = Range("A" & i).Value
    Else
        Range("B" & i - 1) = Range("A" & i).Value
    End If
Next i
对于i=2到
如果范围(“A”&i).Interior.ColorIndex>xlNone,则
范围(“B”和i)=范围(“A”和i).值
其他的
范围(“B”和i-1)=范围(“A”和i).值
如果结束
接下来我

您可以在VBA中使用自定义项:

Function Color(MyCell As Range)
If MyCell.Interior.ColorIndex > 0 Then
    Result = 1
Else
    Result = 0
End If
Color = Result
End Function
然后在B2中使用以下公式填充单元格:

=IF(color(A2)=1,A2,B1)

希望这对您有用。

作为自定义项输入单元格以评估填充:

Function CellColored(rng As Range) As Variant

    If rng.Interior.ColorIndex > xlNone Then
        CellColored = rng.Value2
    Else
        CellColored = Empty
    End If

End Function
作为没有输入的自定义项,假设条件单元格位于调用单元格的右侧:

Function CellColored() As Variant

    If Application.Caller.Offset(0, 1).Interior.ColorIndex > xlNone Then
        CellColored = Application.Caller.Offset(0, 1).Value2
    Else
        CellColored = Empty
    End If

End Function

然后,在第二个版本中,您可以将函数调用为
CellColored(A2)
CellColored()
。干杯,

在当前单元格上方的第一个单元格中,您想将值复制到哪个单元格中?如果您付出一些努力(即,您自己的代码),您会得到更好的响应。首先,谷歌搜索“VBA如何检查单元格颜色”,然后搜索“VBA复制并粘贴单元格内容”。如果太高级,请从“VBA如何设置循环”和“VBA If语句”开始。让它发挥作用,然后回来,我们看看能不能帮上忙。