excel same value in two cells

G

Guest

How can 2 cells have the same values, such that when I edit either cell the
change is reflected on both?
 
S

squenson

It is not possible without using some sophisticated features of event
listening and macros. But one should ask the question: what would be the
benefits? You can refer the second cell from the first one -- something like
A2: =A1, so A1 and A2 will both have the same value and each time you change
A1, A2 will change.
 
G

Guest

This macro will do as you describe.........

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Range("a2").Value = Range("a1").Value
Else
If Target.Address = "$A$2" Then
Range("a1").Value = Range("a2").Value
Else
End If
End If
End Sub

Vaya con Dios,
Chuck, CABGx3
 
S

squenson

On my version of Excel 2003, if I am in A1 and type 444 then press the down
arrow, A1 is being updated with the value from A2...

I would recommend that you replace the first line:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
by:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 
S

Sandy Mann

Chuck,

You will also have to have a line:

Application.EnableEvents = False

before any changes are made to the sheet and:

Application.EnableEvents = True

before the End Sub to stop the code firing multiple times. For me in XL97
it fires 198 time before VBA thows in the towel.

--
HTH

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
G

Guest

Hi Sandy.........
I bow to your much greater experience, and wish to learn all I can. In this
instance, I intentionally left those lines off and do so as a general rule
anymore because I like to see things flash as the macro progresses.....sort
of in lieu of a progress indicator. I was not aware that their absence could
actually affect the operation of the macro itself. I use '97 also, and see
no evidence of multiple firings here. How did you conclude that the macro
had fired 198 times?

Vaya con Dios,
Chuck, CABGx3
 
S

Sandy Mann

Hi Chuck,

It was Chip that pointed out to me some time ago that one of my codes was
multi-firing because I missed those lines off although I could not see
anything happening on the sheet.

The code I used was:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Debug.Print "Chuck"
'Application.EnableEvents = False
If Target.Address = "$A$1" Then
Range("a2").Value = Range("a1").Value
Else
If Target.Address = "$A$2" Then
Range("a1").Value = Range("a2").Value
Else
End If
End If
'Application.EnableEvents = True
End Sub


Then I copied the entries in the Immediate Window and pasted them into a
sheet using Paste Special > Unicode Text to find that I had 198 Rows of
"Chuck"

What puzzles me is if, with the entries still in the Immediate Window, I
change the Debug.Print line to "Chuck2" I only get 65 "Chuck2". If I then
clear all the entries in the Immediate Window and run the code again I am
back to having 198 entries! Perhaps one of the real experts can explain that
to us.

If you un-comment the EnableEvents lines that you will only get one "Chuck"

--
Regards,

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
P

Pete_UK

Hi Sandy,

I'm certainly no expert in VBA, but could you possibly have a NOW()
function somewhere on the sheet or something similar, which is causing
it to recalculate (and therefore change) to trigger the macro?

Just a thought ...

Pete
 
S

Sandy Mann

Hi Pete,

No there is nothing in the sheet apart from the Data in A1 & A2. A1 entered
by me, A2 entered by the code.

I think that the Event Procedure is more a sort of "Worksheet_Change or
Refresh" than just a Worksheet_Change.

VBA entering the data in A2 is a Worksheet_Change so the code fires again.
On the second and subsequent runs although the data in cell is the same as
the code in entering it still fires the code again and so on..... or so says
Chip.

Did you try the code and get a different result?

--

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
G

Guest

Awesome Sandy.....thanks much for the lesson......every day it's something
new, (shaking my old gray head)..........maybe I can use this technique to
check out some of my larger macros that seem to take a long time to execute.

Thanks again,

Vaya con Dios,
Chuck, CABGx3
 
G

Gord Dibben

Pete

I tested on a new workbook with nothing in it and received the multiple Chuck's
as Sandy did. 198 to be exact.

One Chuck with events disabled.


Gord
 
S

Sandy Mann

The some is me, the Awe is chip <g>

--


Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
G

Guest

Actually, in some "circles", 198 "Chuck's" might be condsidered more
desirable than just one.........I love my mirror)..... <G>

Vaya con Dios,
Chuck, CABGx3
 
S

Sandy Mann

Thank you for confiming it Gord. Have you got any idea why it fires only 65
times if you leave the original printouts in the Immediate Window?

--

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
G

Gord Dibben

Not a clunk<g>

Some limitation to debug?

Debug and the Immediate Window are uncharted waters for me.


Gord
 
G

Gord Dibben

Chuck

If you're going to start disabling events you should trap for errors so you
re-enable if the code errors.

On Error Goto stoppit
Application.EnableEvents = False

'code here

stoppit:
Application.EnableEvents = True


Gord
 
S

Sandy Mann

I think that you nailed it Gord, I tested:

Sub test()
For x = 1 To 10000
Debug.Print x
Next x
End Sub

and although you can see all 10,000 numbers being printed to the Immediate
Window, only the last 195 - 199 numbers are available in the window. It
would seem therefore that the Immediate Window has a limit of displaying
only the last 200 or so printouts.

Testing with the Event Procedure:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Debug.Print Target.Value
Target.Value = UCase(Target.Value)
End Sub

and entering Chuck in any cell produced 199 CHUCK's *not* as I would have
expected, one Chuck and 198 CHUCK's, (because the Debug.Print was *before*
the UCase call). I therefore assume that VBA gives up after *more* then 200
cycles but displays only the last 200.

--
Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings

(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk
 
G

Gord Dibben

Interesting.

Nice to know we have nothing else to do except tinker.

We must have no "honey-do" list and/or can't get a Tee-time
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top