Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Run time error 13 excel

Run time error 13 excel

I have an excel sheet which is working on my friends machine but gives «Excel VBA Run-time error ’13’ Type mismatch» on my machine.
Its coming while running a macro for a file and same I tried to sent to other colleague and its working fine on his machine. This was just to check if some how file got corrupted. I’m allways getting the following error: Excel VBA Run-time error ’13’ Type mismatch

I didn’t change anything in the macro so dont know why am I gueting the error.

Please help me in finding a workaround or a possible solution for the same.

Post the code so we can see and pls highlight the line that gives the error.

Thanks for the quick response

The cell name is «ws5_In_Txt_Required» which is having value as No, but once I press the button which triggers the macro, it takes to the if loop.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If Range(«ws5_In_Txt_Required») = «Yes» And (Range(«ws23_Out_Date_StartDate») > Range(«ws23_Out_Date_EndDate»)) Then
MsgBox («Start Date must be before the End Date.»)

=IF(ws5_In_Int_StartDate=»Insert start date below»,DATE(YEAR(ws5_In_Date_StartDate),MONTH(ws5_In_Date_StartDate),DAY(ws5_In_Date_StartDate)),’Duration1′!H40)

Just to add and the cell «ws5_In_Int_StartDate» is blank

and this same excel is working fine on my collegues machine, i tried almost on 5-7 machines, but only having problem in my machine

Is there a Excel version difference between your machine and your co-workers?

If not, the «ws5_whatever_whatever». how is that set?

Also, instead of posting your code in +++++++++’s, use the tags [ code ] and [ /code ] around it. Like so:

The mods are kinda hot on the correct use of [ code ] tags in here.

Below is the error message appears in the excel when I run the macro button:

Line where it points to debug: ==> The first line in the code with «If» loop

=IF(ws5_In_Int_StartDate=»Insert start date below»,DATE(YEAR(ws5_In_Date_StartDate),MONTH(ws5_In_Date_StartDate),DAY(ws5_In_Date_StartDate)),’Duration1′!H40)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Values in cell : ws5_In_Txt_Required
Its a List box where there are only 2 options «Yes» or «No»
While we type «No» still it gives the same error on same line mentioned above.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Value in cell : ws5_In_Int_StartDate. This is also a list box with default value as «End of deployment phase»
But the value should not matter if the value in above cell i.e. Ws5_In_Txt_Required is «No»
And Similarly with cell «ws5_In_Date_EndDate». Value in this cell is only required if cell «Ws5_In_Txt_Required» does’nt have value as «No»
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

are you sure there are no error values in any of the three cells on your machine?

Problem has been resolved now. Thanks a lot.

The problem was on date format of my laptop.
Date on my machine was set to US date format and in the excel macros were taking date format as British date format.

Thanks for all your support in helping me.

Hi all, first post for me.

