Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2009, 16:31   #1
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию Подправьте макрос. Просьба

Условие во вложенном файле
Вложения
Тип файла: rar Parovoz.rar (308.8 Кб, 11 просмотров)
kzld вне форума Ответить с цитированием
Старый 04.08.2009, 16:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой вариант:
Код:
Sub НовыеБланки()
    Application.ScreenUpdating = False: Dim sh As Worksheet
    On Error Resume Next ' на случай, если встретятся 2 одинаковые даты
    ' ошибка вылетала как раз из-за того, что в книге не может быть
    ' двух листов с одинаковыми именами

    For i = 2 To Sheets("Данные").Cells(Rows.Count, 8).End(xlUp).Row
        ' Sheets("Данные").Cells(i, 1) = "x"
        Sheets("Бланк").Copy After:=Sheets("Бланк")
        Set sh = ActiveSheet    ' вновь созданный лист
        sh.UsedRange.Value = sh.UsedRange.Value    ' заменяем все формулы значениями

        sh.Name = Sheets("Данные").Cells(i, 7): sh.Tab.Color = vbGreen
        ' Sheets("Данные").Cells(i, 1).Value = ""
        
        sh.Range("t20") = Sheets("Данные").Cells(i, 2) ' копируем номер счёта
        sh.Range("CH20") = Sheets("Данные").Cells(i, 3) ' копируем номер акта
        ' и т.д.
    Next i

    Sheets("Данные").Activate: Application.ScreenUpdating = True
End Sub

Sub УдалитьБланки()
    Application.ScreenUpdating = False
    Dim sh As Worksheet: Application.DisplayAlerts = False
    For Each sh In ThisWorkbook.Worksheets
        If sh.Tab.Color = vbGreen Then sh.Delete
    Next sh
    Application.DisplayAlerts = True
End Sub


Цитата:
Почему в оригинальном файле (из которого я выдернул" макрос) два именованных диапазона и ссылаются оба диапазона
на одинаковую область. Нет ли здесь ошибки
Эти именованные диапазоны не имеют никакого отношения к макросу.

Последний раз редактировалось EducatedFool; 04.08.2009 в 16:51.
EducatedFool вне форума Ответить с цитированием
Старый 04.08.2009, 17:01   #3
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Попробуйте такой вариант:
вырезано

Очень похоже. Но почему то не меняется номер приходного кассового ордера, а также даты и суммы


Эти именованные диапазоны не имеют никакого отношения к макросу.
т.е. их можно удалить?
kzld вне форума Ответить с цитированием
Старый 04.08.2009, 17:06   #4
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Попробуйте такой вариант:
А во втором варианте
Sample__04-08-2009__18-48-27.xls
кроме номера счёта и номера акта ничего не меняется.
В ячейках написано "Н\Д"

И можно ли избавиться от функции ВПР и соответственно от символа (значения) Х в первом столбце
kzld вне форума Ответить с цитированием
Старый 04.08.2009, 17:38   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А во втором варианте
Sample__04-08-2009__18-48-27.xls
кроме номера счёта и номера акта ничего не меняется.
В ячейках написано "Н\Д"
А Вы не пытались повнимательнее изучить код?

Цитата:
Код:
 
        sh.Range("t20") = Sheets("Данные").Cells(i, 2) ' копируем номер счёта
        sh.Range("CH20") = Sheets("Данные").Cells(i, 3) ' копируем номер акта
        ' и т.д.
    Next i
Что, по-Вашему, означает выделенная красным строчка?

Цитата:
И можно ли избавиться от функции ВПР и соответственно от символа (значения) Х в первом столбце
Конечно, можно.
Попробуйте реализовать это самостоятельно.
EducatedFool вне форума Ответить с цитированием
Старый 04.08.2009, 17:52   #6
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А Вы не пытались повнимательнее изучить код?
Да, я начал разбираться.

Что, по-Вашему, означает выделенная красным строчка?

Конечно, можно.
Попробуйте реализовать это самостоятельно.
Добавляю строчки типа
sh.Range("Z20") = Sheets("Данные).Cells(i, 7) ' копируем дату
Начало получаться.
Споткнулся на следующем
В ячейке V66 стоит формула СУММ
При создании бланков макросом, она не хочет суммировать
Как можно побороть эту бяку

Последний раз редактировалось kzld; 05.08.2009 в 05:57.
kzld вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Подправьте мой код пожалуйста Volchara Общие вопросы C/C++ 5 06.04.2009 17:05
Подправьте ПЛЗ. Макрос Viento Microsoft Office Excel 4 30.01.2009 15:58
Просьба Neymexa Помощь студентам 2 27.01.2009 17:25
просьба Aivar Софт 1 03.09.2008 23:46