David Zemens got your answer.
Here’s how to avoid repeating it.
Looking at this line:
For Each item In Worksheets("Collector").SlicerCaches("Slicer_RptDate").SlicerItems
If we made every statement explicit, it would look like this:
For Each item In Worksheets.Item("Collector").SlicerCaches.Item("Slicer_RptDate").SlicerItems
In other words:
Worksheets.Item("Collector") _
.SlicerCaches.Item("Slicer_RptDate") _
.SlicerItems
That’s a lot of member accesses for a single instruction.
By introducing intermediate variables…
Dim collectorSheet As Worksheet
Set collectorSheet = Worksheets("Collector")
Dim rptDateSlicerCache As SlicerCache
Set rptDateSlicerCache = collectorSheet.SlicerCaches("Slicer_RptDate") '*
For Each item In rptDateSlicerCache.SlicerItems
'...
Next
…you could have noticed while typing the line marked with a '* comment, that IntelliSense doesn’t offer SlicerCaches as a member of collectorSheet.
Why? Because this:
Worksheets("Collector")
Returns an Object — and from that point on, you’re on your own: IntelliSense can’t help you with autocompletion, because members of an Object aren’t resolved until runtime.
By assigning that object to a Worksheet variable, you give yourself compile-time checking, and avoid that pesky runtime error 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!
Permalink
Cannot retrieve contributors at this time
| title | keywords | f1_keywords | ms.prod | ms.assetid | ms.date | ms.localizationpriority |
|---|---|---|---|---|---|---|
|
Object doesn’t support this property or method (Error 438) |
vblr6.chm1011328 |
vblr6.chm1011328 |
office |
0fbab746-dc6d-b227-429a-1f56bb4ca448 |
06/08/2017 |
medium |
Not all objects support all properties and methods. This error has the following cause and solution:
-
You specified a method or property that doesn’t exist for this Automation object.
See the object’s documentation for more information on the object and check the spellings of properties and methods.
-
You specified a Friend procedure to be called late bound. The name of a Friend procedure must be known at compile time. It can’t appear in a late-bound call.
For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
[!includeSupport and feedback]
Home / VBA / VBA Object Doesn’t Support this Property or Method Error (Error 438)
VBA error 438 occurs when you try to use a property or method that does not support by that object. as you know all objects have some properties and methods that you can use but there could be a situation when using a property or method that does not apply to a particular object.
Let’s take an example to understand this: with the worksheet object there comes up a method to select the worksheet.

Now as you know you can activate a workbook but there is no method that you can use to select a workbook because you cannot select a workbook, you can only activate it.

So when you try to use this method with the workbook object you’ll get the runtime error 438. Even you can see this method is not in the list of properties and methods of the workbook object.

Now you can understand that it can be a mistake on the end of the person who writes the code and can be committed even if you are proficient in VBA.
Note: When you have written a code in the latest version of Microsoft Excel and now you try to run it in an older version, there’s could be a chance that that version doesn’t have a method or a property for the object you are using.
The best way to deal with this error 438 (Object Doesn’t Support this Property or Method) you need to be aware of the properties and methods that are supported by the object you are using.
When you define an object, you can see the list of all the properties and methods when you type a dot (.).

This list can help you to decide if the method you want to use is there or not. And if it’s not there you need to find a different way to write a code for the task that you want to accomplish. Otherwise, you can also open the object browser (F2) to see the properties and methods you have with an object.
More on VBA Errors
Subscript Out of Range (Error 9) | Type Mismatch (Error 13) | Runtime (Error 1004) | Object Required (Error 424) | Out of Memory (Error 7) | Invalid Procedure Call Or Argument (Error 5) | Overflow (Error 6) | Automation error (Error 440) | VBA Error 400
We already know that this is the most frustrating Microsoft Visual Basic Runtime Error 438 VBA issue which you are getting in day-to-day life, So today we are surely here going to show you some top best accessible methods and solutions and some tips and tricks to get rid out of it permanently from your Windows PC as well on your device too if you are facing on it also.
This shows an error code message like,

