ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Direction of entry to a cell (https://www.excelbanter.com/excel-programming/422082-direction-entry-cell.html)

nathan_savidge

Direction of entry to a cell
 
Hi,

I am using the worksheet.selectionchange to skip a column of data, so if the
user enters the column (with a calculation in that is not to be changed) the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from? So
i can do +1 or -1 based on this.

TIA

Nathan.

Harald Staff[_2_]

Direction of entry to a cell
 
Hi Nathan

Why don't you simply lock the column and protect the sheet so that the
column can't be selected ?

Otherwise, sure, just compare to the previous target:

' *********** top of module ****************
Dim PrevTarget As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not PrevTarget Is Nothing Then
If Target(1).Column PrevTarget(1).Column Then
Application.StatusBar = "-"
ElseIf Target(1).Column < PrevTarget(1).Column Then
Application.StatusBar = "<-"
Else
Application.StatusBar = "-"
End If
End If
Set PrevTarget = Target
End Sub

Now look in Excels lower left corner when arrowing around.

HTH. Best wishes Harald

"nathan_savidge" wrote in message
...
Hi,

I am using the worksheet.selectionchange to skip a column of data, so if
the
user enters the column (with a calculation in that is not to be changed)
the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from?
So
i can do +1 or -1 based on this.

TIA

Nathan.



Gary''s Student

Direction of entry to a cell
 
Good question, we just need to remember which side of the "protected" column
we came from:

Dim oldcolumn As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsEmpty(oldcolumn) Then
Else
t = Target.Column
If t = 4 Then
Application.EnableEvents = False
If oldcolumn = 4 Then
Target.Offset(0, -1).Select
Else
Target.Offset(0, 1).Select
End If
Application.EnableEvents = True
End If
End If
oldcolumn = ActiveCell.Column
End Sub

This avoids selecting a cell of column D. If we try to get to column D from
the right of column D, we end up in column C.

If we try to get to column D from the left of column D, we end up in column E.
--
Gary''s Student - gsnu200824


"nathan_savidge" wrote:

Hi,

I am using the worksheet.selectionchange to skip a column of data, so if the
user enters the column (with a calculation in that is not to be changed) the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from? So
i can do +1 or -1 based on this.

TIA

Nathan.


Harald Staff[_2_]

Direction of entry to a cell
 
Note that Target can be multiple cells, like selecting aan area or a whole
row. If so
Target.Column
will err. I like to use Target(1) in those cases, which points to the upper
left cell in Target. But more sophisticated error handlers may be required
in more complex tasks.

Best wishes Harald


"Gary''s Student" wrote in message
...
Good question, we just need to remember which side of the "protected"
column
we came from:

Dim oldcolumn As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsEmpty(oldcolumn) Then
Else
t = Target.Column
If t = 4 Then
Application.EnableEvents = False
If oldcolumn = 4 Then
Target.Offset(0, -1).Select
Else
Target.Offset(0, 1).Select
End If
Application.EnableEvents = True
End If
End If
oldcolumn = ActiveCell.Column
End Sub

This avoids selecting a cell of column D. If we try to get to column D
from
the right of column D, we end up in column C.

If we try to get to column D from the left of column D, we end up in
column E.
--
Gary''s Student - gsnu200824


"nathan_savidge" wrote:

Hi,

I am using the worksheet.selectionchange to skip a column of data, so if
the
user enters the column (with a calculation in that is not to be changed)
the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from?
So
i can do +1 or -1 based on this.

TIA

Nathan.



Gary''s Student

Direction of entry to a cell
 
Thanks.
This is very useful advice.
--
Gary''s Student - gsnu200824


"Harald Staff" wrote:

Note that Target can be multiple cells, like selecting aan area or a whole
row. If so
Target.Column
will err. I like to use Target(1) in those cases, which points to the upper
left cell in Target. But more sophisticated error handlers may be required
in more complex tasks.

Best wishes Harald


"Gary''s Student" wrote in message
...
Good question, we just need to remember which side of the "protected"
column
we came from:

Dim oldcolumn As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsEmpty(oldcolumn) Then
Else
t = Target.Column
If t = 4 Then
Application.EnableEvents = False
If oldcolumn = 4 Then
Target.Offset(0, -1).Select
Else
Target.Offset(0, 1).Select
End If
Application.EnableEvents = True
End If
End If
oldcolumn = ActiveCell.Column
End Sub

This avoids selecting a cell of column D. If we try to get to column D
from
the right of column D, we end up in column C.

If we try to get to column D from the left of column D, we end up in
column E.
--
Gary''s Student - gsnu200824


"nathan_savidge" wrote:

Hi,

I am using the worksheet.selectionchange to skip a column of data, so if
the
user enters the column (with a calculation in that is not to be changed)
the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from?
So
i can do +1 or -1 based on this.

TIA

Nathan.




nathan_savidge

Direction of entry to a cell
 
Many thanks

"Harald Staff" wrote:

Hi Nathan

Why don't you simply lock the column and protect the sheet so that the
column can't be selected ?

Otherwise, sure, just compare to the previous target:

' *********** top of module ****************
Dim PrevTarget As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not PrevTarget Is Nothing Then
If Target(1).Column PrevTarget(1).Column Then
Application.StatusBar = "-"
ElseIf Target(1).Column < PrevTarget(1).Column Then
Application.StatusBar = "<-"
Else
Application.StatusBar = "-"
End If
End If
Set PrevTarget = Target
End Sub

Now look in Excels lower left corner when arrowing around.

HTH. Best wishes Harald

"nathan_savidge" wrote in message
...
Hi,

I am using the worksheet.selectionchange to skip a column of data, so if
the
user enters the column (with a calculation in that is not to be changed)
the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from?
So
i can do +1 or -1 based on this.

TIA

Nathan.




nathan_savidge

Direction of entry to a cell
 
Many thanks

"Gary''s Student" wrote:

Good question, we just need to remember which side of the "protected" column
we came from:

Dim oldcolumn As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsEmpty(oldcolumn) Then
Else
t = Target.Column
If t = 4 Then
Application.EnableEvents = False
If oldcolumn = 4 Then
Target.Offset(0, -1).Select
Else
Target.Offset(0, 1).Select
End If
Application.EnableEvents = True
End If
End If
oldcolumn = ActiveCell.Column
End Sub

This avoids selecting a cell of column D. If we try to get to column D from
the right of column D, we end up in column C.

If we try to get to column D from the left of column D, we end up in column E.
--
Gary''s Student - gsnu200824


"nathan_savidge" wrote:

Hi,

I am using the worksheet.selectionchange to skip a column of data, so if the
user enters the column (with a calculation in that is not to be changed) the
column after is selected, cells(target.row,target.column+1). This works
fine, from left to right, but from right to left, it just sticks at the
column you were in.

Is there a way of determining the direction that a cell is entered from? So
i can do +1 or -1 based on this.

TIA

Nathan.



All times are GMT +1. The time now is 07:53 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com