Иногда вам может понадобиться Excel для создания уникального номера для ваших листов. Например, вы можете использовать Excel для создания таких форм, как invoice s, выписок или листов отслеживания, и вам нужны уникальные номера для каждой формы ( Я буду называть это _ номером билета_). Это, конечно, означает, что Excel необходимо запоминать число от одного сеанса к другому.

Есть несколько способов решить эту проблему. Если числа не обязательно должны быть последовательными, вы можете создать номер билета в секундах на основе текущего времени дня. К объекту ThisWorksheet можно добавить следующий макрос:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim lTicket As Long     lTicket = CLng(Time  24  60 * 60)

Sh.Range("A1") = lTicket End Sub

Макрос запускается каждый раз, когда в книгу добавляется новый лист. Он берет текущее время, преобразует его в целое число секунд, а затем помещает это значение в ячейку A1. Вероятность дублирования номеров билетов в течение любого дня мала, но со временем это может произойти. (Например, если вы создали заявку сегодня в то же время, что и вчера или на прошлой неделе.)

Чтобы обойти эту проблему, вы можете создать номер билета следующим образом:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim sTemp As String     sTemp = Format(Date, "yymmdd") & Format(Time, "hhmmss")

Sh.Range("A1") = sTemp End Sub

Эта версия обработчика событий создает номер билета на основе даты и времени. Если вы не создаете билеты очень быстро, этот подход должен уменьшить вероятность дублирования чисел, генерируемых макросом.

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

  1. Выберите «Имя» в меню «Вставка», затем выберите «Определить». Excel отображает диалоговое окно «Определить имя». (См. Рис. 1.)

  2. В поле Имя введите имя, например MaxNum.

  3. В области «Ссылается на» в нижней части диалогового окна введите знак равенства, за которым следует значение, которое вы хотите использовать для следующего номера билета.

  4. Щелкните ОК. Новое имя сохраняется в книге.

Теперь добавьте следующий макрос к объекту ThisWorksheet в редакторе VBA:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim iMax As Integer     iMax = Mid(ThisWorkbook.Names("MaxNum"), 2)

Sh.Range("A1") = iMax     iMax = iMax + 1     ThisWorkbook.Names("MaxNum").RefersTo = "=" & iMax End Sub

Этот макрос выполняется каждый раз, когда вы вставляете новый лист в книгу. Он извлекает значение, которое вы сохранили в MaxNum, помещает это значение в ячейку A1 нового рабочего листа, а затем увеличивает то, что хранится в MaxNum.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3336) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

link: / excelribbon-Generating_Unique_Numbers_for_Worksheets [Создание уникальных номеров для рабочих листов].