0
我有一個Excel宏,它在工作表(名爲「Sheet2」)上查找範圍,如果它與使用VB代碼登錄的用戶名相匹配,它將運行下半場。對於一些用戶而言,這是有效的,對於其他用戶則不適用使用VB代碼登錄用戶名並不是所有名稱
我不明白是什麼原因是有些用戶無法運行它?
我有這樣的在開始我的功能,因爲有些用戶是Windows 7的,有些是窗口10(這是不是對誰可以運行與否的分歧)
#If Win64 Then
Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
#Else
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
#End If
實際的代碼,當用戶運行:
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Myrow = 0
blankrow = 0
Do Until Sheets("Sheet2").Range("A2").Offset(Myrow, 0) = ""
If Sheets("Sheet2").Range("A2").Offset(Myrow, 0) = UserName Then GoTo 1
Myrow = Myrow + 1
Loop
MsgBox "You are not authorised to finalise the end of day, only specified people can complete", vbCritical, "BBH Oversight"
Exit Sub
1
任何人都可以在導致差異的代碼中看到錯誤嗎?
This is the sheet its looks up (Sheet2)
首先,您不必使用GoTo語句,您可以退出使用Exit Do進行循環。當您說它對某些用戶不起作用時,會發生什麼? –
用戶看到以下消息:「您無權完成日期的結束,只有指定的人才能完成」。當它不起作用。 – tbolge74
其他用戶會發生什麼,如果您看到其他用戶的msgbox,則表示兩個值都不匹配。您可以嘗試在沒有單引號的msgbox語句'&UserName'中添加一行並查看它顯示的內容。 –