• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 852
  • Last Modified:

"Send Keys" Error

What is the best code to replace the "Send Keys" code error.
This seems to have something to do with the operating systems User Account Control (UAC). Turning off/disabling  UAC could be bad and I assume that disabling UAC is not a solution. Any other ideas anyone?

Problem:
A user enters a wrong data type in a text field, and the "Before Update code verify the data and informs the user that wrong type of data was entered. Upon clicking the "ok" button of the msgbox dialog box, another error popup up.

Run-Time Error '70':
"Permission denied"

debug highlighted...
SendKeys Chr(27) & Chr(27)  

form this code....
' ******
Private Sub BldgDisttxt_BeforeUpdate(Cancel As Integer) '<====
Dim sError As String
Dim sMinValueCheck As String
Dim sMaxValueCheck As String
Dim bAllowFractions As Boolean
Dim bAllowX As Boolean

    sMinValueCheck = ">=0"
    sMaxValueCheck = "<=400"
    bAllowFractions = True
    bAllowX = False
    BldgDisttxtNewValue = VerifyValue(Nz(Me!BldgDisttxt.Value, ""), sError, sMinValueCheck, sMaxValueCheck, bAllowFractions, bAllowX)
   
    If BldgDisttxtNewValue = "" Then
        msgbox sError, vbInformation + vbOKOnly, "Invalid Value, press ESC twice to retry"
        SendKeys Chr(27) & Chr(27)                                  ' <==== Error Line
        'Me!BldgDisttxt.Undo
        Cancel = True
    End If
End Sub

Note:
I observed the "Send Keys" problem particularly when using Ms. Access 2003 in these operating systems:
Windows Vista, XP and Windows 2K - (if this would help).
0
billcute
Asked:
billcute
  • 2
1 Solution
 
MikeTooleCommented:
Chr(27)  is the Escape key. So the code appears to be trying to do what the message advises the user to do. Leave it out altogether and just use Cancel = True to cancel the update and return focus to the control

If BldgDisttxtNewValue = "" Then
        msgbox sError, vbInformation + vbOKOnly, "Invalid Value, press ESC twice to retry"
        Cancel = True
End If
0
 
billcuteAuthor Commented:
MikeToole:
Thanks
0
 
harfangCommented:
SendKeys is an unsafe expression, blocked in sandbox mode.

What you are really trying to do is undo the control (first Esc) and then undo the record (second Esc). This corresponds to:

    BldgDisttxt.Undo   ' provided it's a bound control
    Me.Undo    ' provided it's a bound form

Cheers!
(°v°)
0
 
billcuteAuthor Commented:
harfang
Thanks for additional the info. However...

     BldgDisttxt.Undo   ' It's not bounded
    Me.Undo    ' Form not bounded

data is pasted unto main form via the following..
Forms!frmMain!txtBldgDist = Me.BldgDisttxt

Regards
Bill
 
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now