【发布时间】:2020-01-26 03:02:57
【问题描述】:
基本上,我有一个工作簿,它可以从一个工作表中导入值,然后允许您选择一些、添加额外数据、然后传输所选项目、您添加的值以及包含在其值被拉出的工作表中的其他信息从最初到另一个工作簿。我需要能够将初始工作表中的值与另一张工作表中的相应信息(在同一个工作簿中)相匹配,以便我可以从两者中获取数据并将它们循环输入。我担心我不能嵌套当他们都在同一个工作簿中指定工作表时,我的 Withs 因为我不断收到错误 91(对象变量或未设置块变量)。这是真的吗?
Dim RMs As Worksheet
Dim FLF As Worksheet
Set RMs = Workbooks("FLF Coding Trials.xlsm").Worksheets("Program")
Set FLF = Workbooks("FLF Template.xlsx").Worksheets("FLF Sheet")
Dim lng As Long
Dim cnt As Long
Dim check As Long
Dim length As Long
Dim namecheck As Range
Dim vencheck As Range
With ThisWorkbook.Sheets("Program")
lng = Me.Cells(.Rows.Count, "N").End(xlUp).Row
For cnt = 1 To lng - 1 Step 1
'The two below lines work reliably
FLF.Range("B" & cnt + 23).Value = Me.Range("N" & cnt + 1).Value
FLF.Range("N" & cnt + 23).Value = Me.Range("P" & cnt + 1).Value
'Adding the following variable designations and the With gives me the error. If I change the below two variables to strings I get a compile error
namecheck.Value = Range("N" & cnt + 1).Value
vencheck.Value = Range("P" & cnt + 1).Value
With ThisWorkbook.Sheets("Names and Vendors")
length = Me.Cells(.Rows.Count, "B").End(xlUp).Row
check = ThisWorkbook.Sheets("Names and Vendors").Evaluate("MATCH(1,(B1:B" & length & "=""" & namecheck.Value & """)*(C1:C" & length & "=""" & vencheck.Value & """),0)")
'more commands will go here
End With
Next cnt
End With
【问题讨论】:
-
既然您实际上并没有使用第二个
With(用于“名称和供应商”的那个),为什么不直接删除它呢? -
我会的。我将在那里放置一个循环来循环其中包含的所有额外数据,如“更多命令将转到此处”注释所指定的那样。
-
是的,您可以嵌套 With 块,但只能有一个作用域 - 这将是最接近的
With的作用域 -
抱歉,您能详细说明一下吗?我假设 With 中包含的任何内容都只能通过 End With 命令或通过在其中嵌套另一个 With 来完成(正如我在这里尝试的那样)。
-
我正在尝试复制错误 91。上面的代码是在 Trials、Template 还是其他地方?它是在工作表模块还是类模块中?上面的代码是如何执行的?上面的代码是在 Sub 还是 Function 中?为了确定哪一行代码失败了。
标签: excel vba nested with-statement