Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3337
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1626
∙ повысить рейтинг »
Megaloman
Статус: Профессионал
Рейтинг: 1165
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:1015
Дата выхода:29.04.2010, 12:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:259 / 86
Вопросов / ответов:1 / 3

Вопрос № 177995: Как сделать модуль(макрос) в экселе, чтобы при нажатии на него печатался заданный лист. И можно ли как-нибудь сделать, чтобы перед печатью, можно было выбирать ячейки для печати? ...



Вопрос № 177995:

Как сделать модуль(макрос) в экселе, чтобы при нажатии на него печатался заданный лист. И можно ли как-нибудь сделать, чтобы перед печатью, можно было выбирать ячейки для печати?

Отправлен: 23.04.2010, 12:16
Вопрос задал: Azarov88, Посетитель
Всего ответов: 3
Страница вопроса »


Отвечает Дмитрий FC, 1-й класс :
Здравствуйте, Azarov88.
печать выбранного диапазона данных:
Range("C3:E12").Select
Selection.PrintOut Copies:=1, Collate:=True

печать активного листа:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Вообще, все это и многое другое узнается с помощью записи макросов в Екселе (панель инстументов "Visual Basic" - красный шарик "Записать макрос". Выполняете нужные вам действия и после этого жмете "Остановить запись"-синий квадратик. Затем жмете зеленый треугольнки "Выполнить макрос" и выбираете только что записанный макрос , жмете кнопку изменить. Вуаля - все что вы делали на экране с помощью мышки, клавиатуры и меню записано в виде программы VBA. Очень удобный инструмент - всегда им пользуюсь

Ответ отправил: Дмитрий FC, 1-й класс
Ответ отправлен: 23.04.2010, 12:50
Номер ответа: 260973

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260973 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Измалков Эдуард Леонидович, 2-й класс :
    Здравствуйте, Azarov88.

    Если Вы хотите, чтобы каким-либо образом непосредственно перед печатью указать имя листа или дипазон ячеек, который нужно вывести на печать, то можно воспользоваться следующими процедурами.

    Sub ПечатьЛиста()
    Dim wsName As String
    wsName = Application.InputBox("Введите имя листа, который нужно распечатать" & vbCr & _
    "ВНИМАНИЕ!!! Вводите полное и точное имя, в противном случае ничего распечатано не будет", "Печать листа", _
    ActiveSheet.Name)
    If Not wsName = "False" And wsName <> "" Then ' если нажата кнопка "отмена" либо не введено название - выход
    On Error Resume Next ' при ошибке (введено имя несуществующего листа) - переход к следующему оператору
    ThisWorkbook.Worksheets(wsName).PrintOut
    End If
    End Sub

    Sub ПечатьДиапазона()
    Dim cName As String
    cName = Application.Inpu tBox("Введите диапазон ячеек в формате ""A1:C2"", который нужно распечатать" & vbCr & _
    "КАВЫЧКИ ВВОДИТЬ НЕ НУЖНО", "Печать диапазона ячеек", "A1:A1")
    If Not cName = "False" And cName <> "" Then ' если нажата кнопка "Отмена" или ничего не введено - выход
    On Error Resume Next ' при ошибке (неправильно введеный дипазон) - переход к следующему оператору
    ActiveSheet.Range(cName).PrintOut
    End If
    End Sub

    Ответ отправил: Измалков Эдуард Леонидович, 2-й класс
    Ответ отправлен: 23.04.2010, 19:59
    Номер ответа: 260982

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260982 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Megaloman, Профессионал :
    Здравствуйте, Azarov88. Вот вариант ответа. Сделано в предположении, что у Вас в книге множество листов, но Вам надо попасть именно на заданный лист, на котором выбрать диапазон ячеек и распечатать его. Текст макроса:
    Код:
    Sub PrintList()

    List = "Лист1" ' Имя листа, на который должен перейти макрос
    Sheets(List).Select

    Dim UserRange As Range
    Application.ScreenUpdating = True

    Prompt = "Отметьте диапазон мышкой"
    Title = "Выбор диапазона печати"

    On Error Resume Next

    Set UserRange = Application.InputBox(Prompt:=Prompt, Title:=Title, Default:=Selection.Address, Type:=8)

    On Error GoTo 0

    If Not (UserRa nge Is Nothing) Then
    ' UserRange.Select ' Если надо выделить после работы макроса отмеченный диапазон, убрать ' (комментарий)

    ActiveSheet.PageSetup.PrintArea = UserRange.Address

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    ActiveSheet.PageSetup.PrintArea = ""
    End If

    End Sub
    В макросе явно прописано наименование заданного листа. Считаю, что организовывать дополнительно его ручной ввод нерациональным (хотя, по идее, труда не представляет этот ручной ввод сделать с проверкой наличия этого листа - если надо, пишите, доработаю).

    При запуске макроса он выбирает заданный лист, останавливается для ввода диапазона ячеек для печати (выбор производится мышкой), печатает указанный диапазон, отменяет диапазон печати.

    Вроде бы ответил на вопрос в точности, как он поставлен
    -----
    Нет времени на медленные танцы

    Ответ отправил: Megaloman, Профессионал
    Ответ отправлен: 23.04.2010, 21:40
    Номер ответа: 260983

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260983 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное