Type mismatch ошибка как исправить

На чтение 8 мин. Просмотров 27.8k.

Mismatch Error

Содержание

  1. Объяснение Type Mismatch Error
  2. Использование отладчика
  3. Присвоение строки числу
  4. Недействительная дата
  5. Ошибка ячейки
  6. Неверные данные ячейки
  7. Имя модуля
  8. Различные типы объектов
  9. Коллекция Sheets
  10. Массивы и диапазоны
  11. Заключение

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

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

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

VBA Type Mismatch Error 13

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

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

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

Sub TypeMismatchStroka()

    ' Объявите переменную типа long integer
    Dim total As Long
    
    ' Назначение строки приведет к Type Mismatch Error
    total = "Иван"
    
End Sub

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

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

Sub TypeMismatchData()

    ' Объявите переменную типа Date
    Dim ReportDate As Date
    
    ' Назначение числа вызывает Type Mismatch Error
    ReportDate = "21-22"
    
End Sub

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

Dim x As Long

' VBA преобразует в целое число 100
x = 99.66

' VBA преобразует в целое число 66
x = "66"

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

Dim x As Long

' Type Mismatch Error
x = "66a"

Простой способ объяснить 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. Вы можете сузить ошибку, изучив отдельные части правой стороны.

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

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

VBA Type Mismatch Watch

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

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

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

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

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

Sub TextErrors()

    ' Long - длинное целое число
    Dim l As Long
    l = "a"
    
    ' Double - десятичное число
    Dim d As Double
    d = "a"
    
   ' Валюта - 4-х значное число
    Dim c As Currency
    c = "a"
    
    Dim d As Double
    ' Несоответствие типов, если ячейка содержит текст
    d = Range("A1").Value
    
End Sub

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

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

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

Sub DateMismatch()

    Dim curDate As Date
    
    ' VBA сделает все возможное для вас
    ' - Все они действительны
    curDate = "12/12/2016"
    curDate = "12-12-2016"
    curDate = #12/12/2016#
    curDate = "11/Aug/2016"
    curDate = "11/Augu/2016"
    curDate = "11/Augus/2016"
    curDate = "11/August/2016"
    curDate = "19/11/2016"
    curDate = "11/19/2016"
    curDate = "1/1"
    curDate = "1/2016"
   
    ' Type Mismatch Error
    curDate = "19/19/2016"
    curDate = "19/Au/2016"
    curDate = "19/Augusta/2016"
    curDate = "August"
    curDate = "Какой-то случайный текст"

End Sub

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

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

VBA Runtime Error

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

Dim sText As String

' Type Mismatch Error, если ячейка содержит ошибку
sText = Sheet1.Range("A1").Value

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

Dim sText As String
If IsError(Sheet1.Range("A1").Value) = False Then
    sText = Sheet1.Range("A1").Value
End If

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

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

Function CheckForErrors(rg As Range) As Long

    On Error Resume Next
    CheckForErrors = rg.SpecialCells(xlCellTypeFormulas, xlErrors).Count

End Function

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

Sub DoStuff()

    If CheckForErrors(Sheet1.Range("A1:Z1000")) > 0 Then
        MsgBox "На листе есть ошибки. Пожалуйста, исправьте и запустите макрос снова."
        Exit Sub
    End If
    
    ' Продолжайте здесь, если нет ошибок

End Sub

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

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

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

VBA Error 13

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

Dim rg As Range
Set rg = Sheet1.Range("B2:B5")

Dim cell As Range, Amount As Long
For Each cell In rg
    ' Ошибка при достижении ячейки с текстом «Нет»
    Amount = cell.Value
Next rg

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

Function CheckForTextCells(rg As Range) As Long

    ' Подсчет числовых ячеек
    If rg.Count = rg.SpecialCells(xlCellTypeConstants, xlNumbers).Count Then
        CheckForTextCells = True
    End If
    
End Function

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

Sub IspolzovanieCells()

    If CheckForTextCells(Sheet1.Range("B2:B6").Value) = False Then
        MsgBox "Одна из ячеек не числовая. Пожалуйста, исправьте перед запуском макроса"
        Exit Sub
    End If
    
    ' Продолжайте здесь, если нет ошибок

End Sub

Имя модуля

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

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

Sub IspolzovanieImeniModulya()
    
    ' Type Mismatch Error
    Debug.Print module1

End Sub

VBA Type Mismatch Module Name

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

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

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

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

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