Private Sub Worksheet_Change(ByVal Target As Range)
‘Check if value = «Paid»
If Target.Value = «Paid» Then
‘Turn off events to prevent recursive calls
Application.EnableEvents = False
‘Copy row to new worksheet
Target.EntireRow.Copy
With Worksheets(«GR & Sent for Payment»)
.Range(«A» & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
End With
‘Delete the source row
Target.EntireRow.Delete
‘Turn events back on
Application.EnableEvents = True
End If
End Sub

I get a runtime error type 13 mismatch on the above code.

Debug points to line 3

I want the macro to move one line from a worksheet to another when the text entered is ‘Paid’

Hope you guys can help!

I have a VBA code when try to run it is giving the error as: Run-time error ’13’ Type mismatch. this is a code about entering the data on the sheet from user form. I don’t know where the code gotten wrong..

can anyone help me with this issue..

Pls find the attached file for your reference.

Типы ошибок в VBA

При выполнении макросов Excel могут возникнуть ошибки, которые в VBA делят на три категории:

Далее мы поговорим о каждом из трёх типов ошибок VBA подробно.

Ошибки компиляции

Компилятор VBA рассматривает ошибки компиляции как недопустимые и выделяет их в коде ещё до того, как дело дойдёт до запуска макроса.

Если при написании кода допущена синтаксическая ошибка, то редактор VBA сигнализирует об этом немедленно: либо при помощи окна с сообщением, либо выделяя ошибку красным цветом, в зависимости от статуса режима Auto Syntax Check.

Примечание: При включённом режиме Auto Syntax Check каждый раз, при появлении в редакторе Visual Basic во введённом коде синтаксической ошибки, будет показано соответствующее сообщение. Если же этот режим выключен, то редактор VBA продолжит сообщать о синтаксических ошибках, просто выделяя их красным цветом. Опцию Auto Syntax Check можно включить/выключить в меню Tools > Options редактора Visual Basic.

В некоторых случаях ошибка компиляции может быть обнаружена при выполнении компиляции кода, непосредственно перед тем, как макрос будет выполнен. Обычно ошибку компиляции несложно обнаружить и исправить, потому что компилятор VBA даёт информацию о характере и причине ошибки.

Например, сообщение “Compile error: Variable not defined” при попытке запустить выполнение кода VBA говорит о том, что происходит попытка использовать или обратиться к переменной, которая не была объявлена для текущей области (такая ошибка может возникнуть только если используется Option Explicit).

Читать еще:  Перестал открываться файл excel

Ошибки выполнения

Ошибки выполнения возникают в процессе выполнения кода и приводят к остановке выполнения программы. Этот тип ошибок VBA, как правило, также не сложно обнаружить и исправить, так как сообщается информация о характере ошибки и место в коде, где произошла остановка.

Примером такой ошибки может служить попытка выполнить деление на ноль. В результате будет показано сообщение “Run-time error ’11’: Division by zero“.

В зависимости от структуры проекта VBA, может быть предложено выполнить отладку кода (как показано на рисунке ниже). В этом случае при нажатии на кнопку Debug (в окне сообщения о необходимости отладки) будет выделена цветом строка кода, которая стала причиной ошибки VBA.

Получив такое сообщение и видя выделенную строку кода, как в приведённом выше примере, обнаружить причину ошибки будет совсем не сложно.

В случае если код сложнее, чем в нашем примере, то, чтобы получить больше информации о причине возникновения ошибки VBA, можно проверить значения используемых переменных. В редакторе VBA для этого достаточно навести указатель мыши на имя переменной, или можно открыть окно отслеживания локальных переменных (в меню редактора View > Locals Window).

Коды различных ошибок выполнения расшифрованы на сайте Microsoft Support (на английском). Наиболее часто встречающиеся ошибки VBA перечислены в этой таблице:

Ошибка Excel VBA во время выполнения «13» Несоответствие типов

Я создал макрос для файла, и сначала он работал нормально, но сегодня я открывал и перезапускал файл и макрос сотни раз, и я всегда получаю следующую ошибку: Excel VBA Ошибка времени выполнения ‘ 13 ‘Несоответствие типов

Я ничего не изменил в макросе и не знаю, почему я получаю ошибку. Кроме того, требуется время, чтобы обновлять макрос каждый раз, когда я его запускаю (макрос должен запускать около 9000 строк).

Ошибка находится между ** **.

Как вы думаете, вы можете мне помочь? Я использую excel 2010 для Windows 7. Большое спасибо

Вы получите несоответствие типа, если Sheets(name).Cells(4 + i, 57) содержит нечисловое значение. Вы должны проверить поля, прежде чем считать их числами, и попытаться их вычесть.

Кроме того, вы должны включить Option Strict , поэтому вам придется явно преобразовывать переменные, прежде чем пытаться выполнять операции с ними, зависящие от типа, такие как вычитание. Это поможет вам определить и устранить проблемы в будущем. К сожалению, Option Strict предназначен только для VB.NET. Тем не менее, вы должны найти лучшие практики для явных преобразований типов данных в VBA.

Update:

Если вы пытаетесь быстро исправить свой код, оберните строку ** и следующую за ней в следующем состоянии:

Обратите внимание, что ваше значение x может не содержать ожидаемого значения в следующей итерации.

Спасибо, ребята, за вашу помощь! Наконец, я смог заставить его работать отлично благодаря другу, а также вам! Вот окончательный код, чтобы вы могли видеть, как мы его решаем.

Еще раз спасибо!

Джастин дал вам очень хорошие советы:)

