We are a company that develops and sells shareware ActiveX and .NET controls for other developers (see www.10Tec.com), and several customers reported a very strange problem with our ActiveX grid control, iGrid, in recent versions of MS Access - 2003/2007/2010.
The most strange point is that the problem occurs on a random unpredictable stage when working with an MS Access form that contains our iGrid control. After you open the form next time in design view or form view, you see a blank control container for the iGrid ActiveX and you get the "There is no object in this control" error message. As a result of this problem, you may also get
Run-time error '97':
Can not call friend function on object which is not an instance of defining class.
It looks like the form becomes corrupted after some actions of the developer.
This problem has never occurred in other development environments including Visual Basic 6 or even UserForms in Ms Word/Excel VBA, but from time to time this happens in MS Access. Sometimes even MS Access freezes when you open the problem form, and you need to terminate the process thru CTRL+ALT+DEL.
We tried to find a sequence of actions which can lead to the problem for sure, but we have not managed to do that. The only thing which may accompany the appearance of this problem is the following. If you refers a non-existing form control in your code, and you encounter this error while debugging your form (most likely, the compiler option "Compile On Demand" should be set for that), the form became corrupted when you hit the "Reset" button on the toolbar in the VBA environment.
If you even do not know how to overcome this problem, but at least know how to repair the problem form - write your recipe, please. Maybe, there is also a tool to repair this automatically.
We cannot reproduce the problem in a brand new form from scratch, but we have a problem mdb file. It is attached (though you might need to install iGrid ActiveX also).
Sure, this is not a problem of an unregistered ActiveX control. The problem occurs when the control is properly registered in the Windows registry.