Sub IspolzovanieWorksheet()

    Dim wk As Worksheet
    
    ' действительный
    Set wk = ThisWorkbook.Worksheets(1)
    
    ' Type Mismatch Error
    ' Левая сторона - это worksheet - правая сторона - это workbook
    Set wk = Workbooks(1)

End Sub

Коллекция Sheets

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

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

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

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

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

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

Sub SheetsError()

    Dim sh As Worksheet
    
    For Each sh In ThisWorkbook.Sheets
        Debug.Print sh.Name
    Next sh

End Sub

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

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

Sub IspolzovanieMassiva()

    Dim arr As Variant
    
    ' Присвойте диапазон массиву
    arr = Sheet1.Range("A1:B2").Value
    
    ' Выведите значение в строку 1, столбец 1
    Debug.Print arr(1, 1)

End Sub

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

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

Sub OshibkaIspolzovanieMassiva()

    Dim arr As Variant
    
    ' Присвойте диапазон массиву
    arr = Sheet1.Range("A1").Value
    
    ' Здесь будет происходить Type Mismatch Error
    Debug.Print arr(1, 1)

End Sub

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

Sub IspolzovanieMassivaIf()

    Dim arr As Variant
    
    ' Присвойте диапазон массиву
    arr = Sheet1.Range("A1").Value
    
    ' Здесь будет происходить Type Mismatch Error
    If IsArray(arr) Then
        Debug.Print arr(1, 1)
    Else
        Debug.Print arr
    End If

End Sub

Заключение

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

 

Gagarin13

Пользователь

Сообщений: 201
Регистрация: 21.05.2018

#1

20.08.2018 00:08:55

Код
Sub Del_Array_SubStr_Расщепление_Неточно_Соответствие()
    Dim sSubStr As String    'искомое слово или фраза
    Dim lCol As Long    'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim avArr, lr As Long
    Dim arr

    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 12))
    If lCol = 0 Then Exit Sub
    Application.ScreenUpdating = 0
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    'заносим в массив значения листа, в котором необходимо удалить строки
    arr = Cells(1, lCol).Resize(lLastRow).Value
    'Получаем с Расщепление значения, которые надо удалить в активном листе
    With Sheets("Расщепление") 'Имя листа с диапазоном значений на удаление
        avArr = .Range(.Cells(3, 14), .Cells(.Rows.Count, 14).End(xlUp))
    End With
    'удаляем
    Dim rr As Range
    For lr = 1 To UBound(avArr, 1)
        sSubStr = avArr(lr, 1)
        For li = 1 To lLastRow 'цикл с первой строки до конца
            If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then
                If rr Is Nothing Then
                    Set rr = Cells(li, 12)
                Else
                    Set rr = Union(rr, Cells(li, 12))
                End If
            End If
            DoEvents
        Next li
        DoEvents
    Next lr
   If Not rr Is Nothing Then rr.Rows.Interior.Color = 65535
    Application.ScreenUpdating = 1
End Sub

Здравствуйте уважаемые форумчане, такая проблема: вылазит в некоторых макросах такая ошибка:Run-time error «13» type mismatch

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

Ошибку показывает в этой строке:

Код
For lr = 1 To UBound(avArr, 1)

Что именно ему тут не нравиться, не понимаю)
Заранее спасибо за помощь

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#2

20.08.2018 00:11:22

Цитата
Она то есть, то ее нету.

Ну да. Подсунули программе неправильные данные — есть ошибка. Дали корректные — нет ошибки.
Ошибка говорит о несоответствии типов данных. Вместо даты текст, вместо числа пустая строка «», в переменную типа Вyte пытаетесь записать число 300… Поверяйте исходные данные.
Когда высветится ошибка, нажмите Debug — Вам редактор покажет подсвеченную желтым строку. Наведите курсор на переменую, ссылку… — в подсказке увидите значение.

Все?
Как Вы тему назовете, так она и поплыват… Если нужно решение по конкретному коду — название темы должно отражать суть задачи. Предложите новое. Модераторы заменят. И файл-пример поможет.

 

Gagarin13

Пользователь

Сообщений: 201
Регистрация: 21.05.2018

#3

20.08.2018 09:24:55

Цитата
vikttur написал:
Вместо даты текст, вместо числа пустая строка «», в переменную типа Вyte пытаетесь записать число 300… Поверяйте исходные данные

Да но данные всегда одинаковы, это текст да цифры и пустых строк никогда не бывает, но тем не менее иногда ошибка вылазит.

ivanok_v2,как можно исправить?

vikttur, Спасибо, извиняюсь если глупые вопросы, с макросами я слабо)

Цитата
vikttur написал: Наведите курсор на переменую, ссылку… — в подсказке увидите значение.

