Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Печать листа из надстройки
 
Всем привет.

Вопрос теоретический (а то приложишь файл - начнете вместо меня код писать :D ).

Сделал я себе файл с двумя листами. Один с печатной формой, второй с данными. В нем две User-формы, которые модифицируют печатную форму и расставляют введенные данные. Пока файл в формате .xlsm все отлично работает. Формы довольно часто используемые, поэтому решил вынести их в надстройку, чтобы на ленте любой книги клацнуть кнопку, ввести данные и напечатать.

Скомпилировал проект, сохранил как надстройку, поправил ленту, добавил кнопки, подключил надстройку.
И вот тут появилась проблема - все работает ровно до WorkSheet.PrintOut. Ошибка на картинке, одинаковая для .PrintOut и .PrintPreview.

В сети и книгах довольно мало информации о работе с надстройками, в основном рассматривают надстройки с функциями и добавление на ленту простых процедур.

Отсюда вопросы:
- В чем может быть причина этой ошибки?
- Может кто знает литературу по теме? Желательно на английском, как я заметил, переводчики либо не знают темы, либо знают ее, максимум, поверхностно.
Установка изображения, которое находится в книге на одном из листов, в Header/Footer нового листа
 
Добрый вечер,

Снова обращаюсь с вопросом (хотя уже гораздо реже  :) ).
Суть задачи:
Есть книга с данными, при нажатии на кнопку создается новый лист, в Header которого нужно вставить картинку другого листа в этой же книге.
Вопрос:
Можно ли как-то обойтись без экспорта картинки в файл, добавления ее в Header и, собственно, последующего ее удаления из директории?
Изменено: Vitaliy P - 12.06.2017 20:10:19 (обновил файл)
Ускорение обработки книги большого размера
 
Добрый вечер друзья, столкнулся с проблемой открытия книги большого размера - в ней есть с десяток листов, в которых на все 65к строк протянуто какое-то форматирование, и на одном, или нескольких, еще и графические объекты (тоже на все строки). Общий вес файла - ~29 мб, и открывается он порядочное время.
Написал небольшой фиксер (во вложении), но и он справляется за 2 - 3 минуты.
Суть вопроса - можно ли как-то открывать книгу в, так сказать, фоновом режиме, чтобы ускорить обработку и удаление лишнего контента?
Сам "толстый" файл не прикладываю, ибо конфиденциальная информация и размер.

Ну и комментарии по поводу оптимизации кода тоже с удовольствием прочту)
Изменено: Vitaliy P - 04.05.2017 07:28:35
Передача данных из UserForm в другую
 
Добрый день,

Есть документ, в нем формы Info и List.
Форма Info отображает информацию из определенных ячеек определенного листа.
В форме List две CommandButtons, которыми я бы хотел вызывать форму Info, так, что бы на основании названия кнопки форма Info понимала на какой лист обращатся.
В прикрепленном файле мои мысли. Суть такая - при нажатии на кнопку одному из Labels в форме Info присваивается имя кнопки, чтобы потом форма Info при инициализации могла обратится к своему Label'у. Код формы Info закомменчен, потому что выдает ошибку runtime error 9 subscript out of range. Где я ошибаюсь?

В оригинале - таких кнопок больше 200, скопировать код для кнопки, заменяя их номера, еще можно, но под каждую кнопку делать отдельную форму - совсем напряжно.

Public переменные тоже не подходят.
Изменено: Vitaliy P - 17.01.2017 18:03:19 (Вопрос решил, файл обновил, тему можно закрывать)
Замена символов во всех TextBox'ах одной UserForm'ы
 
Добрый день,

Подобные темы уже обсуждались, но не нашел ответа на вопрос - в случае, если в форме много TextBox'ов, можно ли произвести замену с помощью, например, CommandButton в той же форме?

Или нужно отдельно для каждого бокса писать
Код
Private Sub TextBoxИмя_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = Asc("символ") Then KeyAscii = Asc("символ")
End Sub
В моем примере нужно менять точку на запятую для суммирования, есть ли возможность в кнопку "Считать" добавить замену символов во всех TextBox'ах? Или, все-таки, писать для каждого отдельно?
Событиe Change: проверка значений в ячейках
 
Добрый день.

Опять нужна помощь. Нужно сделать следующее: при одновременном заполнении ячеек А1 и А2 должно вылететь окошко с сообщением, что этого нельзя делать. При заполнении ячеек отдельно сообщения не должно быть.
Если я правильно понял, событие Change определяет все изменения, не зависимо от того, заполнена первая ячейка, вторая, или обе сразу, и не подходит для этой задачи? Посоветуйте, что можно использовать.
Спасибо.
Как вывести в окошко сообщения список пустых ячеек из определенного диапазона?
 
Добрый вечер,
Только начал разбираться в VBA, поэтому нужна помощь. Есть документ, в котором нужно заполнить обязательные ячейки перед печатью. Написал такой код:
Код
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If [OR(D12="",F14="",L14="",I15="",K15="",M15="",G16="",G20="",D23="",H30="",B31="",C38="",G38="",K38="")] Then
        MsgBox "Заполнены не все обязательные поля!" & vbCrLf & "" & vbCrLf & "" & vbCrLf & "" & vbCrLf & "'Нажми Ок для продожения.", , "Ошибка!"
        Cancel = True
    End If
End Sub
В принципе, работает все как надо, но хотелось бы сделать так, чтобы окно сообщения показывало какие именно ячейки не заполнены. При этом, также нужно, чтобы ячейки выводились с определенным названием, а не ссылкой на них. Например, чтобы сообщение было не "Не заполнены поля: С13, С16", а "Не заполнены поля: имя, фамилия".
Возможно сделать такое?
Страницы: 1
Loading...