0
シート上の範囲(「Sheet2」)に表示されるExcelマクロがあり、これがVBコードでログオンしたユーザー名と一致する場合、後半。一部のユーザーにとって、これは機能し、他のユーザーにとっては機能しません。すべての名前を取得していないVBコードのユーザー名にログオンしました
一部のユーザーが実行できない理由がわかりません。
一部のユーザーがWindows 7であり、一部では、Windows 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)
まず、あなたはあなたはそれが正確に何が起こるか一部のユーザーのために動作しませんと言う出口Do.Whenでループを行う終了することができますGoToステートメントを使用する必要はありませんか? –
ユーザーには、「指定した人だけが完了できるように、終了日を確定する権限がありません」というメッセージが表示されます。それは動作しません。 – tbolge74
他のユーザーには何が起こるのですか?他のユーザーのmsgboxが表示されている場合、両方の値が一致していないことを意味します。msgbox文 '&UserName'に1行追加してください。 –