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

Вход

Регистрация

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

 

= Мир MS Excel/не копирует SpecialCells(12) после расстановки фильтров - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
не копирует SpecialCells(12) после расстановки фильтров
31280 Дата: Среда, 21.01.2015, 14:11 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день друзья,
Прошу немного поправить кодик, третий день копаю, никак, не хочет копировать
Макрос запускается из файла, создает лист с датой, далее переходит на другой уже запущенный файл, в нем тоже создает такойже лист, расставляет фильтры на листе и копирует вот тут и не получается с синтаксисом закопался, помогите немного

Что делает:
Лист создает и там и там,
фильтры расставляет, но даты не ставит и не копирует....где накосячил не пойму

[vba]
Код


Dim k, i As Long, DayWeek As Integer
Dim wsSh, sh As Worksheet

With Application
          
      .ScreenUpdating = False:
      End With
      On Error Resume Next
          
     DayWeek = DatePart("w", Date)  'создаем нов лист c проверкой на дубль
If DayWeek = 6 Then 'если день недели-пятница
strDate = Format(Now + 3, "dd.mm.yy")
Else
strDate = Format(Now + 1, "dd.mm.yy")
End If
        On Error Resume Next
        Set wsSh = Sheets(strDate)
        If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate
            
             
          
Windows("gor.xls").Activate 'идем в другую книгу
Set wsSh = Sheets(strDate)
If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate 'создаем нов лист c проверкой на дубль

Set sh = Sheets("avtclav")

Worksheets("avtclav").Activate
Windows("gor.xls").Activate
     sh.ShowAllData 'снимем все фильтры что враги наставили
         
        Range("A5:bg5").AutoFilter 'фильтр в пятой строке шапка большая
                
            With sh    ' вот этого места начитнаются грабли
                
            sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
            sh.UsedRange.AutoFilter 39, "<>"
            For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
            .Cells(i, 55) = Now
            Next
                
            sh.UsedRange.Offset(1).Resize(, 22).SpecialCells(12).Copy wsSh.[A2]
            wsSh.Activate
                
           sh.Activate
           sh.ShowAllData
               
           sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
            sh.UsedRange.AutoFilter 40, "<>"
            For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
            .Cells(i, 55) = Now
            Next
                
            i = .Cells(.Rows.Count, 2).End(xlUp).Row
            sh.UsedRange.Offset(5).Resize(, 22).SpecialCells(12).Copy wsSh.[A&i]
                
            MsgBox i
         Windows("gor.xls").Activate
           wsSh.Activate
                       
            'а в конце в столбике 55 проставить сегодняшнюю дату в каждой строчке
            'и пеhеносит полученную таблицу в файл откуда запускается макрос, ну тут я думаю справлюсь
                 
        End With
         ScreenUpdating = True
[/vba]
[moder]А конкретно что не получается?
К сообщению приложен файл: gor.rar (23.5 Kb)


Сообщение отредактировал 31280 - Среда, 21.01.2015, 16:06
 
Ответить
СообщениеДобрый день друзья,
Прошу немного поправить кодик, третий день копаю, никак, не хочет копировать
Макрос запускается из файла, создает лист с датой, далее переходит на другой уже запущенный файл, в нем тоже создает такойже лист, расставляет фильтры на листе и копирует вот тут и не получается с синтаксисом закопался, помогите немного

Что делает:
Лист создает и там и там,
фильтры расставляет, но даты не ставит и не копирует....где накосячил не пойму

[vba]
Код


Dim k, i As Long, DayWeek As Integer
Dim wsSh, sh As Worksheet

With Application
          
      .ScreenUpdating = False:
      End With
      On Error Resume Next
          
     DayWeek = DatePart("w", Date)  'создаем нов лист c проверкой на дубль
If DayWeek = 6 Then 'если день недели-пятница
strDate = Format(Now + 3, "dd.mm.yy")
Else
strDate = Format(Now + 1, "dd.mm.yy")
End If
        On Error Resume Next
        Set wsSh = Sheets(strDate)
        If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate
            
             
          
Windows("gor.xls").Activate 'идем в другую книгу
Set wsSh = Sheets(strDate)
If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate 'создаем нов лист c проверкой на дубль

Set sh = Sheets("avtclav")

Worksheets("avtclav").Activate
Windows("gor.xls").Activate
     sh.ShowAllData 'снимем все фильтры что враги наставили
         
        Range("A5:bg5").AutoFilter 'фильтр в пятой строке шапка большая
                
            With sh    ' вот этого места начитнаются грабли
                
            sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
            sh.UsedRange.AutoFilter 39, "<>"
            For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
            .Cells(i, 55) = Now
            Next
                
            sh.UsedRange.Offset(1).Resize(, 22).SpecialCells(12).Copy wsSh.[A2]
            wsSh.Activate
                
           sh.Activate
           sh.ShowAllData
               
           sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
            sh.UsedRange.AutoFilter 40, "<>"
            For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
            .Cells(i, 55) = Now
            Next
                
            i = .Cells(.Rows.Count, 2).End(xlUp).Row
            sh.UsedRange.Offset(5).Resize(, 22).SpecialCells(12).Copy wsSh.[A&i]
                
            MsgBox i
         Windows("gor.xls").Activate
           wsSh.Activate
                       
            'а в конце в столбике 55 проставить сегодняшнюю дату в каждой строчке
            'и пеhеносит полученную таблицу в файл откуда запускается макрос, ну тут я думаю справлюсь
                 
        End With
         ScreenUpdating = True
[/vba]
[moder]А конкретно что не получается?