When you are running a Visual Basic or running the Microsoft Excel 2000, then you might get this error problem. This error occurs when you are trying to use variables for workbooks & worksheet names. This Microsoft Visual Basic Runtime Error 438 VBA may also happen when you are running a program in which a form is assigned to a variable & that variable is used to access a control on the form. This error includes your PC system crashes, virus infection or sometimes freezes too. It also starts when you are trying to execute the BW query. This error may occur if the installed AMD drivers out of date.
Causes of Microsoft Visual Basic Runtime Error 438 VBA Issue:
- Microsoft Visual Basic runtime
- Windows PC error issue
- An object does not support this property or method epaceengagement
So, here are some quick tips and tricks for efficiently fixing and resolve this type of Microsoft Visual Basic Runtime Error 438 VBA Windows PC Code issue from you permanently.
How to Fix & Solve Microsoft Visual Basic Runtime Error 438 VBA Issue
1. Disable the Enhanced Protected Mode from Internet Explorer –

- Open Internet Explorer
- Click on the tools option there, on the right side
- Click on the Internet Options there
- On the Advanced option,
- Uncheck the option box for “Enable Enhanced Protected Mode.”
It’s under the Security tab - Now, click on Apply to apply these settings
- Click on OK to save this configuration
- After completing, close all the tabs there
- That’s it, done
By disabling the Enhanced Protected Mode from your Internet Explorer browser can get rid out of this Microsoft Visual Basic Runtime Error 438 vba excel code problem.
2. Install an Automatic Repair Tool on your Windows PC –

- Go & Search for Automatic Repair Tool on the Internet
- Download it from there
- Now, Click on ‘RUN‘ & Install it
- Open it and use the automatic repair tool
- After finish, close the tab
- That’s it, done
By installing an automated repair tool on your Windows PC will fix this Runtime Error 438 excel vba access problem quickly from you.
3. Uninstall Microsoft Works Add-in on your Windows PC –

- Click on the Start menu
- Search for Control Panel or directly open it
- Open ‘Add or Remove Programs‘ tab there
- Click on the file location in the options tab
- On the Uninstall/Install option,
- Select the Words in Works Suite Add-in
- Again, click on the Add or Remove Programs there
- Follow the ON Screen instructions
- After completing, close all the tabs from there
- Restart your PC
- Load the Microsoft Word again
- That’s it, done
By uninstalling the Microsoft Works Add-in can get back you from this type of excel Runtime Error 438 VBA code issue.
4. Use a Registry Cleaner to Clean the Registry of your Windows –

Clean your registry by any registry cleaner software so that it can fix and solve this VBA Runtime Error 438 object doesn’t support access problem from your PC completely.
5. Reinstall the Drivers for the Device on your PC –

By Reinstalling the drivers for the device will fix your Visual Basic outlook Runtime Error 438 fix problem.
6. Run a Full Scan of your Windows PC for Malware or Virus –

- Go to the start menu
- Search or go to the “Microsoft Security Essentials” there
- Click on it and opens it there
- A Pop-up will open there
- Check the ‘Full‘ option there to scan thoroughly
- After, click on the ‘Scan Now‘ option to scan carefully
- After scanning, close the tab
- That’s it, done
By running a full scan of your PC can get rid out of this Runtime Error 438 word Excel VBA problems from your PC completely.
7. Create a System Restore Point on your Windows PC –

- Go to the start menu
- Search or go to the ‘System Restore.’
- Clicks on it and open it there
- After that, tick on the “Recommended settings” or ‘Select a restore point‘ there
- After selecting, click on the Next option there
- Now, follow the wizard
- After completing, close the tab
- That’s it, done
So by applying this method on your Microsoft Windows PC can quickly solve this VBA Runtime Error 438 excel MAC issue.
“ OR “

- Go to the start menu
- Search or go to the ‘System Properties.’
- Click on it and opens it
- After that, go to the “System Protection” option there
- Now, click on the “System Restore” option there
- & Create a Restore point there
- After completing, close the tab
- That’s it, done
Run a system restore and creating a new restore point by any of these two methods can solve this Visual Basic Runtime Error 438 ecw excel mac problem from your PC completely.
8. Troubleshoot & Run an Automatic Windows Repair on your PC –

