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
Excel 记录的自动填充宏错误:公式中使用的值的数据类型错误_Excel_Vba - Fatal编程技术网

Excel 记录的自动填充宏错误:公式中使用的值的数据类型错误

Excel 记录的自动填充宏错误:公式中使用的值的数据类型错误,excel,vba,Excel,Vba,我有一个函数,它根据指定单元格的颜色给出一个值 Function CheckColor1(range) If range.Interior.Color = RGB(189, 215, 238) Then CheckColor1 = "R" ElseIf range.Interior.Color = RGB(255, 230, 153) Then CheckColor1 = "C" End If End Function 在L1中,我已=选中Color1A1,并填写所有行。它给出

我有一个函数,它根据指定单元格的颜色给出一个值

Function CheckColor1(range)
If range.Interior.Color = RGB(189, 215, 238) Then
    CheckColor1 = "R"
ElseIf range.Interior.Color = RGB(255, 230, 153) Then
    CheckColor1 = "C"
End If
End Function
在L1中,我已=选中Color1A1,并填写所有行。它给出了每行对应的R和C

然后,在M1中,在其旁边使用an=L1,再次填充,复制>粘贴值。我尝试直接在L列上复制>粘贴值,但不起作用

我录了这个。这给了我:

range("L1").Select
ActiveCell.FormulaR1C1 = "=CheckColor1(RC[-11])"
range("L1").Select
Selection.AutoFill Destination:=range("L1:L102")
range("L1:L102").Select
range("M1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
range("M1").Select
Selection.AutoFill Destination:=range("M1:M102")
range("M1:M102").Select
然而,当我运行宏时,我在L1中正确地得到了第一个值,但随后所有下面的值都得到了一个值错误。表示公式中使用的值的数据类型错误

列为常规格式。

避免使用。选择您可能想要查看的

所有这些代码都可以用两行代码编写

range("L1:L102").Formula = "=CheckColor1(A1)"
range("M1:M102").Formula = "=L1"
请用这两行代码替换代码,然后重试。这次会有用的

编辑

其目的不是使用.Autofill,而是一次性输入完整范围内的公式

如果列L和M是固定的,并且行可能每次都会更改,那么找到列L的最后一行并将其合并到代码中。看到这个了吗

Dim lRow As Long

With Worksheet("Orders")
    lRow = .Range("L" & .Rows.Count).End(xlUp).Row

    .Range("L1:L" & lRow).Formula = "=CheckColor1(A1)"
    .Range("M1:M" & lRow).Formula = "=L1"
End With

您好,谢谢您的快速回复。对不起,我可能应该把这个放在原来的问题里。我用于L和M的范围每次都会变化,要么变小,要么变大。我一直在用这个替换自动填充代码。。。ActiveCell.Offset0,-1.Select Selection.EndxlDown.Select ActiveCell.Offset0,1.Select rangeSelection,Selection.EndxlUp.Select Selection.FillDown,但在我将其更改为该值之前,错误已经发生。我已经更新了上面的帖子。你可能需要刷新我,再次感谢。对不起,我在这方面不是很有经验!存储在一个变量中已经超出了我的想象。工作表是一张订单表,因此范围每天都在变化,因此我需要公式中的范围可以是L1:L102、L1:L80或L1:L600,与M列相同。始终会有相同数量的列。所以为了让我哑口无言,我需要放什么进去,放在哪里?再次感谢你!如果行从1:102更改为1:80,则只需将Rw1=1:Rw2=102更改为Rw1=1:Rw2=80;如果列更改,则修改Col1=L:Col2=MIf。如果您不确定最后一行是什么,请参阅有关如何通过代码查找该行的链接