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

Страницы: 1
Макрос разделения столбцов на листы не работает в надстройке
 
Здравствуйте. Есть макрос который нормально работает. Но, я сам не понимаю зачем этот макрос не работает когда я добавляю его свой надстройку. Помогите пожалуйста. Заранее спасибо. примере module14
Код
Sub iSelectColumnForFilter()
Dim i As Long
Dim n As Integer
Dim Criterij As String
Dim iName As String
Dim Sht As Worksheet
Dim Sht_table As String
Dim iLastCol As Integer
Dim iSelectCol As Integer
Dim iLastRow As Long
Application.ScreenUpdating = False
  Application.DisplayAlerts = False          'îòêëþ÷åíèå ïðåäóïðåæäàþùèõ ñîîáùåíèé
   Sht_table = ActiveSheet.Name
    For Each Sht In ThisWorkbook.Worksheets  'óäàëÿåì âñå ëèñòû, êðîìå Sht_table
      If Sht.Name <> Sht_table Then Sht.Delete
    Next
  Application.DisplayAlerts = True
   iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column  'ïîñëåäíèé ñòîëáåö
  iSelectCol = Application.InputBox("Âûáåðèòå íîìåð ñòîëáöà ôèëüòðàöèè", Type:=1)
  If iSelectCol > iLastCol Then MsgBox "Âûáðàííûé ñòîëáåö âûõîäèò çà äèàïàçîí ñòîëáöîâ": Exit Sub
  Set Sht = ThisWorkbook.Worksheets(Sht_table)
   iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
        Columns(iLastCol + 2).ClearContents
    Range(Cells(1, iSelectCol), Cells(iLastRow, iSelectCol)).AdvancedFilter Action:=xlFilterCopy _
                                  , CopyToRange:=Cells(1, iLastCol + 2), Unique:=True
        n = Cells(Rows.Count, iLastCol + 2).End(xlUp).Row
    For i = 2 To n          'öèêë ïî óíèêàëüíûì çíà÷åíèÿì âûáðàííîãî ñòîëáöà
        Criterij = Sht.Cells(i, iLastCol + 2)
        iName = Criterij    'èìÿ íîâîãî ëèñòà
       Sht.Range(Sht.Cells(1, 1), Sht.Cells(iLastRow, iLastCol)).AutoFilter iSelectCol, Criterij
        Sht.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy
        With Worksheets.Add(After:=Worksheets(Worksheets.Count))  'äîáàâëÿåò íîâûé ëèñò â êîíåö
          .Range(Cells(1, 1), Cells(1, iLastCol)).PasteSpecial xlPasteColumnWidths
          .Range(Cells(1, 1), Cells(1, iLastCol)).PasteSpecial xlPasteFormats
          .Range(Cells(1, 1), Cells(1, iLastCol)).PasteSpecial xlPasteValues
          Sht.AutoFilter.Range.AutoFilter
          .Name = iName
          .Range("A1").Select
        End With
    Next
Application.ScreenUpdating = True
   Sht.Activate
   Columns(iLastCol + 2).ClearContents
End Sub
разделить таблицу на листы
 
Существует таблица в первом листе (1st sheet). Эту таблицу надо разделить на страницы по регионам, например Москва в одном, Питер в другом листе и т.д. У меня на примере есть макрос (спасибо Kuzmich - у) но надо делать изменения. (дает дебуг)И  макросе можно так сделать чтобы там строки или столбцы тоже я сам определил. Потому что может быть этот макрос ещё понадобится мне в других книгах тоже. Заранее спасибо
Код
Sub iTown()
Dim i As Long
Dim n As Integer
Dim Criterij As String
Dim iName As String
Dim Sht As Worksheet
Application.ScreenUpdating = False
  Set Sht = ThisWorkbook.Worksheets("MH-2019")
        Columns("E").ClearContents
    Range("C3:C" & Cells(Rows.Count, "C").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy _
                                  , CopyToRange:=Range("E3"), Unique:=True
        n = Cells(Rows.Count, "E").End(xlUp).Row
    For i = 4 To n          'цикл по уникальным значениям
        Criterij = Sht.Cells(i, "E")
        iName = Criterij    'имя нового листа
       Sht.Range("A3:C" & Cells(Rows.Count, "C").End(xlUp).Row).AutoFilter 3, Criterij
        Sht.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy
        With Worksheets.Add(After:=Worksheets(Worksheets.Count))  'добавляет новый лист в конец
          .Range("A1:C1").PasteSpecial xlPasteColumnWidths
          .Range("A1:C1").PasteSpecial xlPasteFormats
          .Range("A1:C1").PasteSpecial xlPasteValues
          Sht.AutoFilter.Range.AutoFilter
          .Name = iName
          .Range("A1").Select
        End With
    Next
Application.ScreenUpdating = True
End Sub

Изменено: mk92 - 21.09.2019 22:26:09
Макрос для автопечати с указанием количества
 
Здравствуйте! У меня вопрос по Macros . У меня ест Macros для автопечати но количество каждый раз я вынужден указать в языке VBA . Как мне сделать так чтобы при запуске Macros автоматически появился окно Input Box где бы я смог указать количество печати.
For i to X
Объединить данные двух листов с автоматической нумерацией строк
 
Здравствуйте ! У меня вопрос о команде которую я ( друг помог) создал на языке VBA. Я не так уж хорошо в вба Прошу мне помочь с одной проблемой. Что сделать для того чтобы данные после 6 листа (6 включительно) были скопированы и скомбированы на листе 5 с учетом того чтобы при команде столбцы были выделени (я написал диапазон каждом листе) а строки пронумеровались автоматически. Заранее благодарю вас.
вба код
Код
Sub Combine()Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
Изменено: mk92 - 13.03.2019 10:04:34
Как автоматически добавить в список имеющихся листов имя нового листа?, автоматически перемещение имя листа в другой листе по ячейкам
 
Привет всем. Как нужно сделать для того чтобы , когда создаётся новый лист, имя листа автоматически попала в другой лист где хранятся все имена листов.Здесь такое дело у меня есть макрос когда зачисляется все операция можно отправить на новый лист. А таких листов будет много. Заранее спасибо.

когда создаётся новый лист,имя листа автоматически попала в home overall (A2, A3 ........)
Страницы: 1
Наверх