当工作表2中的单元格满足条件(Excel和VBA)时,更新工作表1



使用VBA,当一个单元格值满足给定给另一个图纸单元格的条件时,我将尝试更新该单元格值。到目前为止,它给了我一个"错误5-无效的过程调用或参数"。

如果没有这个"IF-Then",它运行得很好。现在,我想改进我的过程,当表"t-Bestellijst"中列"VERZONDEN"中的单元格具有值"J"时,只更新表"t_Magazijnvoorraad"中的cell1。

Dim rng1, rng2, cell1, cell2 As Range
Dim lastRow1 As Long
lastRow1 = Range("t_Magazijnvoorraad[PRODUCTCODE]").End(xlUp).Row
Set rng1 = Range("t_Magazijnvoorraad[PRODUCTCODE]")
Dim lastRow2 As Long
lastRow2 = Range("t_Bestellijst[PRODUCTCODEKOPIE]").End(xlUp).Row
Set rng2 = Range("t_Bestellijst[PRODUCTCODEKOPIE]")
If Cells("t_Bestellijst[VERZONDEN]") = "j" Then
For Each cell1 In rng1
If IsEmpty(cell1.Value) Then Exit For
For Each cell2 In rng2
If IsEmpty(cell2.Value) Then Exit For
If cell1 = cell2 Then
cell1.Offset(0, 5) = cell1.Offset(0, 5) - cell2.Offset(0, 1)
End If
Next cell2
Next cell1
Else: End If

错误发生在:

If Cells("t_Bestellijst[VERZONDEN]") = "j" Then

Cells接受两个参数;表示行和列序号的数字。

Range可以采用一个字符串,表示xlA1样式的单元格/范围引用或列表对象结构化的表引用,就像您正在使用的那样。

不幸的是,简单地更改为Range("t_Bestellijst[VERZONDEN]")并不能解决您的问题,因为这似乎是一个表的整列,您不能将整列的值与单个字母进行比较,也不能期望任何可靠的逻辑布尔比较。不能将一列值与单个值进行比较;您可能需要循环遍历它们,并将列中的每个单元格与单个值进行比较。

'this isn't going to work
If Range("t_Bestellijst[VERZONDEN]") = "j" Then
'do something
end if
'but this might
dim r as range
for each r in Range("t_Bestellijst[VERZONDEN]")
If r = "j" Then
'do something here
end if
next r

最新更新