У меня нету подсказок, не знаю почему

Изменено: Gagarin1320.08.2018 11:21:07

 

ivanok_v2

Пользователь

Сообщений: 712
Регистрация: 19.08.2018

#4

20.08.2018 10:04:47

Цитата
Gagarin13 написал:For lr = 1 To UBound(avArr, 1)

этот код не всегда нормально срабатывает

Код
  avArr = .Range(.Cells(3, 14), .Cells(.Rows.Count, 14).End(xlUp))

тоесть, масив пустой или не двухмерный

Код
UBound(avArr, 1)
 

Gagarin13

Пользователь

Сообщений: 201
Регистрация: 21.05.2018

..

Изменено: Gagarin1320.08.2018 11:21:13

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Загоняйте в массив два столбца, добавьте с помощью ReDim второй столбец, уберите единицу — UBound(avArr). Вариантов много…

 

Gagarin13

Пользователь

Сообщений: 201
Регистрация: 21.05.2018

Изменено: Gagarin1320.08.2018 11:21:17

 

Gagarin13

Пользователь

Сообщений: 201
Регистрация: 21.05.2018

#8

20.08.2018 10:46:20

Цитата
.

Изменено: Gagarin1320.08.2018 11:20:10

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#9

20.08.2018 10:50:00

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

Цитата
с макросами я слабо)

а с поиском по необъятному И-нету? Получили подсказку — поискали самостоятельно. Разжевывать на форуме  справку по ReDim?

 

ivanok_v2

Пользователь

Сообщений: 712
Регистрация: 19.08.2018

#10

20.08.2018 10:50:50

Цитата
Gagarin13 написал: У меня нету подсказок, не знаю почему

В чем сложность? массив создать? или проверить, что переменная есть массив?

В этой статье

  • В этой статье
  • Поддержка и обратная связь
  • Contact Form
  • Search This Blog
  • Как исправить ошибку во время выполнения 13
  • Компания
  • Софт
  • Ресурсы
  • Техподдержка
  • Подключить
  • How to Fix Type Mismatch (Error 13)
  • How to Fix This Error
  • Type Mismatch Error with Number
  • Runtime Error 6 Overflow
  • Clean the Registry
  • Scan For Viruses/Malware
  • Other Situations When it can Occurs
  • Создатели Type mismatch Трудности
  • Ошибки во время выполнения в базе знаний
  • What Causes Runtime Error 13?

В этой статье

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

Тем не менее, эта ошибка может по-прежнему повторяться и имеет следующие причины и решения:

  • Причина: Переменная или свойство имеют неверный тип. Например, переменная целого типа, не может принимать строковые значения, которые не распознаются как целые числа.

Решение: Попробуйте выполнять задания только между совместимыми типами данных. Например, значение типа Integer всегда можно присвоить типу Long, значение Single — типу Double, а любой тип (за исключением пользовательского) — типу Variant.

  • Причина: В процедуру, требующую отдельное свойство или значение, передан объект.

Решение: Передайте отдельное свойство или вызовите метод, соответствующий объекту.

  • Причина: Используется имя модуля или проекта, где требуется выражение, например:

    Debug.Print MyModule

Решение: Укажите выражение, которое будет отображаться.

  • Причина: Попытка использовать традиционный механизм обработки ошибок Basic со значениями Variant с подтипом Error (10, vbError), например:

    Error CVErr(n)

Решение: Чтобы воссоздать ошибку, необходимо сопоставить ее с пользовательской или внутренней ошибкой Visual Basic, после чего снова создать ее.

  • Причина: Значение CVErr не может быть преобразовано в тип Date. Например:

    MyVar = CDate(CVErr(9))

Решение: Используйте оператор Select Case или аналогичную конструкцию, чтобы сопоставить возвращаемое значение CVErr с соответствующим значением.

  • Причина: Во время выполнения эта ошибка указывает на то, что переменная Variant, используемая в выражении, имеет неверный подтип, либо переменная Variant, содержащая массив, используется в операторе Print #.

Решение: Для печати массивов используйте цикл в котором каждый элемент отображается отдельно.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Примечание

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Тема

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность и файлы cookie
  • Условия использования
  • Товарные знаки
  • © Microsoft 2022

Contact Form

Name

Email
*

Message
*
<текстареа class=’contact-form-email-message’ cols=’30’ id=’ContactForm1_contact-form-email-message’ name=’email-message’ rows=’15’>

Search This Blog

Как исправить ошибку во время выполнения 13

Рекомендации: Проверьте свой компьютер на наличие ошибок. [Скачать WinThruster — продукт Solvusoft]

