ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Change value of cell automatically if entered the wrong number (https://www.excelbanter.com/excel-worksheet-functions/185923-change-value-cell-automatically-if-entered-wrong-number.html)

Pair_of_Scissors

Change value of cell automatically if entered the wrong number
 
I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!

Mike H

Change value of cell automatically if entered the wrong number
 
Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!


Mike H

Change value of cell automatically if entered the wrong number
 
Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!


Pair_of_Scissors[_2_]

Change value of cell automatically if entered the wrong number
 
I'm gonna work with it, and will keep you updated.

Thanks Rody

"Mike H" wrote:

Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!


Pair_of_Scissors[_2_]

Change value of cell automatically if entered the wrong number
 
Hi Mike and other readers,

I can't get this thing to work somehow. I copied in an empty module, but get
several errors. I used to work with these thing 5 years ago, but all the
things I know are gone haha.

Anyway. I have created a simple sheet now, filled column A with 1-4. Went to
create a macro via the VBA-editor. Copied in your text. Is there something I
do wrong from the beginning?

Thnx
Rody

"Mike H" wrote:

Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!


Gord Dibben

Change value of cell automatically if entered the wrong number
 
What you have done wrong is to not read carefully.

Mike instructed you to right-click on the sheet tab and "View Code"

Copy/paste the event code into that sheet module.

Watch out for wordwrap.

The orphanned "Then" should be at the end of the line above.


Gord Dibben MS Excel MVP

On Mon, 5 May 2008 02:15:01 -0700, Pair_of_Scissors
wrote:

Hi Mike and other readers,

I can't get this thing to work somehow. I copied in an empty module, but get
several errors. I used to work with these thing 5 years ago, but all the
things I know are gone haha.

Anyway. I have created a simple sheet now, filled column A with 1-4. Went to
create a macro via the VBA-editor. Copied in your text. Is there something I
do wrong from the beginning?

Thnx
Rody

"Mike H" wrote:

Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!



Pair_of_Scissors[_2_]

Change value of cell automatically if entered the wrong number
 
That was the problem thanks! Thought I'd still how these things work, but
even forgot this... thanks anyway...

Am trying to get it work now for the active column at that moment, so when
column D is active, the same routine should be active. I think I have to
replace the a1-a100?

Any suggestions on how to do this?

"Gord Dibben" wrote:

What you have done wrong is to not read carefully.

Mike instructed you to right-click on the sheet tab and "View Code"

Copy/paste the event code into that sheet module.

Watch out for wordwrap.

The orphanned "Then" should be at the end of the line above.


Gord Dibben MS Excel MVP

On Mon, 5 May 2008 02:15:01 -0700, Pair_of_Scissors
wrote:

Hi Mike and other readers,

I can't get this thing to work somehow. I copied in an empty module, but get
several errors. I used to work with these thing 5 years ago, but all the
things I know are gone haha.

Anyway. I have created a simple sheet now, filled column A with 1-4. Went to
create a macro via the VBA-editor. Copied in your text. Is there something I
do wrong from the beginning?

Thnx
Rody

"Mike H" wrote:

Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!




Pair_of_Scissors[_2_]

Change value of cell automatically if entered the wrong number
 
Bump Anyone? Please? See text below!

That was the problem thanks! Thought I'd still how these things work, but
even forgot this... thanks anyway...

Am trying to get it work now for the active column at that moment, so when
column D is active, the same routine should be active. I think I have to
replace the a1-a100?

Any suggestions on how to do this?


"Gord Dibben" wrote:

What you have done wrong is to not read carefully.

Mike instructed you to right-click on the sheet tab and "View Code"

Copy/paste the event code into that sheet module.

Watch out for wordwrap.

The orphanned "Then" should be at the end of the line above.


Gord Dibben MS Excel MVP

On Mon, 5 May 2008 02:15:01 -0700, Pair_of_Scissors
wrote:

Hi Mike and other readers,

I can't get this thing to work somehow. I copied in an empty module, but get
several errors. I used to work with these thing 5 years ago, but all the
things I know are gone haha.

Anyway. I have created a simple sheet now, filled column A with 1-4. Went to
create a macro via the VBA-editor. Copied in your text. Is there something I
do wrong from the beginning?

Thnx
Rody

"Mike H" wrote:

Sorry an error, try this instead

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
valentered = Target.Value
Target.Value = 0
If valentered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
Else
Target.Value = valentered
End If
Application.EnableEvents = True
End If
End If
End Sub

Mike

"Mike H" wrote:

Hi,

In your post you switch between saying you want columns and rows correcting
so I'm not sure which you want. So a guess. This looks at A1 to A100 and
ensures the numbers are entered sequentially.

Right click the sheet tab, view code and paste this in

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Or IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If IsNumeric(Target) Then
Application.EnableEvents = False
ValEntered = Target.Value
Target.Value = 0
If ValEntered < WorksheetFunction.Max(Range("A1:A100")) + 1
Then
Target.Value = WorksheetFunction.Max(Range("A1:A100")) + 1
End If
Application.EnableEvents = True
End If
End If
End Sub


Mike

"Pair_of_Scissors" wrote:

I (sometimes) have a row with numbers from 1 to 5...

What I want is: when I enter value = 3, and that value (3) already exists in
the column, it has to correct that automatically into 4, with or without a
warning.

Sometimes the row don't have values in it at all, if the value 2 is entered
then, it automatically has to change to 1.

In short: it has to change automatically in the first unused value closest
to 0...

Thanks for the help!!!





All times are GMT +1. The time now is 01:57 AM.

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