- Go to the start menu
- Search or go to the PC settings there
- Click on the ‘Troubleshoot‘ option there
- After opening, click on the ‘Advanced options‘ there
- Then, click on the “Automatic Repair” option there
- After troubleshooting, close the tab
- That’s it, done
By running an automatic repair of your PC can get rid out of this Microsoft Visual Basic excel vba Runtime Error 438 problem from your PC.
9. Disable or Uninstall your Windows Antivirus Software on your PC –

By Disabling or uninstalling your antivirus software can quickly fix and solve this Runtime Error 438 object doesn’t support this property or method epaceengagement problem.
10. Restart your Windows PC [OPTIONAL] –

- Go to the Start menu
- Click on the right side of ‘Shutdown.’
- Click on Restart option there to restart
- That’s it, done
If this is your first time you have seen this stop error screen then by restarting your PC again will quickly fix this Microsoft Visual Basic Runtime Error 438 VBA problem.
These are the quick and the best way methods to get quickly rid out of this Microsoft Visual Basic Runtime Error 438 VBA Windows PC Code problem from you entirely. Hope these solutions will surely help you to get back from this Microsoft Visual Basic Runtime Error 438 VBA issue.
If you are facing or falling in this Microsoft Visual Basic Runtime Error 438 VBA Windows PC Code problem or any error problem, then comment down the error problem below so that we can fix and solve it too by our top best quick methods guides.
В этой статье представлена ошибка с номером Ошибка 438, известная как Ошибка выполнения 438 — объект не поддерживает это свойство или метод, описанная как Ошибка выполнения 438 — объект не поддерживает это свойство или метод. Наиболее частой причиной ошибки 438 является несоблюдение бинарной совместимости между последовательными версиями ваших компонентов. Каждый COM-интерфейс имеет связанный GUID, который называется inte
О программе Runtime Ошибка 438
Время выполнения Ошибка 438 происходит, когда ActiveX дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.
Определения (Бета)
Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!
- Двоичный — двоичный, система счисления с основанием 2, представляет числа с помощью двух символов: 0 и 1.
- Двоичная совместимость — Двоичная совместимость — это, как правило, способность двух программно-аппаратных систем запускать один и тот же двоичный код без необходимости перекомпиляции.
- Совместимость . Этот тег следует использовать для определения вопросов, касающихся проблем совместимости, например, между разными версиями одного и того же программного продукта, комплекта средств разработки или библиотеки.
- Компоненты — компонент в унифицированном языке моделирования «представляет собой модульную часть системы, которая инкапсулирует его содержимое и чье воплощение можно заменить в его среде.
- Guid — Глобально уникальный идентификатор GUID — это уникальный ссылочный номер, используемый в качестве идентификатора в компьютерном программном обеспечении.
- Объект — объект — это любой объект, которым можно управлять с помощью команд на языке программирования.
- Время выполнения — время выполнения — это время, в течение которого программа работает, выполняя
- ошибка выполнения — среда выполнения ошибка обнаруживается после или во время выполнения программы.
- Свойство . В некоторых объектно-ориентированных языках программирования свойство представляет собой особый вид члена класса, промежуточный между поле или член данных и метод.
- Метод . Метод, часто называемый функцией, подпрограммой или процедурой, — это код, который выполняет задачу и связан с классом или объектом.
< li> Интерфейс — интерфейс относится к точке взаимодействия между компонентами.
Симптомы Ошибка 438 — Ошибка выполнения 438 — объект не поддерживает это свойство или метод
Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.
Возможны случаи удаления файлов или появления новых файлов. Хотя этот симптом в основном связан с заражением вирусом, его можно отнести к симптомам ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но, опять же, это не всегда так.

