[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 204
  • Last Modified:

CODE in ColumnB execute only when maybe Enter key is pressed while in columnB

EXCEL 2003 VBA

Maybe I have this code in the wrong place ?

But I do not want this code to be executed from Column B unless the Enter key been pressed..

ie...
 person is in column B

maybe use  key combination  Shift+Enter  keys ?

Thanks
fordraiders



Private Sub Worksheet_Change(ByVal target As Range)
' looking for manual data entry
'  Application.ScreenUpdating = False
'  Application.EnableEvents = True

Dim blnValid As Boolean
Dim objCell As Range
Dim targ As Range
Dim targ2 As Range


ONLY PROCEED IF  B and Q are not both blank
Set targ = Union([B:B], [Q2:Q65536])
If Intersect(target, targ) Is Nothing Then Exit Sub


 
 If ActiveCell.Column <> 17 Then 'Column O

 ' looking for manual entry  01-06-2006 column A only
   Dim Result As String
   Set targ = Intersect(target, [B:B])
   If Not targ Is Nothing Then
   'check for other things
   ' This is for Column A
       If targ.Cells.Count = 1 Then
           If targ.Value <> "" Then
             'we are in the entry column
             Result = GetData(targ)
             AltSearch
             GreenAltSearch
             ParentSearch
             If Result <> "" Then
               MsgBox Result
             End If
           End If
       End If
   End If
   
   
 End If
'=================================================

If ActiveCell.Column = 17 Then 'Column q
 'Is in column q
' looking for manual entry  01-06-2006 column O only
   Dim Result2 As String
   Set targ2 = Intersect(target, [Q:Q])
   If Not targ2 Is Nothing Then
   'check for other things
   ' This is for Column O
       If targ2.Cells.Count = 1 Then
         If targ2.Value <> "" Then
             'we are in the entry column
             Result2 = GetDataWwg(targ2)
             AltSearch
             GreenAltSearch
             ParentSearch
              
              If Result2 <> "" Then
               MsgBox Result2
             End If
           End If
       End If
   End If
Else
 'Is not in column O
End If
'=================================================
Err_Worksheet_Change:
'  On Error GoTo 0
  Application.EnableEvents = True
  Application.ScreenUpdating = True
  
  
  
End Sub

Open in new window

0
Fordraiders
Asked:
Fordraiders
  • 4
  • 3
1 Solution
 
Rory ArchibaldCommented:
Can I ask why it matters if they use the Enter key rather than say the Tab key to enter the data? Or do you literally want to trap the Enter key even if they don't change anything?
0
 
FordraidersAuthor Commented:
becaue is they type something for a change in the cell I do not always want the code to execute...
0
 
Rory ArchibaldCommented:
Then I would move the code to a separate routine, and use the SelectionChange event to hook the Shift+Enter key combo with Application.Onkey:
Sub KeyHook()
    Application.OnKey "+~", "macro_name"
End Sub
Sub KeyUnhook()
    Application.OnKey "+~"
End Sub

Open in new window


then in the worksheet:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 2 Then
        KeyHook
    Else
        KeyUnhook
    End If
End Sub

Open in new window


You will also want to use the Workbook_Activate and Deactivate events to hook/unhook if the cursor is in column B on the right sheet.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
FordraidersAuthor Commented:
rorya, Could I also add if" sheet1" is not selected don't do this at all ?
Sheets("sheet1").Activate
0
 
Rory ArchibaldCommented:
Yes - in the Workbook (as opposed to worksheet) events, you can use something like:
If activesheet.name = "Sheet1" Then

Open in new window

0
 
FordraidersAuthor Commented:
rorya, This causes other problems, if I move the code out ...then I have to pass my "target" as range down the procedures?

' looking for manual entry  01-06-2006 column b
   Dim Result As String
   Set targ = Intersect(target, [B:B])


Sub KeyHook(ByVal target as Range)
    Application.OnKey "+~", "macro_name(target)"
End Sub





Sub KeyHook(ByVal target As Range)
     target = target
    Application.OnKey "+~", "mfSearchResult, target"
End Sub
Sub KeyUnhook()
    Application.OnKey "+~"
End Sub
0
 
FordraidersAuthor Commented:
ok, I just set a new target on active sheet and set the active cell so the intersecrt could work..does ok still testing...Thanks a bunch
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

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