Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не могу получить имена нужных листов из кники в столбике - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не могу получить имена нужных листов из кники в столбике (Макросы/Sub)
Не могу получить имена нужных листов из кники в столбике
lostandleft Дата: Суббота, 16.11.2019, 13:04 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.
Пожалуйста подскажите как получить имена только тех листов, которые мне нужны.
Я хочу исключить некоторые листы и записать остальные. Те, которых нет в колонке исключенные в таблице значений.
Заколебался уже с этими условиями как-то в 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]
К сообщению приложен файл: __.xls (45.5 Kb)
 
Ответить
СообщениеЗдравствуйте.
Пожалуйста подскажите как получить имена только тех листов, которые мне нужны.
Я хочу исключить некоторые листы и записать остальные. Те, которых нет в колонке исключенные в таблице значений.
Заколебался уже с этими условиями как-то в 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]

Автор - lostandleft
Дата добавления - 16.11.2019 в 13:04
Kuzmich Дата: Суббота, 16.11.2019, 13:48 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
[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
[/vba]


Сообщение отредактировал Kuzmich - Суббота, 16.11.2019, 14:45
 
Ответить
Сообщение[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
[/vba]

Автор - Kuzmich
Дата добавления - 16.11.2019 в 13:48
lostandleft Дата: Суббота, 16.11.2019, 14:17 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
'Цикл по всем листам книги, кроме исключений в столбце С


Простите пожалуйста, добрый человек, ВЫ не могли бы написать комментарии, чтобы я не задавал больше глупых вопросов.
Все работает отлично, и быстро.
Но, если возможно, пожалуйста напишите что происходит в коде. Он совершенно не похож на мой, логика совершенно другая.
 
Ответить
Сообщение
'Цикл по всем листам книги, кроме исключений в столбце С


Простите пожалуйста, добрый человек, ВЫ не могли бы написать комментарии, чтобы я не задавал больше глупых вопросов.
Все работает отлично, и быстро.
Но, если возможно, пожалуйста напишите что происходит в коде. Он совершенно не похож на мой, логика совершенно другая.

Автор - lostandleft
Дата добавления - 16.11.2019 в 14:17
Kuzmich Дата: Суббота, 16.11.2019, 14:47 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Комментарии написал в сообщении выше
 
Ответить
СообщениеКомментарии написал в сообщении выше

Автор - Kuzmich
Дата добавления - 16.11.2019 в 14:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не могу получить имена нужных листов из кники в столбике (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!