Visual Basic Visual C++ Visual J++ VBA Internet Explorer
Licensing Automatic support Automatic support Automatic support Not supported Extra work required
Apartment-Model Threading Required for multithreaded projects Not required Required Not required Not required, but needed for optimal performance
Validate for LostFocus Automatic support Need to add an event Need to add an event Need to add an event Need to add an event
Mark Controls as Safe NA NA NA NA Needed for medium or high security settings
Parameters Passed By Reference in Events Supported Supported Supported Supported Not supported
Full Range of Variant Data Types Supported Supported Supported Excel supports only specific types Supported
Package Controls for Internet/Intranet NA NA NA NA Extra work needed
Table 1 How Do They Differ? Let Me Count the Ways... No two environments (containers) that host ActiveX controls are exactly the same, but you can use VB to write controls that will function effectively in whatever containers you need to host your control in. This requires that you first understand the differences between various containers. If you intend to develop a control for all containers, you must ensure your control supports all the requirements of the container with the most stringent needs.