Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 VBA与特定单元格的偏移量_Excel_Vba - Fatal编程技术网

Excel VBA与特定单元格的偏移量

Excel VBA与特定单元格的偏移量,excel,vba,Excel,Vba,我有超过200个工作表在一个给定的工作簿,并试图得到一些基于给定日期的价格。我试图使用Find方法搜索每张表中的A列(除了汇总表),以查找给定的日期,然后偏移4列以获得适当的价格。代码在fr=r.Offset(0,4).Value上失败,并给出对象变量或未设置块变量的错误。我曾尝试过调整代码和其他一些方法,但不断出现类似的错误 Sub fill() ActiveWorkbook.Worksheets("Summary").Activate Dim From_Date As

我有超过200个工作表在一个给定的工作簿,并试图得到一些基于给定日期的价格。我试图使用Find方法搜索每张表中的A列(除了汇总表),以查找给定的日期,然后偏移4列以获得适当的价格。代码在
fr=r.Offset(0,4).Value
上失败,并给出对象变量或未设置块变量的错误。我曾尝试过调整代码和其他一些方法,但不断出现类似的错误

Sub fill()
ActiveWorkbook.Worksheets("Summary").Activate

Dim From_Date As Variant
Dim To_Date As Variant

 From_Date = Range("A2").Value
 To_Date = Range("A1").Value

Dim rng As Worksheet
Dim fr As Variant
Dim tr As Variant
Dim pct As Variant
Dim r As Range

For Each rng In ActiveWorkbook.Worksheets
    If rng.Name <> "Summary" Then
        rng.Activate
        Set r = Range("A:A").Find(To_Date)
        fr = r.Offset(0, 4).Value
        
    End If
    

Next rng
End Sub
Sub-fill()
活动工作簿。工作表(“摘要”)。激活
从日期变为变量的Dim
Dim到_日期作为变量
起始日期=范围(“A2”)。值
截止日期=范围(“A1”)。值
Dim rng As工作表
作为变体的Dim-fr
Dim tr作为变体
Dim pct作为变体
调光范围
对于ActiveWorkbook.工作表中的每个rng
如果名称为“摘要”,则
启动
设置r=范围(“A:A”)。查找(截止日期)
fr=r.偏移量(0,4).值
如果结束
下一个rng
端接头

您需要检查
Find()
方法的结果,如下所述:

Set r = Range("A:A").Find(To_Date)
If Not (r Is Nothing) Then
  fr = r.Offset(0, 4).Value
  ...
End If

(请勿使用
fr
,如果
r
为空,它可能仍然包含上一个循环的结果)

当Fing方法未找到任何内容时,它将返回
Nothing
。因此,您需要使用
捕捉这种情况,如果r不是零,那么fr=r.Offset(0,4)。。。如果