Вы также получите эту ошибку, если ячейка, в которой выполняется расчет, имеет ошибку, полученную из формулы.

Например, если ячейка A1 имеет # DIV/0! ошибка, то вы получите «Ошибка времени выполнения VBA Excel» 13 «Несоответствие типа» при выполнении этого кода

Я внес некоторые изменения в ваш код. Не могли бы вы проверить его для меня? Скопируйте код с номерами строк, поскольку я намеренно разместил их там.

У меня была та же проблема, что и вы упомянули выше, и мой код вчера отлично делал весь день.

Я продолжал программировать этим утром, и когда я открыл приложение (мой файл с подкачкой Auto_Open), я получил ошибку времени выполнения «13», я пошел в Интернет, чтобы найти ответы, я много пробовал вещей, модификаций и в какой-то момент я вспомнил, что где-то читал о данных «Ghost», которые остаются в ячейке, даже если мы ее не видим.

Мой код выполняет только передачу данных из одного файла, который я открыл ранее другому, и суммировать его. Мой код остановился на третьем SheetTab (так что он поступил правильно для 2 предыдущих SheetTab, где тот же код прошел без остановки) с сообщением о несоответствии типа. И он делает это каждый раз на том же SheetTab, когда я перезапускаю свой код.

Итак, я выбрал ячейку, где она остановилась, вручную введено 0,00 (поскольку несоответствие типа происходит из переменных суммирования, объявленных в DIM как Double) и скопировал эту ячейку во всех последующих ячейках, где возникла одна и та же проблема. Он решил проблему. Никогда не было сообщения снова. Ничего общего с моим кодом, кроме «Призрака» или данных из прошлого. Это похоже на то, что если вы хотите использовать Control + End и Excel, вы получите один раз, когда у вас есть данные, и удалите его. Чтобы «Сохранить» и закрыть файл, когда вы хотите использовать Control + End, убедитесь, что Excel указал вам на правую ячейку.

Разбор ошибки Type Mismatch Error

Объяснение Type Mismatch Error

Type Mismatch Error VBA возникает при попытке назначить значение между двумя различными типами переменных.

Ошибка отображается как:
run-time error 13 – Type mismatch

Например, если вы пытаетесь поместить текст в целочисленную переменную Long или пытаетесь поместить число в переменную Date.

Давайте посмотрим на конкретный пример. Представьте, что у нас есть переменная с именем Total, которая является длинным целым числом Long.

Читать еще:  Формула промежуточные итоги в excel

Если мы попытаемся поместить текст в переменную, мы получим Type Mismatch Error VBA (т.е. VBA Error 13).

Давайте посмотрим на другой пример. На этот раз у нас есть переменная ReportDate типа Date.

Если мы попытаемся поместить в эту переменную не дату, мы получим Type Mismatch Error VBA.

В целом, VBA часто прощает, когда вы назначаете неправильный тип значения переменной, например:

Тем не менее, есть некоторые преобразования, которые VBA не может сделать:

Простой способ объяснить Type Mismatch Error VBA состоит в том, что элементы по обе стороны от равных оценивают другой тип.

При возникновении Type Mismatch Error это часто не так просто, как в этих примерах. В этих более сложных случаях мы можем использовать средства отладки, чтобы помочь нам устранить ошибку.

Использование отладчика

В VBA есть несколько очень мощных инструментов для поиска ошибок. Инструменты отладки позволяют приостановить выполнение кода и проверить значения в текущих переменных.

Вы можете использовать следующие шаги, чтобы помочь вам устранить любую Type Mismatch Error VBA.

  1. Запустите код, чтобы появилась ошибка.
  2. Нажмите Debug в диалоговом окне ошибки. Это выделит строку с ошибкой.
  3. Выберите View-> Watch из меню, если окно просмотра не видно.
  4. Выделите переменную слева от equals и перетащите ее в окно Watch.
  5. Выделите все справа от равных и перетащите его в окно Watch.
  6. Проверьте значения и типы каждого.
  7. Вы можете сузить ошибку, изучив отдельные части правой стороны.

Следующее видео показывает, как это сделать.

На скриншоте ниже вы можете увидеть типы в окне просмотра.

Используя окно просмотра, вы можете проверить различные части строки кода с ошибкой. Затем вы можете легко увидеть, что это за типы переменных.

