View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
joeeng joeeng is offline
external usenet poster
 
Posts: 54
Default Bug in Excel 2003 involving ActiveX Controls on worksheets

I have been able to narrow down the source of this bug. "If" testing for the
target intersect in the Worksheet_Change subroutine triggered by the ActiveX
button which calls a Userform containing a TextBox Control containing a
ControlSource property located on the Worksheet with the ActiveX button.
Press the ActiveX button, change the value in the TextBox, close the
Userform, save the Workbook. When the workbook is re-opened and the
Workbook_Open subroutine has a Worksheets().Select or Worksheets().Activate
or Worksheets().Range().Copy for the worksheet containing the ActiveX button,
a 57121 run-time error occurs every time. Delete the ActiveX button or Rem
out the "If" test for the target intersect in the Worksheet_Change subroutine
and the error goes away. (By the way, the "If" testing is set to allow the
change made in the ControlSource property location).

"semiopen" wrote:


joeeng wrote:
I am also using SP2. I have also experienced this bug in Excel 2002 and I
had hoped that upgrading to Excel 2003 would fix the problem.

I have created a small Excel workbook that demonstrates the issue. I can
email it to you for evaluation.


Well, I'm no expert, but I'm curious enough to give it a look - so go
ahead and e-mail it.

"semiopen" wrote:


joeeng wrote:
I have discovered that there is a bug in Excel 2003 (and Excel 2002), which I
think has propagated since Excel 97. I have found references to this bug for
Excel 97 (with workarounds identified), but the bug still exists and worse,
the workarounds identified for Excel 97 do not work. Here is what I have
discovered:

Place an ActiveX button on a worksheet with vba click code supporting it.
Activate the control (press the button).
Save the workbook before activating any other worksheet (or workbook) and
before manually selecting any cell on the worksheet.
With vba code in the Workbook_Open subroutine that either selects or
activates the worksheet that contains the ActiveX button, re-open the
workbook.

Excel crashes with a 32809 run-time error at the line that selects or
activates the worksheet (or any range on the worksheet) with the ActiveX
button. Less frequently, it may crash with a 57121 run-time error at the
same point.

Excel 2003 seems to corrupt the vba code somehow, because Excel 2003 does
not recover from this error (even by resetting vba execution) until the
workbook is closed, opened with macros disabled, saved, and then re-opened.
The workarounds identified for Excel 97 of setting the "TakeFocusOnClick" for
the ActiveX button to false does not help in Excel 2003.

The error does not show up if any manual selection is made prior to closing
the workbook after pressing the ActiveX button.

Does anyone have knowledge of this problem or comments?

Despite your fairly clear description, I have been unable to replicate
the bug. I have SP2 - maybe you have a slightly earlier release. Does
the error pop up every time you go through a save-reopen cycle
(assuming the last thing you did was press the button), or does it only
occur the first time?

Maybe selecting a cell and/or changing the active sheet in the
beforesave or beforeclose event might help.