Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Run-time error '13'; Type mismatch - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Run-time error '13'; Type mismatch (Формулы/Formulas)
Run-time error '13'; Type mismatch
vasilek7777 Дата: Пятница, 29.06.2018, 20:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый вечер!
Подскажите пожалуйста в чем проблема, выдает ошибку "Run-time error '13'; Type mismatch" при выполнении строчки
[vba]
Код
For j = 1 To LastRow1
For Each rRow In outData.UsedRange.Rows

If inData.Cells(j, 8) = rRow.Cells(7) Then

[color=red]If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then[/color]

inData.Cells(j, 10) = rRow.Cells(1)
inData.Cells(j, 11) = rRow.Cells(13)
inData.Cells(j, 12) = rRow.Cells(14)
inData.Cells(j, 13) = rRow.Cells(3)
inData.Cells(j, 14) = rRow.Cells(5)
[/vba]
До этого все было хорошо, сделала новую выгрузку, поля те же, типы те же. Пробовала приводить к одному типу, безуспешно.
 
Ответить
СообщениеДобрый вечер!
Подскажите пожалуйста в чем проблема, выдает ошибку "Run-time error '13'; Type mismatch" при выполнении строчки
[vba]
Код
For j = 1 To LastRow1
For Each rRow In outData.UsedRange.Rows

If inData.Cells(j, 8) = rRow.Cells(7) Then

[color=red]If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then[/color]

inData.Cells(j, 10) = rRow.Cells(1)
inData.Cells(j, 11) = rRow.Cells(13)
inData.Cells(j, 12) = rRow.Cells(14)
inData.Cells(j, 13) = rRow.Cells(3)
inData.Cells(j, 14) = rRow.Cells(5)
[/vba]
До этого все было хорошо, сделала новую выгрузку, поля те же, типы те же. Пробовала приводить к одному типу, безуспешно.

Автор - vasilek7777
Дата добавления - 29.06.2018 в 20:39
_Boroda_ Дата: Пятница, 29.06.2018, 20:54 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
1. Прочитайте Правила форума
2. Оформите код тегами - в режиме правки поста выделите код и нажмите кнопку # на панельке чуть выше
3. Приложите пример файла с полным кодом макроса
4. Вы точно уверены, что
До этого все было хорошо
?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение1. Прочитайте Правила форума
2. Оформите код тегами - в режиме правки поста выделите код и нажмите кнопку # на панельке чуть выше
3. Приложите пример файла с полным кодом макроса
4. Вы точно уверены, что
До этого все было хорошо
?

Автор - _Boroda_
Дата добавления - 29.06.2018 в 20:54
vasilek7777 Дата: Пятница, 29.06.2018, 22:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо!
Да, уверена, единственное, выгрузка новая, но запрос тот же(т.е. типы полей выгрузиться должны были без изменений)(

[vba]
Код

Option Explicit

Sub K_insert_Z()

Dim outData As Worksheet
Dim inData As Worksheet
Dim rRow As Range
Dim iRow&
Dim j As Integer

    Windows("may_Za.xlsm").Activate
    Dim LastRow1 As Integer

    'table borders KS
    LastRow1 = Worksheets("Part1").Cells(Rows.Count, 1).End(xlUp).Row

    'download KS
    Set outData = Workbooks("may_KS.xlsx").Worksheets("export-12")

    'insert KS in Za
    Set inData = Workbooks("may_Za.xlsm").Worksheets("Part1")

    'first row in the sheet
    iRow = 2

    'Dim FormulaCells As Range, ContentCells As Range
    'Dim cells As Rangege

    For j = 1 To LastRow1
        For Each rRow In outData.UsedRange.Rows

            If inData.Cells(j, 8) = rRow.Cells(7) Then

               If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
                
                    inData.Cells(j, 10) = rRow.Cells(1)
                    inData.Cells(j, 11) = rRow.Cells(13)
                    inData.Cells(j, 12) = rRow.Cells(14)
                    inData.Cells(j, 13) = rRow.Cells(3)
                    inData.Cells(j, 14) = rRow.Cells(5)
                    'inData.cells(j, 14).Interrior.Color

                End If
            End If

            iRow = iRow + 1

        Next rRow
    Next j
End Sub
[/vba]
К сообщению приложен файл: Module3.bas (1.3 Kb)
 
Ответить
СообщениеСпасибо!
Да, уверена, единственное, выгрузка новая, но запрос тот же(т.е. типы полей выгрузиться должны были без изменений)(

[vba]
Код

Option Explicit

Sub K_insert_Z()

Dim outData As Worksheet
Dim inData As Worksheet
Dim rRow As Range
Dim iRow&
Dim j As Integer

    Windows("may_Za.xlsm").Activate
    Dim LastRow1 As Integer

    'table borders KS
    LastRow1 = Worksheets("Part1").Cells(Rows.Count, 1).End(xlUp).Row

    'download KS
    Set outData = Workbooks("may_KS.xlsx").Worksheets("export-12")

    'insert KS in Za
    Set inData = Workbooks("may_Za.xlsm").Worksheets("Part1")

    'first row in the sheet
    iRow = 2

    'Dim FormulaCells As Range, ContentCells As Range
    'Dim cells As Rangege

    For j = 1 To LastRow1
        For Each rRow In outData.UsedRange.Rows

            If inData.Cells(j, 8) = rRow.Cells(7) Then

               If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
                
                    inData.Cells(j, 10) = rRow.Cells(1)
                    inData.Cells(j, 11) = rRow.Cells(13)
                    inData.Cells(j, 12) = rRow.Cells(14)
                    inData.Cells(j, 13) = rRow.Cells(3)
                    inData.Cells(j, 14) = rRow.Cells(5)
                    'inData.cells(j, 14).Interrior.Color

                End If
            End If

            iRow = iRow + 1

        Next rRow
    Next j
End Sub
[/vba]

Автор - vasilek7777
Дата добавления - 29.06.2018 в 22:40
Pelena Дата: Пятница, 29.06.2018, 23:11 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
[vba]
Код
If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
[/vba]Это условие неверно записано.
Попробуйте так [vba]
Код
If inData.Cells(j, 2) < rRow.Cells(3) And rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[vba]
Код
If inData.Cells(j, 2) < rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
[/vba]Это условие неверно записано.
Попробуйте так [vba]
Код
If inData.Cells(j, 2) < rRow.Cells(3) And rRow.Cells(3) < inData.Cells(j, 2) + Minute("00:40:00") Then
[/vba]

Автор - Pelena
Дата добавления - 29.06.2018 в 23:11
_Boroda_ Дата: Суббота, 30.06.2018, 03:18 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы точно уверены

Да, уверена

Это условие неверно записано

Я именно про это и намекал
первый кусок [vba]
Код
inData.Cells(j, 2) < rRow.Cells(3)
[/vba]дает True или False, а потом Вы полученное пытаетесь сравнить с каким-то значением (минутами)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Вы точно уверены

Да, уверена

Это условие неверно записано

Я именно про это и намекал
первый кусок [vba]
Код
inData.Cells(j, 2) < rRow.Cells(3)
[/vba]дает True или False, а потом Вы полученное пытаетесь сравнить с каким-то значением (минутами)

Автор - _Boroda_
Дата добавления - 30.06.2018 в 03:18
vasilek7777 Дата: Суббота, 30.06.2018, 22:09 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Да нет, все работало именно так.
Исправила, как Вы мне предложили, но проблема осталась.
Сейчас пробую формат ячеек в самих файлах менять%).
 
Ответить
СообщениеДа нет, все работало именно так.
Исправила, как Вы мне предложили, но проблема осталась.
Сейчас пробую формат ячеек в самих файлах менять%).

