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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2010, 19:41   #1
rlev
 
Регистрация: 30.01.2010
Сообщений: 3
По умолчанию Ошибка при выполнении макроса

Не могу понять, где закралась ошибка. На текущем листе выполняется, а вон на другом - не хочет. Помогите разобраться, пожалуйста.
Вложения
Тип файла: rar счет-образец.rar (27.1 Кб, 17 просмотров)
rlev вне форума Ответить с цитированием
Старый 21.02.2010, 20:30   #2
alyon_ka
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 40
По умолчанию

в файле 3 макроса какой из них смотреть? и на каком листе он работает нормально, а на каком - не хочет? на всех трех листах разные шаблоны...
alyon_ka вне форума Ответить с цитированием
Старый 21.02.2010, 21:10   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Как минимум ошибка в Модуль14. Исправьте макрос так:

Код:
Sub Макрос3()
'
' Макрос3 Макрос
'

'
    Sheets("акт").PrintOut Copies:=2
    Title = "                Печать акта !"
    Msg = " Вы уверены, что хотите напечатать акт? "
    Btns = vbYesNo + vbCritical + vbDefaultButton2  ' кнопки и свойства
    Result = MsgBox(Msg, Btns, Title)
    If Result = vbYes Then MyString = "Да"

End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 21.02.2010, 22:06   #4
WordVest
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 36
Радость Ошибка макроса

Ваш макрос действительно выдает ошибку в Модуле14. Вы использовали блок With … End With.
У вас 1 действие в этом блоке «.PrintOut Copies:=2», то есть Вы выводите на печать две копии данного листа, но после этого Вы запрашиваете пользователя о том хочет он вывести этот лис на печать или нет.
Текст макроса должен выглядеть так:
MsgBox "Вывести лист «акт» на печать?", vbYesNo
If msg=7 Then
Exit Sub
Else
Workseets ("акт").PrintOut Copies:=2
End If
Данный текст VBA запрашивает у пользователя хочет ли он распечатать данный лист, если нет то не выполняет далее никаких действий, если да то напрямую используя принтер по умолчанию, распечатывает лист «акт» в двух экземплярах
WordVest вне форума Ответить с цитированием
Старый 21.02.2010, 23:15   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Ну если уж исправлять и причесывать, то так:

Код:
Sub Макрос3()
If MsgBox(" Вы уверены, что хотите напечатать акт? ", vbYesNo + vbCritical + vbDefaultButton2, "                Печать акта !") = vbNo Then Exit Sub
Sheets("акт").PrintOut Copies:=2
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 22.02.2010, 11:28   #6
rlev
 
Регистрация: 30.01.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от alyon_ka Посмотреть сообщение
в файле 3 макроса какой из них смотреть? и на каком листе он работает нормально, а на каком - не хочет? на всех трех листах разные шаблоны...
К сожалению, во всех 3 макросах были проблемы. По "печать актов" уже подсказали, спасибо. Моя невнимательность. А вот в двух других макросах ошибки есть и они однотипные. При запуские и одного, и второго макроса на листе "счет" все выполняется, а вот на листе "акт" практически в одном и том же месте вываливается ошибка. И что с ними делать - не знаю.
rlev вне форума Ответить с цитированием
Старый 22.02.2010, 11:50   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от rlev Посмотреть сообщение
на листе "акт" практически в одном и том же месте вываливается ошибка
Ну вот нельзя написать, что за ошибка, на какой строке? Или все должны теперь запустить макрос и искать?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 22.02.2010, 12:04   #8
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Догадываюсь где ошибка. Нельзя выделять диапазон на неактивном листе.
Вот коды поправленных макросов:
из Module13
Код:
Sub Макрос2()
    ActiveSheet.Unprotect
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 11).End(xlUp).Row
    Cells(LastRow - 1, 1).Select
    Title = "                Удаление строки !"
    Msg = " Вы уверены в удаление строки? "
    Btns = vbYesNo + vbCritical + vbDefaultButton2  ' кнопки и свойства
    Result = MsgBox(Msg, Btns, Title)
    If Result = vbYes Then
        MyString = "Да"
        Selection.EntireRow.Delete Shift:=xlUp
        ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
        With Sheets("акт")
            .Unprotect
            LastRow = .Cells(Rows.Count, 9).End(xlUp).Row
            .Cells(LastRow - 1, 1).EntireRow.Delete Shift:=xlUp
            .Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
        End With
    Else
        MyString = "Нет"
        Exit Sub
    End If
End Sub
Из Module10
Код:
Sub Макрос1()
    ActiveSheet.Unprotect
    Dim LastRow As Long, iCol As Integer
    LastRow = Cells(Rows.Count, IIf(ActiveSheet.Name = "счет", 11, 9)).End(xlUp).Row
    Cells(LastRow, 1).Select
    Selection.EntireRow.Insert
    Range(Cells(LastRow - 1, 1), Cells(LastRow - 1, 12)).Select
    Selection.AutoFill Destination:=Range(Cells(LastRow - 1, 1), Cells(LastRow, 12)), Type:=xlFillDefault
    Cells(LastRow + 1, 12).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C[1])"
    With Sheets("акт")
        .Unprotect
        LastRow = .Cells(Rows.Count, 9).End(xlUp).Row
        .Rows(LastRow).EntireRow.Insert
        .Range(.Cells(LastRow - 1, 1), .Cells(LastRow - 1, 9)).AutoFill Destination:=.Range(.Cells(LastRow - 1, 1), .Cells(LastRow, 9)), Type:=xlFillDefault
        .Cells(LastRow + 1, 9).FormulaR1C1 = "=SUM(R[-10]C:R[-1]C[1])"
        .Protect
    End With
    Cells(LastRow, 2).Select
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 22.02.2010, 12:41   #9
rlev
 
Регистрация: 30.01.2010
Сообщений: 3
По умолчанию

Спасибо большое.
rlev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении приложения ADJAVA Общие вопросы по Java, Java SE, Kotlin 0 24.07.2008 11:07
При выполнении макроса, дергается таблица valerij Microsoft Office Excel 3 23.03.2008 00:38
Ошибка при выполнении запроса Шани БД в Delphi 4 27.07.2007 13:04
Ошибка при выполнении запроса Elena БД в Delphi 3 14.06.2007 15:13
Ошибка при выполнении запроса Elena БД в Delphi 2 25.05.2007 16:19