Создание уникальных номеров для листов (Microsoft Excel)
Иногда вам может понадобиться 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
Эта версия обработчика событий создает номер билета на основе даты и времени. Если вы не создаете билеты очень быстро, этот подход должен уменьшить вероятность дублирования чисел, генерируемых макросом.
Если числа должны быть последовательными в текущей книге, то вы можете определить имя, которое содержит текущее высокое значение номера вашего билета, а затем макрос, который помещает это число в ячейку на новом листе и увеличивает значение сохраненного число. Для начала выполните следующие действия:
-
Выберите «Имя» в меню «Вставка», затем выберите «Определить». Excel отображает диалоговое окно «Определить имя». (См. Рис. 1.)
-
В поле Имя введите имя, например MaxNum.
-
В области «Ссылается на» в нижней части диалогового окна введите знак равенства, за которым следует значение, которое вы хотите использовать для следующего номера билета.
-
Щелкните ОК. Новое имя сохраняется в книге.
Теперь добавьте следующий макрос к объекту 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 [Создание уникальных номеров для рабочих листов]
.