Цикл массива в VBA без сохранения - PullRequest
0 голосов
/ 29 мая 2018

приведенный ниже код работает в основном нормально.Он просматривает мой диапазон на вкладке «список», выбирает первую ячейку (A1), затем переходит на мою вкладку «ингредиенты», фильтрует на основе этой первой ячейки и копирует и вставляет информацию в другое место.

проблема возникает, когда он возвращается к 2-й ячейке (A2), а затем снова фильтрует мой список.он не только фильтрует по A2, но запоминает A1 и фильтрует мой список по обоим критериям!Таким образом, он становится кумулятивным - фильтры 3-го цикла на основе A1, A2 и A3 и т. Д. ...

Как заставить его забыть предыдущие строки в массиве и сосредоточиться только на следующей строке?

Dim N As Integer
 With Workbooks("file.xlsm").Sheets("list")
    N = .Cells(Rows.Count, "A").End(xlUp).Row
    ReDim ary(1 To N)

    For i = 1 To N
    ary(i) = .Cells(i, 1)


Dim Path As String
Dim filename As String
    Path = "C:\"
filename = Workbooks("file.xlsm").Sheets("list").Cells(i, 1)


Windows("file.xlsm").Activate

Sheets("ingredients").Range("$A$1:$E$1451").AutoFilter Field:=1
Sheets("ingredients").Range("$A$1:$E$1451").AutoFilter Field:=1, Criteria1:=ary, Operator:=xlFilterValues
Range("A1:E1451").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False`

1 Ответ

0 голосов
/ 30 мая 2018

Вы, кажется, используете aray для хранения одного значения, что неверно.Кроме того, вы начинаете 'With', который, похоже, не заканчивается в этом фрагменте кода (я думаю, почему он сохранит значения в вашем массиве, потому что вы не заканчиваете with, прежде чем использовать следующее значение).Вместо этого я бы предложил использовать цикл на вашей первой вкладке «список» от первой до последней строки и использовать это значение для фильтрации во второй вкладке «ингредиенты».Это будет выглядеть примерно так:

Sub LoopAndFilter ()

Dim X as long, LR as long    
LR = Sheets("list").Range("A" & Rows.Count).End(xlUp).Row
For X = 1 to LR
    'Your code to use Sheets("list").Range("A" & X).value in a filter on your other tab
Next X

End sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...