Здравствуйте. Пожалуйста подскажите как получить имена только тех листов, которые мне нужны. Я хочу исключить некоторые листы и записать остальные. Те, которых нет в колонке исключенные в таблице значений. Заколебался уже с этими условиями как-то в VBA условия и циклы работают через одно место. был опыт небольшой кодирования на Java и с++ но с такими трудностями я еще не сталкивался. Смысл моего макроса в том, сто он перебирает все листы и сравнивает их названия с таблицей. По идее если в таблице есть совпадение, то я должен или прервать цикл (внутренний, только его) и пойти в следующее значение по верхнему циклу. Это не получается, если пишу ExitFor то прерывается и внутренний и верхний цикл.
Пробую ставить маркеры, через значение VAL и тут ничего не получается. Я прямо не понимаю как машина перебирает значение.
Помогите пожалуйста.
[vba]
Код
Dim i As Integer Dim c As Range Dim val As Integer
ActiveSheet.Range("A2:A23").Clear
For i = 1 To ActiveWorkbook.Worksheets.Count ' ActiveSheet.Cells(i + 1, 1).Value = ActiveWorkbook.Worksheets(i).Name
For Each c In [C2:C9] val = 0
If ActiveWorkbook.Worksheets(i).Name = c.Text Then val = 1 ElseIf ActiveWorkbook.Worksheets(i).Name <> c.Text Then val = 0 End If If val = 1 Then ActiveSheet.Cells(i + 1, 1).Value = ActiveWorkbook.Worksheets(i).Name
'If val = 1 Then MsgBox (ActiveWorkbook.Worksheets(i).Name & " " & c.Text)
Next c
Next i
[/vba]
Здравствуйте. Пожалуйста подскажите как получить имена только тех листов, которые мне нужны. Я хочу исключить некоторые листы и записать остальные. Те, которых нет в колонке исключенные в таблице значений. Заколебался уже с этими условиями как-то в VBA условия и циклы работают через одно место. был опыт небольшой кодирования на Java и с++ но с такими трудностями я еще не сталкивался. Смысл моего макроса в том, сто он перебирает все листы и сравнивает их названия с таблицей. По идее если в таблице есть совпадение, то я должен или прервать цикл (внутренний, только его) и пойти в следующее значение по верхнему циклу. Это не получается, если пишу ExitFor то прерывается и внутренний и верхний цикл.
Пробую ставить маркеры, через значение VAL и тут ничего не получается. Я прямо не понимаю как машина перебирает значение.
Помогите пожалуйста.
[vba]
Код
Dim i As Integer Dim c As Range Dim val As Integer
ActiveSheet.Range("A2:A23").Clear
For i = 1 To ActiveWorkbook.Worksheets.Count ' ActiveSheet.Cells(i + 1, 1).Value = ActiveWorkbook.Worksheets(i).Name
For Each c In [C2:C9] val = 0
If ActiveWorkbook.Worksheets(i).Name = c.Text Then val = 1 ElseIf ActiveWorkbook.Worksheets(i).Name <> c.Text Then val = 0 End If If val = 1 Then ActiveSheet.Cells(i + 1, 1).Value = ActiveWorkbook.Worksheets(i).Name
'If val = 1 Then MsgBox (ActiveWorkbook.Worksheets(i).Name & " " & c.Text)
'Цикл по всем листам книги, кроме исключений в столбце С Sub Sbor() Dim Sht As Worksheet Dim iLastRow As Long Dim i As Long Dim iList As String For i = 2 To Cells(Rows.Count, "C").Row 'собираем в переменную iList исключаемые листы iList = iList & Cells(i, "C") Next Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents 'очищаем столбец А iLastRow = 2 For Each Sht In Worksheets 'цикл по всем листам книги If InStr(1, iList, Sht.Name) = 0 Then 'входит ли очередной лист в список исключенных With Sht Cells(iLastRow, "A") = Sht.Name 'имя листа в ячейку столбца А iLastRow = iLastRow + 1 End With End If Next End Sub
[/vba]
[vba]
Код
'Цикл по всем листам книги, кроме исключений в столбце С Sub Sbor() Dim Sht As Worksheet Dim iLastRow As Long Dim i As Long Dim iList As String For i = 2 To Cells(Rows.Count, "C").Row 'собираем в переменную iList исключаемые листы iList = iList & Cells(i, "C") Next Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents 'очищаем столбец А iLastRow = 2 For Each Sht In Worksheets 'цикл по всем листам книги If InStr(1, iList, Sht.Name) = 0 Then 'входит ли очередной лист в список исключенных With Sht Cells(iLastRow, "A") = Sht.Name 'имя листа в ячейку столбца А iLastRow = iLastRow + 1 End With End If Next End Sub
'Цикл по всем листам книги, кроме исключений в столбце С
Простите пожалуйста, добрый человек, ВЫ не могли бы написать комментарии, чтобы я не задавал больше глупых вопросов. Все работает отлично, и быстро. Но, если возможно, пожалуйста напишите что происходит в коде. Он совершенно не похож на мой, логика совершенно другая.
'Цикл по всем листам книги, кроме исключений в столбце С
Простите пожалуйста, добрый человек, ВЫ не могли бы написать комментарии, чтобы я не задавал больше глупых вопросов. Все работает отлично, и быстро. Но, если возможно, пожалуйста напишите что происходит в коде. Он совершенно не похож на мой, логика совершенно другая.lostandleft