Error 438 occurs when running a program in which a form is assigned to a
variable and that variable is used to access a control on the form if the
program is on a system running Windows 95 with Regional Settings set to a
setting other than English (United States). The error text is:
Run-Time Error #438:
Object doesn't support this property or method
There are two possible workarounds for this problem.
- Access the form directly rather than by a variable containing the form.
- Create property procedures in the form's code to provide access to the
properties of the controls on the form.
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This problem has been fixed in Windows 98.
To reproduce this bug consistently, you will need HeapWalker, a utility
that ships with the Windows 16-bit Software Development Kit and the 16-bit
version of Visual C++.
Steps to Reproduce
- From Control Panel, click Regional Settings to open the Regional
Settings dialog box. Set the Regional Settings to English (Australian).
- Start the 16-bit edition of Visual Basic 4.0. If it is already running,
select New Project from the File menu,.
- Add a CommandButton to Form1.
- Copy the following code to the Code window of Form1:
Private Sub Command1_Click()
Dim MyForm As Form
Dim i As Long
Set MyForm = Form1
For i = 1 To 10000
MyForm.Command1.Caption = i
- From the File menu, click Make EXE File to create an executable file.
- Run the executable file and then click the CommandButton in your
program. While it is running, run HeapWalker's Segmentation Test.
You will receive the run-time error #438.
Article ID: 175616 - Last Review: October 20, 2003 - Revision: 2.0
- Microsoft Visual Basic 4.0 16-bit Enterprise Edition, when used with:
|kbbug kbfix kboswin98fix kb16bitonly KB175616|