由于运行时错误“1004”,我正努力让下面的代码运行:应用程序定义或对象定义的错误。
通常当我遇到这个错误是由于纸张保护时,我已经确保纸张不受保护,因此在子纸张的开头就有了这条线。
我将在这里支付方案和最终目标:
Sheet1 =实时合约
此工作表包含一个包含6列和动态行数的表。 第1列包含合同参考编号。第2 - 6列与此无关。
工作表4 =合同总和
此表包含所有合同,相应部门和合同价值。
目标
创建一个可以通过userform按钮调用的模块。
模块需要查看sheet1的A列和每个单元格 - 如果有值 - 使用以下参数在G列中创建vlookup。
Lookup Value = Cell.offset(0, -6)
Table array = Sheet4.range("A3:C676")
Col_Index_Num = 1
FALSE - Exact match
模块需要对范围内的所有单元重复此过程。
现在我已经制作了:
Worksheets("Live Contracts").Unprotect
Dim rng As range
Dim lastrow As Long
Dim cell As range
Dim contractrange As range
'Find dynamic range
lastrow = Worksheets("Live Contracts").range("A" & Rows.Count).End(xlUp).Row
Set contractrange = Worksheets("Contract Sums").range("A3:C676")
Set rng = Worksheets("Live Contracts").range("A2:A" & lastrow)
For Each cell In rng
'If cell does not equal blank then for each cell in column A, offset to column G.
If cell.Value <> "" Then
'In column G, vlookup column A cell value in contractrange's column C, only return exact match
cell.Offset(0, 6).Value = Application.VLookup(cell.Offset(0, -6), contractrange, 1, False)
'In column H, vlookup column A cell value in contractrange's column A, only return exact match
cell.Offset(0, 7).Value = Application.VLookup(cell.Offset(0, -7), contractrange, 3, False)
End If
'Repeat for all cells in range
Next cell
End Sub
调试时突出显示以cell.offset开头的第一行
P.S我对VBA比较陌生,为代码不好道歉!答案 0 :(得分:1)
看起来您可能混淆了活动单元格的使用以及您在循环中使用的Cell
。 Cell
只会在完整循环迭代后发生变化。它不像活动单元格,在您选择不同的单元格后会发生变化。
因此,当您使用Cell.offset(0,6)
时,Cell
没有更改,因此您无需尝试在Vlookup中使用Cell.offset(0,-6)
取回。
请改为尝试:
For Each cell In rng
'If cell does not equal blank then for each cell in column A, offset to column G.
If cell.Value <> "" Then
'In column G, vlookup column A cell value in contractrange's column C, only return exact match
cell.Offset(0, 6).Value = Application.VLookup(cell, contractrange, 1, False)
'In column H, vlookup column A cell value in contractrange's column A, only return exact match
cell.Offset(0, 7).Value = Application.VLookup(cell, contractrange, 3, False)
End If
'Repeat for all cells in range
Next cell
End Sub