将此代码放在VB脚本
上Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ltr, rNum, AlphaLtrs, selLtr
If Not Intersect(Target, Me.Columns(2)) Is Nothing And _
Target.Cells.Count = 1 Then
If Target.Value = "" Then
AlphaLtrs = "ABCDEFGHIGKLMNOPQRSTUVWXYZ"
selLtr = Application.RoundUp(Rnd() * 26, 0)
ltr = Mid(AlphaLtrs, selLtr, 1)
rNum = Application.RoundUp(Rnd() * 999999, 0)
Target.Value = Me.Range("A" & Target.Row) & "-" & ltr & rNum
End If
End If
End Sub
我需要通过Access女士创建它,通常用于库存产品
Ms Access Table包含此字段
ID [Primary Key]
Product Title [Short text]
Type [Short text]
SKU [Short text]
Image Preview [Attachment]
Price [Number]
Availability [yes/No]
我需要的是SKU将自动为任何新产品生成密钥,唯一密钥,可以在插入新条目时通过表格上的按钮,或者可以是最初的新条目,密钥将与Excel代码相同,例如Z401374(字母数字)和一旦生成不能改变
答案 0 :(得分:1)
将其放入模块并运行它。你应该得到你需要的东西。
Sub test()
Dim s As String * 7 'fixed length string with 7 characters
Dim n As Integer
Dim ch As Integer 'the character
For n = 1 To Len(s) 'don't hardcode the length twice
Do
ch = Rnd() * 127 'This could be more efficient.
'48 is '0', 57 is '9', 65 is 'A', 90 is 'Z', 97 is 'a', 122 is 'z'.
Loop While ch < 48 Or ch > 57 And ch < 65 Or ch > 90 And ch < 97 Or ch > 122
Mid(s, n, 1) = Chr(ch) 'bit more efficient than concatenation
Next
Debug.Print s
End Sub
你可能需要做的就是在你的桌子上做一个INNER JOIN(或者从tblProducts WHERE SKU =上面生成的字符串中选择SELECT SKU),以确保它不会随机生成两次相同的字符串。最终,有足够的SKU,就会发生这种情况。如果是这样,只需重新运行发电机并再次测试,直到找不到匹配项,然后您就知道您有一个独特的SKU。