(Только для примера)
Причины Ошибка выполнения 438 — объект не поддерживает это свойство или метод — Ошибка 438
При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.
Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.
Методы исправления
Ошибки времени выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, существует возможность ремонта. Вот способы сделать это.
Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.
Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.
Метод 1 — Закройте конфликтующие программы
Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.
- Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
- Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
- Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
- Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.
Метод 2 — Обновите / переустановите конфликтующие программы
Использование панели управления
- В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
- В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
- Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
- В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
- Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.
Использование других методов
- В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
- В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
- Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
- Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.
Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.
Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.
Метод 4 — Переустановите библиотеки времени выполнения
Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.
- Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
- Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
- Загрузите последний распространяемый пакет от Microsoft и установите его.
Метод 5 — Запустить очистку диска
Вы также можете столкнуться с ошибкой выполнения из-за очень нехватки свободного места на вашем компьютере.
- Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
- Вы также можете очистить кеш и перезагрузить компьютер.
- Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C 🙂
- Щелкните «Свойства», а затем — «Очистка диска».
Метод 6 — Переустановите графический драйвер
Если ошибка связана с плохим графическим драйвером, вы можете сделать следующее:
- Откройте диспетчер устройств и найдите драйвер видеокарты.
- Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.
Метод 7 — Ошибка выполнения, связанная с IE
Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:
- Сбросьте настройки браузера.
- В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
- Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
- Отключить отладку скриптов и уведомления об ошибках.
- В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
- Установите флажок в переключателе.
- Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.
Если эти быстрые исправления не работают, вы всегда можете сделать резервную копию файлов и запустить восстановление на вашем компьютере. Однако вы можете сделать это позже, когда перечисленные здесь решения не сработают.
Другие языки:
How to fix Error 438 (Runtime Error 438 — Object Doesn’t Support this Property or Method) — Runtime Error 438 — Object Doesn’t Support this Property or Method. The most common cause of error 438 is not maintaining binary compatibility between successive versions of your components. Each COM interface has an associated GUID that is called an inte
Wie beheben Fehler 438 (Laufzeitfehler 438 — Objekt unterstützt diese Eigenschaft oder Methode nicht) — Laufzeitfehler 438 — Objekt unterstützt diese Eigenschaft oder Methode nicht. Die häufigste Ursache für Fehler 438 besteht darin, dass die Binärkompatibilität zwischen aufeinanderfolgenden Versionen Ihrer Komponenten nicht aufrechterhalten wird. Jede COM-Schnittstelle hat eine zugehörige GUID, die als inte bezeichnet wird
Come fissare Errore 438 (Errore di runtime 438 — L’oggetto non supporta questa proprietà o metodo) — Errore di runtime 438 — L’oggetto non supporta questa proprietà o metodo. La causa più comune dell’errore 438 è il mancato mantenimento della compatibilità binaria tra le versioni successive dei componenti. Ogni interfaccia COM ha un GUID associato che è chiamato un inte
Hoe maak je Fout 438 (Runtime-fout 438 — Object ondersteunt deze eigenschap of methode niet) — Runtime-fout 438 — Object ondersteunt deze eigenschap of methode niet. De meest voorkomende oorzaak van fout 438 is het niet handhaven van binaire compatibiliteit tussen opeenvolgende versies van uw componenten. Elke COM-interface heeft een bijbehorende GUID die een inte
Comment réparer Erreur 438 (Erreur d’exécution 438 — L’objet ne prend pas en charge cette propriété ou cette méthode) — Erreur d’exécution 438 — L’objet ne prend pas en charge cette propriété ou cette méthode. La cause la plus courante de l’erreur 438 n’est pas le maintien de la compatibilité binaire entre les versions successives de vos composants. Chaque interface COM a un GUID associé qui s’appelle un inte
어떻게 고치는 지 오류 438 (런타임 오류 438 — 개체가 이 속성 또는 메서드를 지원하지 않습니다.) — 런타임 오류 438 — 개체가 이 속성 또는 메서드를 지원하지 않습니다. 오류 438의 가장 일반적인 원인은 구성 요소의 연속 버전 간에 바이너리 호환성을 유지하지 않기 때문입니다. 각 COM 인터페이스에는 inte라고 하는 관련 GUID가 있습니다.
Como corrigir o Erro 438 (Erro de tempo de execução 438 — O objeto não suporta esta propriedade ou método) — Erro de tempo de execução 438 — O objeto não oferece suporte a esta propriedade ou método. A causa mais comum do erro 438 é não manter a compatibilidade binária entre versões sucessivas de seus componentes. Cada interface COM tem um GUID associado, denominado inte
Hur man åtgärdar Fel 438 (Runtime Error 438 — Objekt stöder inte denna egenskap eller metod) — Runtime Error 438 — Objektet stöder inte den här egenskapen eller metoden. Den vanligaste orsaken till fel 438 är att inte bibehålla binär kompatibilitet mellan på varandra följande versioner av dina komponenter. Varje COM -gränssnitt har ett associerat GUID som kallas ett inte
Jak naprawić Błąd 438 (Błąd wykonania 438 — obiekt nie obsługuje tej właściwości lub metody) — Błąd wykonania 438 — obiekt nie obsługuje tej właściwości lub metody. Najczęstszą przyczyną błędu 438 jest brak zgodności binarnej między kolejnymi wersjami komponentów. Każdy interfejs COM ma przypisany identyfikator GUID, który nazywa się inte
Cómo arreglar Error 438 (Error de tiempo de ejecución 438: el objeto no admite esta propiedad o método) — Error de tiempo de ejecución 438: el objeto no admite esta propiedad o método. La causa más común del error 438 es no mantener la compatibilidad binaria entre versiones sucesivas de sus componentes. Cada interfaz COM tiene un GUID asociado que se denomina inte
Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.
Следуйте за нами:
Последнее обновление:
29/05/22 03:40 : Пользователь Windows 10 проголосовал за то, что метод восстановления 1 работает для него.

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.
ШАГ 1:
Нажмите здесь, чтобы скачать и установите средство восстановления Windows.
ШАГ 2:
Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.
ШАГ 3:
Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.
СКАЧАТЬ СЕЙЧАС
Совместимость

