Страницы: 1
RSS
Макрос разделения столбцов на листы не работает в надстройке
 
Здравствуйте. Есть макрос который нормально работает. Но, я сам не понимаю зачем этот макрос не работает когда я добавляю его свой надстройку. Помогите пожалуйста. Заранее спасибо. примере 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
 
У кого то есть варианты?
 
mk92, попробуйте заменить строку 14
Код
For Each Sht In ThisWorkbook.Worksheets
на
Код
For Each Sht In ActiveWorkbook.Worksheets
и строку 21
Код
Set Sht = ThisWorkbook.Worksheets(Sht_table)
на
Код
Set Sht = ActiveWorkbook.Worksheets(Sht_table)
В общем везде где есть ThisWorkbook на ActiveWorkbook
 
msi2102, очень благодарен . сработала :)  
Страницы: 1
Наверх