On 12 Jan., 22:15, Joanne <robj...@comcast.net> wrote:
> Hi again - glad to hear from you again
>
> I have stripped most of the frills from my code until I get what I
> consider the 'necessaries' working properly.
> But I just cannot get a handle on the sequence of events in Excel VBA.
>
> In my first proc, I go to the first user input box on my form when the
> ws first becomes active - it works just fine. But after leaving this
> cell, I want to goto cell B15. My syntax is:
> * * * * * * *Range("B15").Select *
> problem is I cannot figure out where to put this line of code to make it
> work as I expect it to. It is a user input cell, after input I want to
> tab to the next cell. Currently, I have this line as the first line of
> code in my ws_change event. It does put me in the cell, but after I do
> the data input, I have to tab 2 times to leave the cell. I have tried
> placing this line all over the place, but cannot get it to do as
> expected, which is become active immediately after leaving E10, allow
> user input, then tab to the next cell. I don't have the line in 2 places
> in my procedures, so why is it needing 2 tabbings to leave to the next
> cell? I suspect that my problem is because of this line
> * * * * acd = ActiveCell.Address
> but I'm not positive about this. If this line is causing my problem,
> then where do I put the B15.select line? *My of my, I am so confused!!
>
> Can you see why this is a problem? If you do, could you explain it to me
> to help me get an idea of how the sequence of events works in ws_change?
> Also, if I put the line in my ws selection_change event, then I cannot
> get out of the cell at all - what is that about??
>
> Option Explicit
>
> Public Sub Worksheet_Activate()
> * Range("E10").Activate
> End Sub
>
> Public Sub ClearShts()
> * *Sheet3.UsedRange.Clear
> * *Sheet1.Rows("15:65").SpecialCells(xlCellTypeConstants).ClearContents
> * *Sheet1.Range("E10").Value = ""
> End Sub
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Range("B15").Select
> Dim cell As Range
> Dim acd As Variant
> acd = ActiveCell.Address
> * * For Each cell In Sheets("KelloggInvoice").Range("C15:C65")
> * * If cell.Value > 0 Then
> * * cell.Offset(0, 1).Select
> * * If Selection.Value = "" Then
> * * Selection.Value = 65
> * * Else: If Selection.Value = 65 Then GoTo nxcell
> * * End If
> * * End If
> nxcell:
> * * Next cell
> * * Range(acd).Select
> End Sub
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If ActiveCell.Column >= 8 Then
> ActiveCell.Offset(1, -7).Select
> ActiveCell.Offset(0, 1).Select
> End If
> On Error GoTo Endw
> Endw:
> End Sub
>
> Thanks
> Joanne
Hi Joanne
If I understand your wishes, this is what you need.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("E10") Then Range("B15").Select
'Dim cell As Range
Dim acd As Variant
acd = ActiveCell.Address
For Each cell In Sheets("KelloggInvoice").Range("C15:C65")
If cell.Value > 0 Then
cell.Offset(0, 1).Select
If Selection.Value = "" Then
Selection.Value = 65
Else: If Selection.Value = 65 Then GoTo nxcell
End If
End If
nxcell:
Next cell
Range(acd).Select
End Sub
Regards,
Per
|