В следующих разделах показаны различные способы возникновения Type Mismatch Error VBA.

Присвоение строки числу

Как мы уже видели, попытка поместить текст в числовую переменную может привести к Type Mismatch Error VBA.

Ниже приведены некоторые примеры, которые могут вызвать ошибку:

Недействительная дата

VBA очень гибок в назначении даты переменной даты. Если вы поставите месяц в неправильном порядке или пропустите день, VBA все равно сделает все возможное, чтобы удовлетворить вас.

В следующих примерах кода показаны все допустимые способы назначения даты, за которыми следуют случаи, которые могут привести к Type Mismatch Error VBA.

Ошибка ячейки

Тонкая причина Type Mismatch Error VBA — это когда вы читаете из ячейки с ошибкой, например:

Если вы попытаетесь прочитать из этой ячейки, вы получите Type Mismatch Error.

Чтобы устранить эту ошибку, вы можете проверить ячейку с помощью IsError следующим образом.

Однако проверка всех ячеек на наличие ошибок невозможна и сделает ваш код громоздким. Лучший способ — сначала проверить лист на наличие ошибок, а если ошибки найдены, сообщить об этом пользователю.

Вы можете использовать следующую функцию, чтобы сделать это:

Ниже приведен пример использования этого кода.

Неверные данные ячейки

Как мы видели, размещение неверного типа значения в переменной вызывает Type Mismatch Error VBA. Очень распространенная причина — это когда значение в ячейке имеет неправильный тип.

Пользователь может поместить текст, такой как «Нет», в числовое поле, не осознавая, что это приведет к Type Mismatch Error в коде.

Если мы прочитаем эти данные в числовую переменную, то получим
Type Mismatch Error VBA.

Вы можете использовать следующую функцию, чтобы проверить наличие нечисловых ячеек, прежде чем использовать данные.

Вы можете использовать это так:

Имя модуля

Если вы используете имя модуля в своем коде, это может привести к
Type Mismatch Error VBA. Однако в этом случае причина может быть не очевидной.

Например, допустим, у вас есть модуль с именем «Module1». Выполнение следующего кода приведет к о
Type Mismatch Error VBA.

Различные типы объектов

До сих пор мы рассматривали в основном переменные. Мы обычно называем переменные основными типами данных.

Они используются для хранения одного значения в памяти.

В VBA у нас также есть объекты, которые являются более сложными. Примерами являются объекты Workbook, Worksheet, Range и Chart.

Если мы назначаем один из этих типов, мы должны убедиться, что назначаемый элемент является объектом того же типа. Например:

Коллекция Sheets

В VBA объект рабочей книги имеет две коллекции — Sheets и Worksheets. Есть очень тонкая разница.

  1. Worksheets — сборник рабочих листов в Workbook
  2. Sheets — сборник рабочих листов и диаграммных листов в Workbook

Лист диаграммы создается, когда вы перемещаете диаграмму на собственный лист, щелкая правой кнопкой мыши на диаграмме и выбирая «Переместить».

Если вы читаете коллекцию Sheets с помощью переменной Worksheet, она будет работать нормально, если у вас нет рабочей таблицы.

Если у вас есть лист диаграммы, вы получите
Type Mismatch Error VBA.

В следующем коде Type Mismatch Error появится в строке «Next sh», если рабочая книга содержит лист с диаграммой.

Массивы и диапазоны

Вы можете назначить диапазон массиву и наоборот. На самом деле это очень быстрый способ чтения данных.

Проблема возникает, если ваш диапазон имеет только одну ячейку. В этом случае VBA не преобразует arr в массив.

Если вы попытаетесь использовать его как массив, вы получите
Type Mismatch Error .

В этом сценарии вы можете использовать функцию IsArray, чтобы проверить, является ли arr массивом.

Заключение

На этом мы завершаем статью об Type Mismatch Error VBA. Если у вас есть ошибка несоответствия, которая не раскрыта, пожалуйста, дайте мне знать в комментариях.

Читать еще:  Excel sub or function not defined

How To Fix Runtime Error 13

Compatible with Windows 10, 8, 7, Vista, XP and 2000

