Есть ли способ, которым я могу сгенерировать уникальный номер в коде? У меня была идея использовать системное время для этого, но в итоге не смогла его реализовать.VBA - генерация уникальных номеров в коде
ответ
Вы можете нам теперь() форматировать вывод на число.
Sub unique()
Dim t As Date
t = Now()
Range("A1").NumberFormat = "@"
Range("A1") = CStr(Format(t, "yyyymmddhhMMss"))
End Sub
Это было бы уникально.
Как @Vasily указал, не форматируя ячейку как строку и помещая ее в качестве укуса, значение усекается до научной нотации.
Я думаю, что лучше 'Cstr (Format (now()," yyyymmddhhMMssms "))' – Vasily
@Vasily OP явно попросил номер. 'Format (now()," yyyymmddhhMMssms ")' является строкой, а оболочка 'Cstr()' не нужна. –
Я имею в виду, что если вы будете увеличивать диапазон цифр для уникального идентификатора 'CDbl' с форматом' 'yyyymmddhhMMssms'', он вернет' number + 16', VBA не имеет 'bigint' (например, как в SQL Server) , поэтому мое предложение состояло в том, чтобы использовать строку вместо номера. Не имеет значения число или строка в случае, если идентификатор уникален. – Vasily
специально для таких случаев был изобретен GUID (глобальный уникальный идентификатор). Это может быть немного слишком большим ... но только что вы видели:
Option Explicit
Public Type TYP_GUID
bytes(15) As Byte
End Type
Public Declare Function CoCreateGuid Lib "OLE32.dll" _
(guid As TYP_GUID) As Long
Public Function newGUID() As TYP_GUID
Dim uGUID As TYP_GUID
CoCreateGuid uGUID
newGUID = uGUID
End Function
всякий раз, когда вы звоните newGUID() вы станете значением, которое должно быть действительно уникальным в мире. Вы можете попробовать и назвать его так часто, как хотите ... вы никогда не получите такое же значение во второй раз.
это также можно преобразовать такие GUID, чтобы строка:
Option Explicit
Public Type TYP_GUID
bytes(15) As Byte
End Type
Public Declare Function CoCreateGuid Lib "OLE32.dll" _
(guid As TYP_GUID) As Long
Public Declare Function StringFromGUID2 Lib "OLE32.dll" _
(guid As TYP_GUID, _
ByVal lpszString As String, _
ByVal iMax As Long) As Long
Public Function newGUID() As TYP_GUID
Dim uGUID As TYP_GUID
CoCreateGuid uGUID
newGUID = uGUID
End Function
Public Function newGUID_String() As String
Dim sBuffer As String
Dim lResult As Long
sBuffer = VBA.Space(78)
lResult = StringFromGUID2(newGUID, sBuffer, Len(sBuffer))
newGUID_String = Left$(StrConv(sBuffer, vbFromUnicode), lResult - 1)
End Function
- 1. Генерация идентификационных номеров
- 2. Создание уникальных номеров
- 3. Обнаружение частоты уникальных номеров
- 4. Генерация уникальных UIButton теги
- 5. Печать уникальных номеров
- 6. Создание уникальных номеров в ActionScript
- 7. Генерация Unsorted уникальных данных C++
- 8. Создание уникальных стратегий ссылочных номеров
- 9. Генерация повторяющихся уникальных имен ограничений
- 10. Создание уникальных номеров для отслеживания
- 11. Генерация случайных и уникальных подмножеств
- 12. Лучший способ генерации уникальных номеров и номеров в Oracle
- 13. Сравнение номеров в пакетном коде
- 14. Генерация HTML в коде JS
- 15. Генерация п уникальных имен с R
- 16. Генерация номеров вампиров в свободном диапазоне
- 17. Обеспечение уникальных серийных номеров в сеансе Hibernate
- 18. Возвращение числа уникальных номеров в отсортированном массиве
- 19. Извлечение уникальных номеров из строки в R
- 20. Обновление номеров страниц в VBA
- 21. Добавить уникальный идентификатор в список номеров - VBA
- 22. Android DDMS для отображения уникальных номеров устройств
- 23. Извлечь список уникальных номеров из строки чисел
- 24. Генерация буквенно-цифровых идентификаторов (уникальных строк)
- 25. Как использовать SEQUENCE для вставки уникальных номеров?
- 26. Генерация уникальных чисел java случайным образом
- 27. Создать большую случайную последовательность уникальных номеров
- 28. Python: Генерация всех парильно-уникальных спалов
- 29. Создать список уникальных номеров, применяя транзитивное замыкание
- 30. Получить X уникальных номеров из набора
сколько цифр и нужно? –
В чем заключен контекст? Этот код генерирует уникальные значения до завершения? Или он работает по расписанию/с перерывами и ему нужно генерировать уникальные значения в любое время? Если он работает непрерывно до завершения, например, просто сгенерируйте переменную и увеличивайте ее на 1 каждый раз, когда вам понадобится новый. Не могли бы вы использовать скрытый рабочий лист и использовать определенную ячейку, которую вы увеличиваете каждый раз, когда вам нужен новый номер? – user3476534