1. In a new sheet, cell A1 set Data Validation on List and
0,1,2,3 as the options. Cell A2 set to =test(A1).
2. In the VB editor, Insert a new module and put the
following code in it:
Function test(a as Integer) as Integer
test = a + 1
End Function
3. On the Sheet1 code page, insert the following code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range("B1") = Not Range("B1")
Application.EnableEvents = True
End Sub
4. When you change Cell A1 with the dropdown, B1 doesn't
change. When you type a value in A1, B1 changes.
I think it's a bug. Any other ideas? Can anyone suggest
a way to make this work (without removing the Function
test)?
Thanks,
Dan
You need a line in Function test that reads:
Application.EnableEvents = True
Otherwise it seems to get stuck after using the dropdown.
Thanks for the help!
Dan
>.
>
--
Regards
Frank Kabel
Frankfurt, Germany
"Dan Frederick" <anon...@discussions.microsoft.com> schrieb im
Newsbeitrag news:e23e01c40b84$f9b90f60$a301...@phx.gbl...
--
Regards
Frank Kabel
Frankfurt, Germany
"Dan Frederick" <anon...@discussions.microsoft.com> schrieb im
Newsbeitrag news:e23e01c40b84$f9b90f60$a301...@phx.gbl...
Thanks!
Dan
>.
>
I just tried testing it in my application and it still
doesn't behave the way I think it should. If you add a
msgbox to the text in the Worksheet_change event, you'll
see that it is triggered by the validation dropdown. The
worksheet just doesn't get recalculated like it should.
I'm reverting back to my original idea that I think it's a
bug and not a feature.
Thanks,
Dan
>.
>
--
Regards
Frank Kabel
Frankfurt, Germany
"Dan Frederick" <anon...@discussions.microsoft.com> schrieb im
Newsbeitrag news:b64901c40b93$da26a400$a601...@phx.gbl...
After some discussions with MS, it appears that there is a
timing problem with Excel if you use Data Validation, a VB
function and a Worksheet_Change event that modifies a
range (any range) on the worksheet. If the VB function is
called using a value from the DV dropdown list (or any
data validation that fails), the Worksheet_Change event
will produce an error when trying to modify the range.
Randy Smith from MS came up with the workaround of putting
an Application.Calculation = xlCalculationManual at the
beginning of the Worksheet_Change event and then an
Application.Calculate at the end.
Unfortunately, because you need to turn calculation to
manual, you'll have to create a WS_Change event (that just
does a Calculate) in every worksheet in your app.
I hope that helps! Thanks to Frank Kabel and Randy Smith
for their efforts.
Regards,
Dan
>.
>