Автор - vasilek7777
Дата добавления - 30.06.2018 в 22:09
Pelena Дата: Суббота, 30.06.2018, 22:22 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Тогда прикладывайте пример с данными


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТогда прикладывайте пример с данными

Автор - Pelena
Дата добавления - 30.06.2018 в 22:22
vasilek7777 Дата: Суббота, 30.06.2018, 22:42 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вот в чем проблема, мне кажется, я сравниваю два столбца, в первом значение="01.06.2018 00:12" во втором значение="43280,18488"
Выделяю второй столбец, преобразовываю в формат, как в первом столбце, но все равно ему не нравится.
Может есть функция, преобразования. Date() не помогает, Format() тоже. Может эта комбинация чисел, это особенность excel?
Добавила 2 файла с проблемой.
К сообщению приложен файл: may_1.xlsm (51.7 Kb) · may_2.xlsx (12.0 Kb)


Сообщение отредактировал vasilek7777 - Воскресенье, 01.07.2018, 00:02
 
Ответить
СообщениеВот в чем проблема, мне кажется, я сравниваю два столбца, в первом значение="01.06.2018 00:12" во втором значение="43280,18488"
Выделяю второй столбец, преобразовываю в формат, как в первом столбце, но все равно ему не нравится.
Может есть функция, преобразования. Date() не помогает, Format() тоже. Может эта комбинация чисел, это особенность excel?
Добавила 2 файла с проблемой.

Автор - vasilek7777
Дата добавления - 30.06.2018 в 22:42
krosav4ig Дата: Воскресенье, 01.07.2018, 03:10 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как-то так[vba]
Код
If CDate(inData.Cells(j, 2)) < CDate(rRow.Cells(3)) And CDate(rRow.Cells(3)) < CDate(inData.Cells(j, 2)) + TimeSerial(0, 40, 0) Then
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениекак-то так[vba]
Код
If CDate(inData.Cells(j, 2)) < CDate(rRow.Cells(3)) And CDate(rRow.Cells(3)) < CDate(inData.Cells(j, 2)) + TimeSerial(0, 40, 0) Then
[/vba]

Автор - krosav4ig
Дата добавления - 01.07.2018 в 03:10
vasilek7777 Дата: Воскресенье, 01.07.2018, 09:25 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
krosav4ig, спасибо Вам большое, помогло!!!
Всем спасибо за участие!
yahoo
 
Ответить
Сообщениеkrosav4ig, спасибо Вам большое, помогло!!!
Всем спасибо за участие!
yahoo

Автор - vasilek7777
Дата добавления - 01.07.2018 в 09:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Run-time error '13'; Type mismatch (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!