Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Проверка: существует лист в данной книге?
 
Коллеги, прошу помощи. Знаю, подобные темы уже есть на форуме, но я не смог воспользоваться советами, данными в них. Я еще весьма плохо понимаю в vba.
Суть следующая: у меня есть макрос, который создает новые листы с названием из определенного списка ФИО. Когда листы с нужными именами есть, я снова выполняю макрос с тем же списком имен, в этом случае макрос создает листы: "Лист1", "Лист2" и т. д. Как сделать, чтобы он не создавал новые листы, если имя листа повторяется?
Сейчас макрос выглядит так. Не знаю как в него добавить новое условие.
Код
Sub new_sh_after()
Dim i As Object
On Error Resume Next
Finalrow = Range("A1048576").End(xlUp).Row For Each i In Sheets("17").Range("A1:A" & Finalrow)
Err.Clear
 Sheets("Pivot").Select
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ÔÈÎ"). _
        ClearAllFilters
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ÔÈÎ"). _
        CurrentPage = i.Value
 If Err.Number = 0 Then
 Sheets("Pivot").Range(Range("A4"), Range("B4").End(xlDown)).Copy
   
   
  Worksheets.Add(after:=Worksheets("17")).Name = Left(i, 31)
   ActiveSheet.Range("A1").Select
     
    With Selection
 .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
End If
Next i
          
End Sub
Изменено: kornilcdima - 09.11.2015 09:47:51
Пропала строка состояния, excel 2013
 
У меня почему-то пропала строка состояния.
Теперь вынужден каждый раз, когда запускаю файл, пользоваться макросом.
Можно как то это дело включить через интерфейс экселя?
Код
Sub hideStatusBar()
With Application.CommandBars("Status Bar")
   .Visible = Not .Visible
End With
End Sub
Выводить в конце цикла информацию о возникших ошибках
 
Есть макрос который перебирает ФИО из списка и производит ряд действий в зависимости от выбранного ФИО. А именно фильтрует по ФИО в сводной и копирует сводную на новый лист с названием листа (соответствующему ФИО).

Что нужно прописать, чтобы после завершении работы макроса выводилось сообщение о том какие ФИО оказались ошибочными и по ним не создались листы и таблицы?

Заранее благодарю.
Код
Sub new_sh_after()
Dim i As Object
On Error Resume Next
Finalrow = Range("A1048576").End(xlUp).Row 

For Each i In Sheets("17").Range("A1:A" & Finalrow)
Err.Clear
 Sheets("Pivot").Select
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ФИО"). _
        ClearAllFilters
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ФИО"). _
        CurrentPage = i.Value
 If Err.Number = 0 Then
 Sheets("Pivot").Range(Range("A4"), Range("B4").End(xlDown)).Copy
   
   
  Worksheets.Add(after:=Worksheets("17")).Name = Left(i, 31)
   ActiveSheet.Range("A1").Select
     
    With Selection
 .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
End If
Next i         
End Sub
Изменено: kornilcdima - 29.10.2015 11:24:14
При ошибке цикл продолжить со след значения
 
Столкнулся с проблемой, не знаю как прописать операцию в макросе.

У меня есть сводная таблица (лист "свод"), из которой я копирую данные на новый лист, который предварительно создается. Название листа задается из диапазона на листе "17", при этом фильтр в сводной тоже изменяется в зависимости от выбранного значения на листе "17".
Если у меня есть не существующее ФИО, то цикл прерывается на выборе фильтра в сводной таблице.

Как мне прописать, чтобы цикл переходил к следующему значению в диапазоне (на листе "17") ?

Я понимаю, что мне нужно прописать что-то вроде On Error GoTo, но что конкретно. Заранее благодарю.
Код
Sub new_sh_after()
Dim i As Object For Each i In Sheets("17").Range("A1:A3")
 
 Sheets("Pivot").Select
 
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ФИО"). _
        ClearAllFilters
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("ФИО"). _
        CurrentPage = i.Value
     
 Sheets("Pivot").Range(Range("A4"), Range("B4").End(xlDown)).Copy
 
 
  Worksheets.Add(after:=Worksheets("17")).Name = Left(i, 31)
   ActiveSheet.Range("A1").Select
   
   With Selection
 .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
    
        Next i
        
End Sub

Создание новых листов с именами из заданного списка
 
Может уже была подобная тема, но я не смог найти такую.
У меня есть список с ФИО на листе "17".
Использую код:
Код
Sub new_sh()
Dim i As Object
 For Each i In Sheets("17").Range("A1:A3")
  Worksheets.Add.Name = i
        Next i
End Sub


На листе "17" в списке ФИО есть Демушкина Александра Александровна , длина больше 31 знака, и макрос из-за этого не выполняется.
При этом мне нужно, чтобы листы создавались после листа "17"

Такой код не подходит (
Код
Worksheets.Add After:=worksheets("17").Name = i
Подскажите пожалуйста что не так. Файл прикрепляю
макросом скопировать таблицу одну под другую, макрос, который перебирает фильтры таблицы и копирует с каждым новым фильтром таблицу на отдельный лист одна под другую
 
Прошу помощи. К теме прикреплен файл-пример.

Нужно, чтобы, макрос перебирал по очереди из списка номера месяца, затем сегмент.
Затем полученную таблицу копировал вниз одну под другой на sheet3 (на листе есть шаблон как должно получиться),
Я не знаю как сделать такой цикл. Начало макроса в Macro2 и корявые попытки в Macro1
Как сделать цикл ничего не понимаю, но сделать как то надо. К теме прикреплен пример. Это конечно примитивная версия файла, с которым я работаю. С помощью него я бы смог понять принцип. Знаю, что это неочень сложно для кого-то, но совсем я не сведущ.
Заранее большое спасибо!
Изменено: kornilcdima - 22.05.2015 02:43:09
динамический диапазон с помощью vba, Нужно копировать формулу на столько строк, сколько есть в сводке
 
День добрый! Помогите сделать такую штуку, в vba я полный нуп или хотя бы, подскажите...
В файле 2 листа. На 1 листе всегда в 6ой строке прописаны разные формулы в диапазоне A6:S6. Нужно, чтобы эти формулы копировались на столько строк вниз, сколько строк в сводной таблице на 2м листе.

Как прописать это?
Я только догадываюсь, что сначала нужно объявить эту строку Dim A6:S6 As Range
For each range далее прописывается формула смещения для создания динамического диапазона =offset(a6;0;19;count(A6:A10000);1))
Страницы: 1
Наверх