Обновить sheet1, когда ячейка в sheet2 соответствует критериям - Excel и VBA - PullRequest
0 голосов
/ 03 декабря 2018

В VBA я пытаюсь получить обновление значения ячейки, если оно соответствует критериям, заданным для другой ячейки листов.До сих пор это дает мне «Ошибка 5 - Недопустимый вызов процедуры или аргумент».

Без этого «IF - Тогда» все работало нормально.Теперь я хотел бы уточнить мою процедуру, обновляя только cell1 из таблицы "t_Magazijnvoorraad", когда в таблице "t-Bestellijst" ячейка в столбце "VERZONDEN" имеет значение "J".

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

1 Ответ

0 голосов
/ 03 декабря 2018

Cells принимает два аргумента;числа, представляющие порядковый номер (а) строки и столбца.

Диапазон может принимать строку, представляющую ссылку на ячейку / диапазон в стиле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...