Счетчик в Excel

Мой файл содержит 50 листов, каждый из которых является стандартной формой. Позволяет использовать имя Form1, Form2, Form3.

Я хочу создать лист печати, где я выбираю, какую форму я хочу видеть, так что мне не нужно перемещаться между листами, чтобы найти нужную. И я хочу иметь счетчик в этом листе печати, который он рассчитывает каждый раз, когда я отправляю на принтер.

Что я сделал до сих пор? Я создал эту формулу, где M1 – раскрывающийся список с именами форм. Поэтому, если я хочу видеть Form2, я выбираю Form2 в раскрывающемся списке, а формула отображает весь лист Form2.

=IF($M$1="Form1";IF('Form1'!A1="";"";'Form1'!A1);"")&IF($M$1="Form2";IF('Form2'!A1="";"";'Form2'!A1);"")&IF($M$1="Form3";IF('Form3'!A1="";"";'Form3'!A1);"") 

Он работает нормально, потому что все формы стандартизированы.

После выбора выбранной формы мне нужно вставить идентификационный номер из моей компании, а затем распечатать его.

Я хотел бы знать, можно ли создать счетчик на этом листе, который подсчитывает, сколько раз я печатал … Или что-нибудь, что можно было бы подсчитать в хронологическом порядке, когда я что-то сберегу или что-нибудь изменим …

Все ваши запросы могут быть размещены. Но только с помощью VBA я боюсь.

Сохраните раскрывающийся список, но также добавьте кнопку, которая запускает макрос.

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

Чтобы подсчитать количество сохранений, вам понадобится макрос, который перед функцией_сохранения. Вам нужно искать это, я думаю, что на моем блоге может быть даже статья об этом, не помню, прошло несколько лет с тех пор, как я это сделал. Принцип совпадает с предыдущим макросом, поскольку вы просто добавляете 1 в соответствующую ячейку.

Несколько более чистый способ создания «листа печати», который отображает содержимое одного из других 50 листов, – установить ячейку A1 на

 =INDIRECT($M$1 & "!A1") 

Который строит текстовую строку, которая выглядит как квалифицированное имя ячейки, которую вы хотите видеть, а затем использует функцию INDIRECT() для удаления ссылки на эту строку (т. Е. Для обработки ее как адреса ячейки и получения содержимого Идентифицированная клетка). При этом вам не нужно будет менять формулу (ы) при добавлении Form51 . Предупреждения:

  • Это может заставить Excel выполнить большую работу (т. Е. Потратить много времени) «перерасчета» этих косвенных ячеек всякий раз, когда что-либо изменяется (а не только M1 ). Я не уверен, будет ли это хуже, чем у вас сейчас.
  • Обязательно избегайте соблазна изменить данные или ввести новые данные в «лист печати», если вы хотите обновить Form42 . (Конечно, у вас есть этот вопрос сейчас.) Вы можете защитить себя от таких аварий, защитив лист печати.

Существуют и другие способы построения листа печати; Например, используя VBA для

  • Создайте пользовательскую функцию, которая может заменить вызов INDIRECT() , но работать более плавно или
  • Фактически копируйте все данные из Form nn в лист печати всякий раз, когда вы меняете M1 .

Вы можете подсчитать изменения, написав процедуру Worksheet_Change VBA.

Я не знаю, как логика листа могла бы рассчитывать / обнаруживать, когда вы печатаете ее. Однако вы можете добиться желаемого эффекта, написав процедуру печати в VBA.

 PrintOut , , , True 

Заявление распечатает лист для вас; Добавьте любые другие действия, которые вы хотите (например, увеличивая счетчик). (Вы просто должны помнить, чтобы печатать с использованием этого макроса .) Четвертый параметр PrintOutPreview , установите значение True чтобы Microsoft Excel вызывал предварительный просмотр печати перед печатью листа (таким образом давая вам возможность отменить) или False (или опущен) Чтобы распечатать лист немедленно, безоговорочно.

См. Как добавить VBA в MS Office? Для информации, ну, вы знаете.

  • Как создать динамически растущий граф, который игнорирует пустые хвостовые ячейки?
  • Построение множества наборов данных разной длины на одном и том же графе рассеяния в Excel 2010
  • Как я могу заставить «Calculated Columns» работать в excel?
  • Проблемы с макросами Excel 2010
  • Показывать временную метку при изменении ячейки
  • Как я могу использовать несколько сводных таблиц на одном листе без ошибки перекрытия?
  • График рассеяния Excel с ярлыками
  • Оставляя пробел ячейки в Excel до ввода данных
  • Как я могу выполнить эту функцию с помощью VBA в excel?
  • Объединить строки Excel с двух листов
  • Как контролировать импорт CSV в Excel 2010
  • Давайте будем гением компьютера.