Автор - 31280
Дата добавления - 21.01.2015 в 14:11
sver4ook Дата: Среда, 21.01.2015, 21:48 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
разобрался с одним косяком, оказывается ексел путался в файлах так как видимо имена одинаковые он не знал куда копировать.
остался вопрос
как проставить дату в ТОЛЬКО ОТОБРАННЫЕ значения

у меня проставляет в весь столбец

[vba]
Код

Windows("gor.xls").Activate 'идем в другую книгу

DayWeek = DatePart("w", Date)  'создаем нов лист c проверкой на дубль
If DayWeek = 6 Then 'если день недели-пятница
strDate = Format(Now + 3, "dd.mm.yy")
Else
strDate = Format(Now + 1, "dd.mm.yy")
End If
          On Error Resume Next
         Set wsSh = Sheets(strDate)
        If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate 'создаем нов лист c проверкой на дубль

Set sh = Sheets("avtclav")

Worksheets("avtclav").Activate
Windows("gor.xls").Activate
       sh.ShowAllData 'снимем все фильтры что враги наставили
              
           Range("A5:bg5").AutoFilter 'фильтр в пятой строке шапка большая
                      
               With sh     
                      
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 39, "<>"
                        
               sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.[A2]
              End With
                  
             With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
            With sh
           
           sh.ShowAllData
                  
           sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 40, "<>"
                        
                sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.Cells(r, 1)
              End With
              With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
               With sh     
               sh.ShowAllData
              
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 41, "<>"
                  
               For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
               .Cells(i, 51) = Now
               Next
                      
               sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.Cells(r, 1)
              
              End With
                  
             With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
             With sh            [size=12][b]  'вот тут подскажите[/b][/size]
               sh.ShowAllData
              
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
                    
               For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
               .Cells(i, 51) = Now + 1
                Next
                End With
                 
                 
               MsgBox r
           Windows("gor.xls").Activate
           wsSh.Activate
                          
               'а в конце в столбике 51 проставить сегодняшнюю дату в каждой строчке
               'и пеhеносит полученную таблицу в файл откуда запускается макрос, ну тут я думаю справлюсь
                      
              
           ScreenUpdating = True
[/vba]


Сообщение отредактировал sver4ook - Среда, 21.01.2015, 21:51
 
Ответить
Сообщениеразобрался с одним косяком, оказывается ексел путался в файлах так как видимо имена одинаковые он не знал куда копировать.
остался вопрос
как проставить дату в ТОЛЬКО ОТОБРАННЫЕ значения

у меня проставляет в весь столбец

[vba]
Код

Windows("gor.xls").Activate 'идем в другую книгу

DayWeek = DatePart("w", Date)  'создаем нов лист c проверкой на дубль
If DayWeek = 6 Then 'если день недели-пятница
strDate = Format(Now + 3, "dd.mm.yy")
Else
strDate = Format(Now + 1, "dd.mm.yy")
End If
          On Error Resume Next
         Set wsSh = Sheets(strDate)
        If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = strDate 'создаем нов лист c проверкой на дубль

Set sh = Sheets("avtclav")

Worksheets("avtclav").Activate
Windows("gor.xls").Activate
       sh.ShowAllData 'снимем все фильтры что враги наставили
              
           Range("A5:bg5").AutoFilter 'фильтр в пятой строке шапка большая
                      
               With sh     
                      
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 39, "<>"
                        
               sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.[A2]
              End With
                  
             With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
            With sh
           
           sh.ShowAllData
                  
           sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 40, "<>"
                        
                sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.Cells(r, 1)
              End With
              With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
               With sh     
               sh.ShowAllData
              
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
               sh.UsedRange.AutoFilter 41, "<>"
                  
               For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
               .Cells(i, 51) = Now
               Next
                      
               sh.UsedRange.Offset(5).Columns(2).Resize(, 42).SpecialCells(12).Copy wsSh.Cells(r, 1)
              
              End With
                  
             With wsSh
               wsSh.Activate
                r = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
              End With
                 
             With sh            [size=12][b]  'вот тут подскажите[/b][/size]
               sh.ShowAllData
              
               sh.UsedRange.AutoFilter 44, "АВТОКЛАВ"
                    
               For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 1 Step -1
               .Cells(i, 51) = Now + 1
                Next
                End With
                 
                 
               MsgBox r
           Windows("gor.xls").Activate
           wsSh.Activate
                          
               'а в конце в столбике 51 проставить сегодняшнюю дату в каждой строчке
               'и пеhеносит полученную таблицу в файл откуда запускается макрос, ну тут я думаю справлюсь
                      
              
           ScreenUpdating = True
[/vba]

Автор - sver4ook
Дата добавления - 21.01.2015 в 21:48
31280 Дата: Четверг, 22.01.2015, 10:04 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
парни я чет вообще перестал понимать, беру 2 файла один с кодом и второй с которым он работает, переношу на домашний комп, запускаю все нормуль все работает, а на работе ни в какую, я вот думаю может админы чё нить пофиксили, мож библиотеку какую.
скажите для SpecialCells(12). должна быть специальная библиотека?
 
Ответить
Сообщениепарни я чет вообще перестал понимать, беру 2 файла один с кодом и второй с которым он работает, переношу на домашний комп, запускаю все нормуль все работает, а на работе ни в какую, я вот думаю может админы чё нить пофиксили, мож библиотеку какую.
скажите для SpecialCells(12). должна быть специальная библиотека?

Автор - 31280
Дата добавления - 22.01.2015 в 10:04
RAN Дата: Четверг, 22.01.2015, 13:20 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Пример в кроссе


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПример в кроссе

Автор - RAN
Дата добавления - 22.01.2015 в 13:20
  • Страница 1 из 1
  • 1
Поиск:

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