Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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,我得到下面代码的错误 对象“\u工作表”的方法“范围”失败 有人能看到这里有什么问题吗 Dim to_do As Worksheet, ordered As Worksheet Set to_do = Sheets("To do log") Set ordered = Sheets("Working File") to_do.Range(G4).Formula = _ Application.WorksheetFunction.Index(ordered.Range("F:F"), _

我得到下面代码的错误

对象“\u工作表”的方法“范围”失败

有人能看到这里有什么问题吗

Dim to_do As Worksheet, ordered As Worksheet
Set to_do = Sheets("To do log")
Set ordered = Sheets("Working File")

to_do.Range(G4).Formula = _ 
   Application.WorksheetFunction.Index(ordered.Range("F:F"), _
   Application.Match(to_do.Range("B4"), ordered.Range("B:B"), 0))
to_do.RangeG4不是有效的定义。这应该是你要做的@A.S.H.正确地指出,如果您在代码表顶部使用Option Explicit,则第一次运行代码时,VBA将突出显示错误


我建议您使用Value属性将值指定给,除非它是您希望指定的公式,但您的代码会指定一个值,因为INDEX函数返回的范围的Value属性是默认值。如果需要公式,则必须指定它

给定工作表名称,您可以快速解决问题,因此不需要在代码中声明它们。 您打算在单元格中打印公式,因此也可以使用公式1C1。 我对您的问题的解决方案是:

要进行更改,请在工作表中单击转到VBA项目,并在属性名称中为其指定名称

您使用此代码解决了什么问题:

您不必担心工作表是否更改了名称 如果更改计划的名称,可以更快地编写代码 你不必每次都申报工作表
to_do.RangeG4不是有效的定义。它应该是` to_do.RangeG4,我建议您使用Value属性,除非它是您希望指定的公式,但是您的代码将值defaultto_do.RangeG4.formula=,不要忘记双引号。如果你设置了选项显式…@Variatus我想你应该加上它作为回答谢谢你,@Shai Rado。A.S.H.也没有:——@Variatus LOL这是关于谁是第一个,这是关于在这里有一个答案,当将来有人搜索这个主题并寻找答案时,他会在这里用V标记和一些上升投票,然后他会知道他得到了一个可靠的答案
wsTodo.Range("G4").FormulaR1C1 = "=INDEX('" & wsWorkingFile.Name & "'!C6,MATCH(R4C2,'" & wsWorkingFile.Name & "'!C2))"