Установить необязательные продукты – WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

Просмотреть ошибки в алфавитном порядке:

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Microsoft
IBM
Apple
ASP
BBB

Компания

  • О нас
  • Обратная связь
  • Наши партнёры
  • 90-дневная гарантия возврата средств
  • Автопродление лицензии

    Софт

  • WinThruster
  • DriverDoc
  • WinSweeper
  • FileViewPro
  • SpaceSeeker

    Ресурсы

  • Энциклопедия расширений файлов
  • Каталог важных файлов
  • База данных драйверов устройств
  • Устранение системных ошибок
  • Справочник вредоносных ПО

    Техподдержка

  • ЧаВо / FAQ
  • Утерян активационный ключ
  • Руководство пользователя
  • Удаление программы

    Подключить

  • БлогRSS Icon
  • ФейсбукFacebook Icon
  • ТвиттерTwitter Icon
  • Новостная рассылкаNewsletter Icon

    How to Fix Type Mismatch (Error 13)

    The best way to deal with this error is to use to go to the statement to run a specific line of code or show a message box to the user when the error occurs. But you can also check the court step by step before executing it. For this, you need to use VBA’s debug tool, or you can also use the shortcut key F8.

    How to Fix This Error

    Since most computer users have little to no programming experienced or knowhow, it may appear as though there is nothing that can do about this error. However, if you were to make that assumption, you would be wrong. While the application may be generating a runtime error due to its inability to locate a specific process or file, the reason why this error is occurring, could be due to a bug in the code of the program, file corruption or a bad installation. Developers are constantly releasing updates and patches for their applications, so that’s something you should keep in mind.

    Type Mismatch Error with Number

    You’re gonna have you can have the same error while dealing with numbers where you get a different value when you trying to specify a number to a variable.

    In the following example, you have an error in cell A1 which is supposed to be a numeric value. So when you run the code, VBA shows you the runtime 13 error because it cannot identify the value as a number.

    Sub myMacro()
    Dim iNum As Long
    iNum = Range(“A6”).Value
    End Sub

    Runtime Error 6 Overflow

    In VBA, there are multiple data types to deal with numbers and each of these data types has a range of numbers that you can assign to it. But there is a problem when you specify a number that is out of the range of the data type.

    In that case, we will show you runtime error 6 overflow which indicates you need to change the data type and the number you have specified is out of the range.

    Clean the Registry

    Registry cleaners are very useful tools, as they not only improve the performance of your system, but are also capable of fixing certain errors, such as runtime error 13. If you don’t know what the registry is, it’s basically a database used by your operating system in order to store vital configuration settings. The downside of the registry is that it’s also susceptible to data corruption, which can lead to a plethora of other symptoms, such as system instability, sluggish performance and random errors. Registry cleaners are basically the solution to this problem, as they scan through your systems registry and iron out all of its flaws.

    There are many registry cleaner programs out there, but I personally recommend you use Advanced System Repair Pro, which you can download from here:

    CLICK HERE TO CHECK OUT ADVANCED SYSTEM REPAIR PRO

    Scan For Viruses/Malware

    Viruses and malware pose a major problem for the vast majority of computer users out there. Runtime errors are just one of many symptoms of a computer infected with viruses. If a virus or malware gets onto your system, not only will it replicate itself, but it can also corrupt files, some of which may be required for certain applications on your computer to run. Your best option is to ensure that the runtime error 13 you’re receiving isn’t the result of a virus; this can be done by running a full virus scan on your system. I’m assuming you already have antivirus/malware removal software on your computer, but in the event that you do not, I suggest you try out SpyHunter, alternatively you can check out my post on the best antivirus software.

    For more information on SpyHunter, visit the following link:

    CLICK HERE TO CHECK OUT SPYHUNTER

    Other Situations When it can Occurs

    There might be some other situations in that you could face the runtime error 14: Type Mismatch.

    1. When you assign a range to an array but that range only consists of a single cell.
    2. When you define a variable as an object but by writing the code you specify a different object to that variable.
    3. When you specify a variable as a worksheet but use sheets collection in the code or vice versa.

    Создатели Type mismatch Трудности

    Проблемы Type mismatch могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Type mismatch, или к вирусам / вредоносному ПО.

    В частности, проблемы с Type mismatch, вызванные:

    • Поврежденная или недопустимая запись реестра Type mismatch.
    • Зазаражение вредоносными программами повредил файл Type mismatch.
    • Type mismatch злонамеренно удален (или ошибочно) другим изгоем или действительной программой.
    • Другое программное обеспечение, конфликтующее с Windows Operating System, Type mismatch или общими ссылками.
    • Поврежденная установка или загрузка Windows Operating System (Type mismatch).

    Продукт Solvusoft

    WinThruster 2022 – Проверьте свой компьютер на наличие ошибок.
    Загрузка

    Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

    Установить необязательные продукты – WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

    Microsoft Partner

    Ошибки во время выполнения в базе знаний

    Идентификатор статьи:

    120857

    Автор статьи:

    Jay Geater

    Последнее обновление:

    Популярность:

    star rating here

    Загрузка (Исправление ошибки)

    Установить необязательные продукты – WinThruster (Solvusoft)
    Лицензия | Политика защиты личных сведений | Условия | Удаление

    Tweet

    What Causes Runtime Error 13?

    The runtime errors occur when an application is running, hence the word “runtime”, this means it will only occur when attempting to run an application or use a specific function within that application. As was mentioned earlier, mismatch errors are typically the catalyst. However, the mismatch within the programs code can be the result of a number of things such as.

    • Conflicts Within System Registry
    • Malware/Virus Infection
    • Microsoft Office Error
    • Operating System Requiring An Update

    Источники

    • https://learn.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/type-mismatch-error-13
    • https://www.excelvbasolutions.com/2020/11/type-mismatch-error-run-time-error-13.html
    • https://www.solvusoft.com/ru/errors/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%B2%D0%BE-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F/microsoft-corporation/windows-operating-system/error-13-type-mismatch/
    • https://excelchamps.com/vba/type-mismatch-error-13/
    • https://www.compuchenna.co.uk/runtime-error-13/

    [свернуть]

    Содержание

    1. Несоответствие типов (ошибка 13)
    2. Поддержка и обратная связь
    3. Как исправить ошибку во время выполнения 13
    4. Обзор «Type mismatch»
    5. Почему происходит ошибка времени выполнения 13?
    6. Типичные ошибки Type mismatch
    7. Создатели Type mismatch Трудности
    8. Разбор ошибки Type Mismatch Error
    9. Объяснение Type Mismatch Error
    10. Использование отладчика
    11. Присвоение строки числу
    12. Недействительная дата
    13. Ошибка ячейки
    14. Неверные данные ячейки
    15. Имя модуля
    16. Различные типы объектов
    17. Коллекция Sheets
    18. Массивы и диапазоны
    19. Заключение

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

    Тем не менее, эта ошибка может по-прежнему повторяться и имеет следующие причины и решения:

    • Причина:Переменная или свойство имеют неверный тип. Например, переменная целого типа, не может принимать строковые значения, которые не распознаются как целые числа.

    Решение: Попробуйте выполнять задания только между совместимыми типами данных. Например, значение типа Integer всегда можно присвоить типу Long, значение Single — типу Double, а любой тип (за исключением пользовательского) — типу Variant.

    • Причина: В процедуру, требующую отдельное свойство или значение, передан объект.

    Решение: Передайте отдельное свойство или вызовите метод, соответствующий объекту.

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

    Решение: Укажите выражение, которое будет отображаться.

    Причина: Попытка использовать традиционный механизм обработки ошибок Basic со значениями Variant с подтипом Error (10, vbError), например:

    Решение: Чтобы воссоздать ошибку, необходимо сопоставить ее с пользовательской или внутренней ошибкой Visual Basic, после чего снова создать ее.

    Причина: Значение CVErr не может быть преобразовано в тип Date. Например:

    Решение: Используйте оператор Select Case или аналогичную конструкцию, чтобы сопоставить возвращаемое значение CVErr с соответствующим значением.

    • Причина: Во время выполнения эта ошибка указывает на то, что переменная Variant, используемая в выражении, имеет неверный подтип, либо переменная Variant, содержащая массив, используется в операторе Print #.

    Решение: Для печати массивов используйте цикл в котором каждый элемент отображается отдельно.

    Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

    Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

    Поддержка и обратная связь

    Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

    Источник

    Как исправить ошибку во время выполнения 13

    Номер ошибки: Ошибка во время выполнения 13
    Название ошибки: Type mismatch
    Описание ошибки: Visual Basic is able to convert and coerce many values to accomplish data type assignments that weren’t possible in earlier versions.
    Разработчик: Microsoft Corporation
    Программное обеспечение: Windows Operating System
    Относится к: Windows XP, Vista, 7, 8, 10, 11

    Обзор «Type mismatch»

    «Type mismatch» часто называется ошибкой во время выполнения (ошибка). Когда дело доходит до Windows Operating System, инженеры программного обеспечения используют арсенал инструментов, чтобы попытаться сорвать эти ошибки как можно лучше. Тем не менее, возможно, что иногда ошибки, такие как ошибка 13, не устранены, даже на этом этапе.

    Ошибка 13, рассматриваемая как «Visual Basic is able to convert and coerce many values to accomplish data type assignments that weren’t possible in earlier versions.», может возникнуть пользователями Windows Operating System в результате нормального использования программы. Когда это происходит, конечные пользователи программного обеспечения могут сообщить Microsoft Corporation о существовании ошибки 13 ошибок. Команда программирования может использовать эту информацию для поиска и устранения проблемы (разработка обновления). Чтобы исправить любые документированные ошибки (например, ошибку 13) в системе, разработчик может использовать комплект обновления Windows Operating System.

    Почему происходит ошибка времени выполнения 13?

    Сбой устройства или Windows Operating System обычно может проявляться с «Type mismatch» в качестве проблемы во время выполнения. Проанализируем некоторые из наиболее распространенных причин ошибок ошибки 13 во время выполнения:

    Ошибка 13 Crash — Номер ошибки вызовет блокировка системы компьютера, препятствуя использованию программы. Это возникает, когда Windows Operating System не реагирует на ввод должным образом или не знает, какой вывод требуется взамен.

    Утечка памяти «Type mismatch» — последствия утечки памяти Windows Operating System связаны с неисправной операционной системой. Повреждение памяти и другие потенциальные ошибки в коде могут произойти, когда память обрабатывается неправильно.

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

    Как правило, ошибки Type mismatch вызваны повреждением или отсутствием файла связанного Windows Operating System, а иногда — заражением вредоносным ПО. Большую часть проблем, связанных с данными файлами, можно решить посредством скачивания и установки последней версии файла Microsoft Corporation. Помимо прочего, в качестве общей меры по профилактике и очистке мы рекомендуем использовать очиститель реестра для очистки любых недопустимых записей файлов, расширений файлов Microsoft Corporation или разделов реестра, что позволит предотвратить появление связанных с ними сообщений об ошибках.

    Типичные ошибки Type mismatch

    Частичный список ошибок Type mismatch Windows Operating System:

    • «Ошибка Type mismatch. «
    • «Ошибка программного обеспечения Win32: Type mismatch»
    • «Извините за неудобства — Type mismatch имеет проблему. «
    • «К сожалению, мы не можем найти Type mismatch. «
    • «Type mismatch не найден.»
    • «Ошибка запуска программы: Type mismatch.»
    • «Type mismatch не работает. «
    • «Отказ Type mismatch.»
    • «Type mismatch: путь приложения является ошибкой. «

    Обычно ошибки Type mismatch с Windows Operating System возникают во время запуска или завершения работы, в то время как программы, связанные с Type mismatch, выполняются, или редко во время последовательности обновления ОС. Выделение при возникновении ошибок Type mismatch имеет первостепенное значение для поиска причины проблем Windows Operating System и сообщения о них вMicrosoft Corporation за помощью.

    Создатели Type mismatch Трудности

    Проблемы Type mismatch могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Type mismatch, или к вирусам / вредоносному ПО.

    В частности, проблемы с Type mismatch, вызванные:

    • Поврежденная или недопустимая запись реестра Type mismatch.
    • Зазаражение вредоносными программами повредил файл Type mismatch.
    • Type mismatch злонамеренно удален (или ошибочно) другим изгоем или действительной программой.
    • Другое программное обеспечение, конфликтующее с Windows Operating System, Type mismatch или общими ссылками.
    • Поврежденная установка или загрузка Windows Operating System (Type mismatch).

    Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

    Источник

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

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

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

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

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

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

    Если мы попытаемся поместить текст в переменную, мы получим 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. Если у вас есть ошибка несоответствия, которая не раскрыта, пожалуйста, дайте мне знать в комментариях.

    Источник

    0 / 0 / 0

    Регистрация: 22.05.2009

    Сообщений: 3

    1

    24.05.2009, 23:12. Показов 66686. Ответов 25


    Студворк — интернет-сервис помощи студентам

    В приложении файл с таблицей эксель и макросом.
    Для работы макроса — выделите ячейки ((1,3)23,5))
    выдает ошщибку, причем раз через раз, до некоторых пор с этим куском все работало отменно.
    Что это может быть? баг?
    Очень нужна помощь



    0



    886 / 681 / 101

    Регистрация: 23.01.2009

    Сообщений: 1,582

    24.05.2009, 23:31

    2

    Это не «баг». Это «отсутствие проверки входных данных».

    При калькуляции возникает ситуация, когда код пытается сконвертировать текстовое значение «-» в число.
    Ессессно, у VB это не выходит…



    0



    Джонни21

    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    19.05.2015, 06:58

    3

    Люди, такая же проблема! Объявил переменные с типом Double, присвоил переменным значения из TextBox1.Text с помощью CDbl, вывожу тоже из переменной типа Double, вся программа с этим типом чёртовым, но, увы и ах, VBA умудряется выдать мне Run-time error 13 — Type Dismatch! Помогите дураку) Вот код:

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    Private Sub CommandButton1_Click()
    Dim a, b, c, d, e, f, x, y As Double
    a = CDbl(TextBox1.Text)
    b = CDbl(TextBox2.Text)
    x = CDbl(TextBox3.Text)
    y = CDbl(TextBox4.Text)
     
    c = a * (x / y)
    d = Math.Tan(c)
    e = b * (y / b)
    c = 1 / (Math.Tan(e))
    e = d - c
    c = a * (x ^ 2)
    d = b * (y ^ 2)
    f = c + d
    c = e / f
    d = Math.Sqr(a * x)
    e = Math.Sqr(b * y)
    f = d + e
    d = Math.Exp(f)
    f = c * d
     
    Label1.Caption = CStr(f)
     
    End Sub



    0



    es geht mir gut

    11264 / 4746 / 1183

    Регистрация: 27.07.2011

    Сообщений: 11,438

    19.05.2015, 07:34

    4

    В 3-6 -й строке?Скорее всего из-за десятичных разделителей
    И объявите переменные нормально.



    0



    Pro_grammer

    6794 / 2816 / 527

    Регистрация: 24.04.2011

    Сообщений: 5,308

    Записей в блоге: 10

    19.05.2015, 07:36

    5

    Цитата
    Сообщение от Джонни21
    Посмотреть сообщение

    вся программа с этим типом чёртовым

    При таком объявлении переменных

    Visual Basic
    1
    
    Dim a, b, c, d, e, f, x, y As Double

    У вас Double только y , остальные Variant
    Для каждой пишите As Double, или #



    1



    SoftIce

    es geht mir gut

    11264 / 4746 / 1183

    Регистрация: 27.07.2011

    Сообщений: 11,438

    19.05.2015, 07:38

    6

    Цитата
    Сообщение от Джонни21
    Посмотреть сообщение

    Dim a, b, c, d, e, f, x, y As Double

    Visual Basic
    1
    
    Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double, x As Double, y As Double

    Лень писать так? Через копипасту дело 10 секунд

    Pro_grammer опередил



    0



    Джонни21

    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    19.05.2015, 09:02

    7

    Попробовал прописать на каждую переменную тип — ошибка та же самая…

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    Private Sub CommandButton1_Click()
    Dim a As Double
    Dim b As Double
    Dim c As Double
    Dim d As Double
    Dim e As Double
    Dim f As Double
    Dim x As Double
    Dim y As Double
    a = CDbl(TextBox1.Text)
    b = CDbl(TextBox2.Text)
    x = CDbl(TextBox3.Text)
    y = CDbl(TextBox4.Text)
     
    c = a * (x / y)
    d = Math.Tan(c)
    e = b * (y / b)
    c = 1 / (Math.Tan(e))
    e = d - c
    c = a * (x ^ 2)
    d = b * (y ^ 2)
    f = c + d
    c = e / f
    d = Math.Sqr(a * x)
    e = Math.Sqr(b * y)
    f = d + e
    d = Math.Exp(f)
    f = c * d
     
    Label1.Caption = CStr(f)
     
    End Sub



    0



    SoftIce

    es geht mir gut

    11264 / 4746 / 1183

    Регистрация: 27.07.2011

    Сообщений: 11,438

    19.05.2015, 09:08

    8

    Цитата
    Сообщение от SoftIce
    Посмотреть сообщение

    Скорее всего из-за десятичных разделителей

    Вы хоть читаете. что вам пишут?

    И Вам трудно написать в какой строке ошибка?

    Попробуйте так

    Visual Basic
    1
    
    a = CDbl(Replace(TextBox1.Text,".",","))



    0



    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    19.05.2015, 09:26

    9

    Попробовал и с точкой и с запятой вписывать значения — ноль эмоций.

    А ошибку выдаёт на строке присвоения переменной значения из TextBox, т.е. если у меня вещественное число во второй ячейке прописано из 4-х, то ошибка на b = CDbl(TextBox2.Text)



    0



    Hugo121

    6878 / 2810 / 534

    Регистрация: 19.10.2012

    Сообщений: 8,573

    19.05.2015, 10:34

    10

    Если

    Visual Basic
    1
    
    Dim a As Double

    то в строке

    Visual Basic
    1
    
    a = CDbl(TextBox1.Text)

    это CDbl() уже лишнее.

    Проверьте:

    Visual Basic
    1
    2
    3
    4
    
    Dim a As Double
    Dim s$: s = "12.13"
    a = s
    a = CDbl(s)



    1



    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    19.05.2015, 10:46

    11

    Я Вас не очень понял. для чего мне это нужно? Мне надо текстовую строку из элемента TextBox1.Text перевести в число типа Double. Самое интересное, что если прописать лишь целые значения программа считает это всё!

    Вот сама программка, может, так наглядней будет)



    0



    6878 / 2810 / 534

    Регистрация: 19.10.2012

    Сообщений: 8,573

    19.05.2015, 11:23

    12

    Работает без проблем. С точкой.



    0



    SoftIce

    es geht mir gut

    11264 / 4746 / 1183

    Регистрация: 27.07.2011

    Сообщений: 11,438

    19.05.2015, 11:46

    13

    Пробуй так

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    Private Sub CommandButton1_Click()
    Dim a As Double
    Dim b As Double
    Dim c As Double
    Dim d As Double
    Dim e As Double
    Dim f As Double
    Dim x As Double
    Dim y As Double
    'a = CDbl(TextBox1.Text)
    a = Val(Replace(TextBox1.Text, ",", "."))
    'b = CDbl(TextBox2.Text)
    b = Val(Replace(TextBox2.Text, ",", "."))
    'x = CDbl(TextBox3.Text)
    x = Val(Replace(TextBox3.Text, ",", "."))
    'y = CDbl(TextBox4.Text)
    y = Val(Replace(TextBox4.Text, ",", "."))



    1



    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    19.05.2015, 17:11

    14

    Спасибо огромное, так заработало!))



    0



    6878 / 2810 / 534

    Регистрация: 19.10.2012

    Сообщений: 8,573

    19.05.2015, 17:28

    15

    А говорили пробовали с точкой… Наврали?



    0



    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    20.05.2015, 06:20

    16

    Цитата
    Сообщение от Hugo121
    Посмотреть сообщение

    А говорили пробовали с точкой… Наврали?

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



    0



    6878 / 2810 / 534

    Регистрация: 19.10.2012

    Сообщений: 8,573

    20.05.2015, 08:51

    17

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



    0



    0 / 0 / 0

    Регистрация: 19.05.2015

    Сообщений: 14

    20.05.2015, 18:03

    18

    В любом случае, спасибо за помощь)



    0



    odua

    0 / 0 / 0

    Регистрация: 02.08.2017

    Сообщений: 1

    16.08.2017, 16:58

    19

    Доброго времени суток,
    в продолжении по ошибке 13

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Sub F1_OST()
        Dim arrLink As Variant
        Dim newBook As Workbook
        Dim sLink As Variant
        ThisWorkbook.Sheets(Array(3, 4, 5, 6, 7)).Copy
        Set newBook = Application.Workbooks(Application.Workbooks.Count)
        arrLink = newBook.LinkSources(XlLink.xlExcelLinks)
        For Each sLink In arrLink
        newBook.BreakLink sLink, xlLinkTypeExcelLinks
        Next
    End Sub

    тормозит тут

    Visual Basic
    1
    
    For Each sLink In arrLink

    можете что посоветовать?
    заранее благодарю



    0



    pashulka

    4131 / 2235 / 940

    Регистрация: 01.12.2010

    Сообщений: 4,624

    16.08.2017, 17:11

    20

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Private Sub Test()
        Dim arrLink As Variant, varLink As Variant
        
        If ThisWorkbook.Worksheets.Count < 7 Then Exit Sub
        ThisWorkbook.Worksheets(Array(3, 4, 5, 6, 7)).Copy
     
        arrLink = ActiveWorkbook.LinkSources(xlExcelLinks)
        If Not IsArray(arrLink) Then Exit Sub
     
        For Each varLink In arrLink
            ActiveWorkbook.BreakLink varLink, xlExcelLinks
        Next
    End Sub



    0



    Понравилась статья? Поделить с друзьями:

    Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Type mismatch vba excel ошибка runtime 13
  • Type mismatch in expression access ошибка
  • Tx r32le8k ошибка 2
  • Tx pr50vt30 ошибка 7

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии