【问题标题】:Nested Do While嵌套做而
【发布时间】:2018-03-16 15:59:19
【问题描述】:

我正在尝试运行执行以下操作的代码:

1) 查找索引号匹配的记录

2) 在找到匹配的行中,检查条件

3)如果条件满足,则记录存储在同一行内的列中的索引号作为新变量

4) 查找与从 3) 存储的匹配索引号的记录

5) 评估记录的行的条件

6) 如果满足条件,那么我想从 i = 0 开始填充数据,直到找不到更多匹配项

7) 检查从 4) 开始的循环中的下一个匹配项

8) 如果在 4) 中没有找到更多匹配项,则重复 1) 中开始的循环

我之前制作了 VBA,它基本上可以评估 4) 到 7),这是可行的。试图从本质上将循环嵌套在自身内部是我的错误开始的地方。

这是我要运行的代码:

i = 0
With Worksheets(ReferenceSheet).Range("A1:A" & endrow)
Set c = .Find(CIFNumber, LookIn:=xlValues)

If Not c Is Nothing Then
firstaddress = c.Address

Do
' e = Worksheets(ReferenceSheet).Range("B" & .FindPrevious(c).Row)
  j = CStr(c.Row)
  CIFRelationshipType = Worksheets(ReferenceSheet).Cells(j, "G").Value
  GCIFNumber = Worksheets(ReferenceSheet).Cells(j, "E").Value
If CIFRelationshipType = "G" Then

        Set b = .Find(GCIFNumber, LookIn:=xlValues)
        If Not b Is Nothing Then
        firstbaddress = b.Address
        Do
    matchedj = CStr(b.Row)
    GCIFRelationshipType = Worksheets(ReferenceSheet).Cells(matchedj, "G").Value
If GCIFRelationshipType = "P" Then

i = i + 1
'determine which input loop we are on then populate accordingly.

在此处为每个 i 填充数据

End If
    Set b = .FindNext(b)
If b Is Nothing Then
End If
Loop While b.Address <> firstbadress
End If

End If
  Set c = .FindNext(c)
If c Is Nothing Then
End If

在这里,我明白了

错误 91“对象变量或未设置块变量”

Loop While c.Address <> firstaddress
End If
End With

【问题讨论】:

  • 如果有人走到你面前问“为什么会这样”,你的第一个想法是什么是“这个”和“那个”。所以说你有错误,但实际上并没有告诉任何人它们是什么,这与为什么会这样是一样的。提供您的期望、正在发生的事情以及任何错误的详细信息。
  • 对此感到抱歉....编辑帖子以添加有关我遇到错误的位置的更多详细信息。

标签: vba loops do-while


【解决方案1】:

你检查了 c 是否有一个对象: '如果 c 什么都不是' 你结束了你的陈述 '万一' 然后你把'c'对象放在循环条件中 '循环当 c.Address firstaddres' 如果在那一刻,'c' 对象什么都不是,它会报错

你提到的错误发生在每次对象变量什么都不是或者你忘记使用'with'子句时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2013-04-09
    相关资源
    最近更新 更多