Есть файл, работающий уже лет 7. На странице кнопка, при открытии проверяется контрольное поле и в зависимости от этого кнопка активна или нет (.Enable=True or False). Файл работал в нескольких версиях оффиса. Последнее время на 2010 и 2013 (основная версия). В результате последнего апдейта оффиса стало появляться сообщение, приведенное в описании темы. Кроме того, ранее в режиме конструктора можно было просмотреть свойства объекта (кнопки, к примеру) на листе, теперь же вызываются свойства листа, содержащего объект.
Проверил на соседней машине, оффис 2010 СП2 без последних апдейтов — все ОК. Выполнил обновление — картина та же, что описана выше…
Кто-нить сталкивался с подобной проблемой? Спасибо!
ЗЫ: Кстати, подобную проблему нашел в архиве за 2012, но на ХР у меня не возникало подобных ошибок…
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=42275
Ok so I’m definitely a novice at VBA but I’m learning. As far as I can tell there no reason my code shouldn’t be running fine, and has in the past. This error keeps popping up though. What the intention is I’m making a sheet that automatically updates the other sheets when you add a person to the main sheet. The code seems to work and has, but it is suddenly throwing this error and I can’t figure out why. I’ve looked around but none of the solutions seem to be remotely relevant to my issue. Any help at figuring out exactly where the error is would be greatly appreciated!
The following is where the debugger is saying the error is:
Private Sub Worksheet_Activate()
ThisWorkbook.UpdateSheets (Week2)
End sub
And this is the function being called:
Public Function UpdateSheets(ByRef w As Worksheet)
HowManyPeople
With w
.Columns("A:W").HorizontalAlignment = xlCenter
Dim i As Integer
Dim j As Integer
For i = 1 To x
If IsEmpty(.Cells(i, 2)) Then
For j = 2 To 12
.Cells(i + 4, j).Borders.LineStyle = xlContinuous
If j <> 12 Then
.Cells(i + 4, j).Interior.ColorIndex = 2
.Cells(i + 4, j).Locked = False
Else
.Cells(i + 4, j).Interior.ColorIndex = 15
.Cells(i + 4, j).Locked = True
End If
If j = 2 Then
.Cells(i + 4, j).Value = Week1.Cells(i + 4, j)
Else
.Cells(i + 4, j).Value = "0"
End If
Next j
End If
Next i
i = x + 5
Do
For j = 2 To 12
.Cells(i, j).Borders.LineStyle = xlNone
.Cells(i, j).Interior.ColorIndex = 2
.Cells(i, j).Locked = True
.Cells(i, j).Value = ""
Next j
i = i + 1
Loop Until IsEmpty(.Cells(i, j))
End With
End Function
the function HowManyPeople is a basic row counting method. x is a public workbook variable given value in the HowManyPeople method. Week1 and Week2 are the technical names (not displayed name) of the worksheets
Ошибка выполнения 438 часто обнаруживается при запуске макросов Microsoft Excel и Visual Basic. Ошибка возникает, когда макросы, которые вы пытаетесь использовать, являются неправильными или ошибочными и, как правило, препятствуют максимально плавной работе Excel. Если у вас есть эта ошибка на вашем компьютере, вы должны быть уверены, что сможете исправить ее наиболее эффективным способом.
Эта ошибка часто появляется в таком формате:
- Ошибка времени запуска «438»:
- Объект не поддерживает это свойство или метод
Сама ошибка вызвана используемым вами макросом или попыткой использовать устаревшие функции (если вы создали макрос в более ранней версии Office и теперь позволяете ему работать в Office 2010), или если макрос просто не работает. Это вообще не работает. Эту проблему можно решить, исправив макрос, который вы пытаетесь использовать, или восстановив установку Microsoft Office на вашем компьютере.
438 Первым шагом в устранении ошибки является удаление подключаемого модуля Microsoft Works для Office. Это часто вызывает конфликты с программным обеспечением Office. Это можно сделать, нажав «Пуск»> «Панель управления»> «Установка и удаление программ», а затем «Плагин Microsoft Works». Его удаление должно остановить дальнейший конфликт в вашей системе.
После удаления этого плагина следует использовать Microsoft Hotfix # 50356. Он специально разработан для решения проблем с ошибкой 438 и, в основном, позволяет вашему компьютеру работать максимально плавно, не удаляя другое программное обеспечение, которое вы хотите использовать.
Вам также следует использовать так называемую программу «Очиститель реестра», чтобы исправить потенциальные ошибки в базе данных реестра вашего компьютера. База данных реестра — это центральная система хранения всех файлов, настроек и настроек, которые Windows использует для ее запуска. Хотя эта база данных очень важна для вашего компьютера, она постоянно вызывает множество потенциальных проблем для вашего компьютера. Ошибка Runtime 438 может возникнуть, если база данных реестра повреждена, поэтому рекомендуется очистить эту базу данных вашей системы с помощью средства очистки реестра.
Выполнение этих шагов не только решит потенциальные проблемы на вашем компьютере, но и исправит ошибки, из-за которых ваш компьютер отображает 438 ошибок рабочего времени. Вы должны выполнить каждый шаг, чтобы исправить ошибку 438 навсегда.
Return to VBA Code Examples
This article will demonstrate how to Fix VBA Error 438 – Object Doesn’t Support Property or Method.
Error 438 is a frequently occuring error in Excel VBA and is caused by either omitting a property or method when referring to an object, or by using a property or method that is not available to an object in the VBA code.
Check the VBA code to Fix Error 438
Let us examine the following code:
Sub RemoveWorksheet()
Dim wb As Workbook
Dim ws As Worksheet
Dim sheetName As String
sheetName = "Sheet 1"
Set wb = ActiveWorkbook
For Each ws In wb.Sheets
If ws = sheetName Then
wb.Sheets(sheetName).Delete
Exit For
End If
Next ws
End Sub
If we run this code, Error 438 will occur.
To resolve this issue, we click on Debug to see where the error is occurring.
This line of code is trying to equate the worksheet (depicted by the variable ws) to the sheet name. This is not possible as the worksheet is an object but the sheet name is a string so Error 438 is therefore returned.
To solve this, compare the string sheetName to the name property of the worksheet object:
ws.name = sheetName
Now the code runs without issue!
To show a list of all the properties or methods that are available to the worksheet object, we can type a dot (.) after the object.
This invokes the VBA Editor’s Intellisense feature. To make sure it’s turned on, in the Menu, select Tools > Options.
Make sure Auto List Members is checked and then click OK.
NOTE: This is usually on by default.
You can also find a list of all the Properties, Methods and Events for an Excel Object in the Object Browser.
In the Menu, select View > Object Browser or press F2 (See more VBE shortcuts).
A list of classes and objects will appear in the left hand side of the screen. If you click on the object you wish to use (eg: Workbook), a list of all the Properties, Methods and Events that that object supports will appear in the right hand side of the screen. (eg: Members of Workbook).
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!