【发布时间】:2017-04-18 06:49:48
【问题描述】:
我正在编写一个宏来创建唯一的用户名,方法是根据用户名的唯一性加入名字和姓氏的首字母。
例如:
有 3 个名字:
- ABCD, 2.ABCD, 3.ABCD
还有 3 个姓氏:
- QWER、2.QWER、3.QWER。
用户名应该是:
- ABCDQ@somewhere.com、2.ABCDQW@somewhere.com、3.ABCDQWE@somewhere.com。
为此,我在 VBA 上编写了以下代码,
Sub Create_User_Name()
Dim fName As String
Dim lName As String
Dim uName As String
Dim eMail As String
Dim preFname As String
Dim preLname As String
Dim preUname As String
Dim fNameCol As Integer
Dim fNameRow As Integer
Dim lNameCol As Integer
Dim lNameRow As Integer
Dim rowNumber As Integer
Dim leftVal As Integer
'For loop starting here to increment row number
For rowNumber = 2 To 7802
fNameCol = 1
fNameRow = rowNumber
lNameCol = 2
lNameRow = rowNumber
fName = Worksheets("Sheet1").Cells(fNameRow, fNameCol)
lName = Worksheets("Sheet1").Cells(lNameRow, lNameCol)
preFname = Worksheets("Sheet1").Cells(fNameRow - 1, fNameCol)
preLname = Worksheets("Sheet1").Cells(lNameRow - 1, lNameCol)
eMail = "" & "somewhere.com"
leftVal = 1
uName = fName + Left(lName, leftVal) + "@" + eMail
preUname = preFname + Left(preLname, leftVal) + "@" + eMail
If UCase(uName) = UCase(preUname) Then
Do While uName = preUname
uName = fName + Left(lName, leftVal) + "@" + eMail
preUname = preFname + Left(preLname, leftVal) + "@" + eMail
leftVal = leftVal + 1
rowNumber = rowNumber + 1
Loop
uName = fName + Left(lName, leftVal) + "@" + eMail
preUname = preFname + Left(preLname, leftVal) + "@" + eMail
Worksheets("Sheet1").Cells(rowNumber, 3).Value = uName
Else
Worksheets("Sheet1").Cells(rowNumber, 3).Value = uName
End If
Next rowNumber
End Sub
它没有按我的意愿工作。感谢您对此的帮助。
【问题讨论】:
-
“它没有按我的意愿工作”是一个通用的问题描述,适用于任何问题。请更具体:告诉我们您假装您的代码应该做什么以及它实际上做什么。