Страницы: 1
RSS
Список листов книги с помощью макроса
 
Здравствуйте. Создал макрос который в столбец помещает все листы в екселе. Но я не могу в нужную ячейку вставить этот список. Если я меняю Cells(i,2) Cells(9,2) - выдает только 4 лист книги (всего в книге 4 листа). Как сделать чтобы списком было все листы?
Код
Sub List()

Sheets("Task 3 (VBA)").Select
Range("Table1[Names of tabs in this file]").Select

Dim i As Integer
For i = 1 To ActiveWorkbook.Worksheets.Count
ActiveSheet.Cells(9, 2).Value = ActiveWorkbook.Worksheets(i).Name
Next i
End Sub
 
Так
Код
Cells(i, 2)
 должна вывести все листы в столбик. Вот правда ActiveSheet перед ним меня смущает. Но я не знаток VBA
 
Почитайте в  "Приемах" эту статью
 
Не вдаваясь в моменты использования Select и ActiveSheet - приведенная процедура выводит имена всех рабочих листов, как и предполагается. Но выводит их в одну и ту же ячейку, поэтому и остается в результате только имя последнего листа.
Что Вы хотите получить? Имена книг в разных ячейках или в одной? Как раз не хватает примера того, что необходимо получить.
Судя по замене Cells(i,2) на Cells(9,2) (видимо у Вас в вопросе "на" пропущено) - в одной ячейке. Тогда:
Код
Sub List()
 
Sheets("Task 3 (VBA)").Select
Range("Table1[Names of tabs in this file]").Select
 
Dim i As Integer
For i = 1 To ActiveWorkbook.Worksheets.Count
  If i>1 Then ActiveSheet.Cells(9, 2).Value = ActiveSheet.Cells(9, 2).Value & vbCr 'Добавляем символ переноса строк
  ActiveSheet.Cells(9, 2).Value = ActiveSheet.Cells(9, 2).Value & ActiveWorkbook.Worksheets(i).Name
Next i
End Sub
Если это так, то название темы надо поправить. "Список имен рабочих листов книги в одной ячейке с помощью макроса"
 
Цитата
Alec Perle написал:
Что Вы хотите получить? Имена книг в разных ячейках...
Цитата
Ole_123 написал:
Список листов книги
:)  
 
Alec Perle,да, но можно чтобы этот перечень в столбец был а не в 1 ячейке?
 
Ole_123, по ссылке статью читали?
 
Юрий М,конечно, но у меня немного не то. У меня Лист 3-й по счету + мне не сверху листа нужно вставить список а в Cells(9,2).
 
Цитата
Ole_123 написал:
чтобы этот перечень в столбец был а не в 1 ячейке?
Цитата
Ole_123 написал:
вставить список а в Cells(9,2).
Определитесь, чего Вы хотите
 
Цитата
Ole_123 написал:
У меня Лист 3-й по счету + мне не сверху листа нужно вставить список а в Cells(9,2)
воспользуйтесь услугами программиста)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,прикрепляю пустой пример) На третем листе выделил куда должен попадать список. В коде выше все попадает в 1 строчку, а нужно чтобы столбцом.
Подскажите плз
 
а если в коде vbCr заменить на chr(10) ? Будет как Вы хотите?
Изменено: bigorq - 10.12.2019 23:43:19
 
Ну так сделайте минимальную доработку:
Код
Sub SheetList()
   Dim sheet As Worksheet
   Dim cell As Range, x As Long
   x = 9
   With ActiveWorkbook
      For Each sheet In ActiveWorkbook.Worksheets
         Set cell = Worksheets(3).Cells(x, 2)
         .Worksheets(1).Hyperlinks.Add anchor:=cell, Address:="", SubAddress:="'" & sheet.Name & "'" & "!A1"
         cell.Formula = sheet.Name
         x = x + 1
      Next
   End With
End Sub

 
bigorq,не совсем. Выйдет что все названия листов в 1 ячейке столбцом. А нужно в разных ячейках названия (столбцом)
 
))
совсем на форуме экстрасенсы перевелись, элементарных вещей угадать не могут!
Изменено: Ігор Гончаренко - 10.12.2019 23:49:37
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ole_123 написал:
А нужно в разных ячейках названия
Так а чем Вас первоначальный вариант не устраивает? Замените в Cells 9 на i+8
 
bigorq,получилось, спасибо!!!!)
Страницы: 1
Наверх