Optional Offer for WinThruster by Solvusoft | EULA | Privacy Policy | Terms | Uninstall

Symptoms of Runtime Error 13

  • «Error 13» appears and crashes the active program window.
  • Your PC frequently crashes with Error 13 when running the same program.
  • “Type mismatch” is displayed.
  • “Visual Basic is able to convert and coerce many values to accomplish data type assignments that weren’t possible in earlier versions.” is displayed.
  • Windows runs sluggishly and responds slowly to mouse or keyboard input.
  • Your computer periodically “freezes” for a few seconds at a time.

These 13 error messages can appear during program installation, while a Microsoft Corporation-related software program (eg. Windows Operating System) is running, during Windows startup or shutdown, or even during the installation of the Windows operating system. Keeping track of when and where your 13 error occurs is a critical piece of information in troubleshooting the problem.

Causes of Runtime Error 13

  • Corrupt download or incomplete installation of Windows Operating System software.
  • Corruption in Windows registry from a recent Windows Operating System-related software change (install or uninstall).
  • Virus or malware infection that has corrupted Windows system files or Windows Operating System-related program files.
  • Another program maliciously or mistakenly deleted Windows Operating System-related files.

Runtime Errors such as “Error 13” can be caused by a variety of factors, so it is important that you troubleshoot each of the possible causes to prevent it from recurring.

Runtime Errors Knowledgebase

star rating here

Optional Offer for WinThruster by Solvusoft
EULA | Privacy Policy | Terms | Uninstall

Optional Offer for WinThruster by Solvusoft | EULA | Privacy Policy | Terms | Uninstall

How To Fix Runtime Error 13

Below is a list of troubleshooting steps to resolve your Error 13 problems. These troubleshooting steps get progressively more difficult and time consuming, so we strongly recommend attempting them in ascending order to avoid unnecessary time and effort.

Please Note: Click the [ ] image to expand the troubleshooting instructions for each step below. You can also click the [ ] image to hide the instructions as you proceed through each step.

Step 1: Repair Registry Entries Associated with Error 13

Manually editing the Windows registry to remove invalid Error 13 keys is not recommended unless you are PC service professional. Incorrectly editing your registry can stop your PC from functioning and create irreversible damage to your operating system. In fact, one misplaced comma can prevent your PC from booting entirely!

Because of this risk, we highly recommend using a trusted registry cleaner such as WinThruster [download] (Developed by Microsoft Gold Certified Partner) to scan and repair any Error 13-related registry problems. Using a registry cleaner [download] automates the process of finding invalid registry entries, missing file references (like the one causing your 13 error), and broken links within the registry. A backup is automatically created before each scan, with the ability to undo any changes in a single click, protecting you against the possibility of PC damage. The best part is that repairing registry errors [download] can also dramatically improve system speed and performance.

Caution: Unless you an advanced PC user, we DO NOT recommend editing the Windows registry manually. Using Registry Editor incorrectly can cause serious problems that may require you to reinstall Windows. We do not guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk.

To manually repair your Windows registry, first you need to create a backup by exporting a portion of the registry related to Error 13 (eg. Windows Operating System):

  1. Click the Start button.
  2. Type «command» in the search box. DO NOT hit ENTER yet!
  3. While holding CTRL-Shift on your keyboard, hit ENTER.
  4. You will be prompted with a permission dialog box.
  5. Click Yes.
  6. A black box will open with a blinking cursor.
  7. Type «regedit» and hit ENTER.
  8. In the Registry Editor, select the Error 13-related key (eg. Windows Operating System) you want to back up.
  9. From the File menu, choose Export.
  10. In the Save In list, select the folder where you want to save the Windows Operating System backup key.
  11. In the File Name box, type a name for your backup file, such as «Windows Operating System Backup».
  12. In the Export Range box, be sure that «Selected branch» is selected.
  13. Click Save.
  14. The file is then saved with a .reg file extension.
  15. You now have a backup of your Windows Operating System-related registry entry.

The next steps in manually editing your registry will not be discussed in this article due to the high risk of damaging your system. If you would like to learn more about manual registry editing, please see the links below.

We do not claim any responsibility for the results of the actions taken from the content linked below — complete these tasks at your own risk.

Ссылка на основную публикацию
Adblock
detector