Требования
1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.
ID статьи: ACX010304RU
Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000
First of all, you should know, that some of functions, used on the worksheet, have limitations. So my point is avoid of using them in VBA, if it is not necessary.
For example, function POWER() returns error on attempt to raise a zero to zero. An alternative is to use 0 ^ 0 combination, which is exactly doing the same, but looks more simply and operates without such error.
But also there is no embedded alternative in VBA to the FACT() function, so you can use it, or simply add your own function factor() — it’s uppon your choise.
If you just have started learning VBA, I would recomend you to use Option Explicit. It will help you to find out, which variables are not defined, and sometimes to avoid errors related to variable names missprint.
Here is your code, fixed and a little bit optimized:
Option Explicit' It is an option that turns on check for every used variable to be defined before execution. If this option is not defined, your code below will find undefined variables and define them when they are used. Good practice is to use this option, because it helps you, for example to prevent missprinting errors in variable names.
Sub Bezier()
Dim C as Double , t As Double
Dim k As Long, n As Long, i As Long
n = 3
For i = 0 To 100
t = i * 0.01
Cells(i + 2, 6) = 0
Cells(i + 2, 7) = 0
For k = 0 To n
C = (WorksheetFunction.Fact(n) / WorksheetFunction.Fact(k)) / WorksheetFunction.Fact(n - k)
Cells(i + 2, 6) = Cells(i + 2, 6).Value + Cells(k + 2, 1).Value * C * (t ^ k) * ((1 - t) ^ (n - k))
Cells(i + 2, 7) = Cells(i + 2, 7).Value + Cells(k + 2, 2).Value * C * (t ^ k) * ((1 - t) ^ (n - k))
Next
Next
End Sub
UPDATE
Here are some examples of factorial calculations.
Public Function fnFact(number) ' a simple cycle example of Factorial function
Dim tmp As Long ' new temporary variable to keep the "number" variable unchanged
tmp = number
fnFact = number
While tmp > 1
tmp = tmp - 1
fnFact = fnFact * tmp
Wend
End Function
Public Function fnFactR(number) ' a simple example of recursive function for Factorial calculation
If number > 0 Then
fnFactR = fnFactR(number - 1) * number ' function calls itself to continue calculations
Else
fnFactR = 1 ' function returns {1} when calculations are over
End If
End Function
Sub Factor_test() 'RUN ME TO TEST ALL THE FACTORIAL FUNCTIONS
Dim number As Long
number = 170 ' change me to find Factorial for a different value
MsgBox "Cycle Factorial:" & vbNewLine & number & "!= " & fnFact(number)
MsgBox "WorksheetFunction Factorial:" & vbNewLine & number & "!= " & WorksheetFunction.Fact(number)
MsgBox "Recursive Factorial:" & vbNewLine & number & "!= " & fnFactR(number)
End Sub
All those functions are available to calculate Factorial only for numbers before 170 inclusively, because of large result value.
So for my PC the limitation for WorksheetFunction.Fact() function is also 170.
Let me know, if your PC has different limitation for this function, — it’s quite interesting thing. 🙂
UPDATE2
It is recomended to use Long data type instead of Integer each type when integer (or whole number) variable is needed. Long is slightly faster, it has much wider limitations and costs no additional memory. Here are proof links:
1. MSDN:The Integer, Long, and Byte Data Types
2. ozgrid.com:Long Vs Integer
3. pcreview.co.uk:VBA code optimization — why using long instead of integer?
Thanks for @Ioannis and @chris neilsen for the information about Long data type and proof links!
Good luck in your further VBA actions!
First of all, you should know, that some of functions, used on the worksheet, have limitations. So my point is avoid of using them in VBA, if it is not necessary.
For example, function POWER() returns error on attempt to raise a zero to zero. An alternative is to use 0 ^ 0 combination, which is exactly doing the same, but looks more simply and operates without such error.
But also there is no embedded alternative in VBA to the FACT() function, so you can use it, or simply add your own function factor() — it’s uppon your choise.
If you just have started learning VBA, I would recomend you to use Option Explicit. It will help you to find out, which variables are not defined, and sometimes to avoid errors related to variable names missprint.
Here is your code, fixed and a little bit optimized:
Option Explicit' It is an option that turns on check for every used variable to be defined before execution. If this option is not defined, your code below will find undefined variables and define them when they are used. Good practice is to use this option, because it helps you, for example to prevent missprinting errors in variable names.
Sub Bezier()
Dim C as Double , t As Double
Dim k As Long, n As Long, i As Long
n = 3
For i = 0 To 100
t = i * 0.01
Cells(i + 2, 6) = 0
Cells(i + 2, 7) = 0
For k = 0 To n
C = (WorksheetFunction.Fact(n) / WorksheetFunction.Fact(k)) / WorksheetFunction.Fact(n - k)
Cells(i + 2, 6) = Cells(i + 2, 6).Value + Cells(k + 2, 1).Value * C * (t ^ k) * ((1 - t) ^ (n - k))
Cells(i + 2, 7) = Cells(i + 2, 7).Value + Cells(k + 2, 2).Value * C * (t ^ k) * ((1 - t) ^ (n - k))
Next
Next
End Sub
UPDATE
Here are some examples of factorial calculations.
Public Function fnFact(number) ' a simple cycle example of Factorial function
Dim tmp As Long ' new temporary variable to keep the "number" variable unchanged
tmp = number
fnFact = number
While tmp > 1
tmp = tmp - 1
fnFact = fnFact * tmp
Wend
End Function
Public Function fnFactR(number) ' a simple example of recursive function for Factorial calculation
If number > 0 Then
fnFactR = fnFactR(number - 1) * number ' function calls itself to continue calculations
Else
fnFactR = 1 ' function returns {1} when calculations are over
End If
End Function
Sub Factor_test() 'RUN ME TO TEST ALL THE FACTORIAL FUNCTIONS
Dim number As Long
number = 170 ' change me to find Factorial for a different value
MsgBox "Cycle Factorial:" & vbNewLine & number & "!= " & fnFact(number)
MsgBox "WorksheetFunction Factorial:" & vbNewLine & number & "!= " & WorksheetFunction.Fact(number)
MsgBox "Recursive Factorial:" & vbNewLine & number & "!= " & fnFactR(number)
End Sub
All those functions are available to calculate Factorial only for numbers before 170 inclusively, because of large result value.
So for my PC the limitation for WorksheetFunction.Fact() function is also 170.
Let me know, if your PC has different limitation for this function, — it’s quite interesting thing. 🙂
UPDATE2
It is recomended to use Long data type instead of Integer each type when integer (or whole number) variable is needed. Long is slightly faster, it has much wider limitations and costs no additional memory. Here are proof links:
1. MSDN:The Integer, Long, and Byte Data Types
2. ozgrid.com:Long Vs Integer
3. pcreview.co.uk:VBA code optimization — why using long instead of integer?
Thanks for @Ioannis and @chris neilsen for the information about Long data type and proof links!
Good luck in your further VBA actions!