گاهی اوقات ممکن است برای ایجاد یک عدد منحصر به فرد برای کاربرگ های خود به اکسل نیاز داشته باشید. به عنوان مثال، می توانید از اکسل برای ایجاد فرم هایی مانند صورت حساب، صورت حساب، یا برگه های ردیابی استفاده کنید، و برای هر فرم به شماره های منحصربه فرد نیاز دارید (این را شماره بلیط می نامیم). این البته به این معنی است که اکسل باید شماره را از یک جلسه به جلسه دیگر به خاطر بسپارد.
چند راه برای حل این مشکل وجود دارد. اگر اعداد نیازی به پشت سر هم بودن ندارند، می توانید یک شماره بلیط بر اساس زمان فعلی روز، در چند ثانیه ایجاد کنید. ماکرو زیر را می توان به شی 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. کادر محاوره ای New Name.
- تب Formulas روبان را نمایش دهید.
- روی ابزار Define Name در گروه Defined Names کلیک کنید. اکسل کادر محاوره ای New Name را نمایش می دهد. (شکل 1 را ببینید.)
- در کادر Name نامی مانند MaxNum وارد کنید.
- در قسمت Refers To در پایین کادر محاوره ای، یک علامت مساوی و به دنبال آن مقداری که می خواهید برای شماره بلیط بعدی استفاده شود وارد کنید.
- روی OK کلیک کنید. نام جدید در ورک بوک ذخیره می شود.
اکنون ماکرو زیر را به شی 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 را افزایش می دهد.