Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в коде VBA - Type mismatch / 25 сообщений из 28, страница 1 из 2
13.01.2014, 13:50
    #38524293
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
сразу скажу, что профан, но код поковырять очень нужно.

кусок кода:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
            If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA >= Range("E82").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA <= Range("E83").Value Then
                Range("R" + Mid$(Str$(i + 58), 2)).Value = (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA
            Else
               If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA < Range("E82").Value Then Range("R" + Mid$(Str$(i + 58), 2)).Value = "&#236;&#229;&#237;&#229;&#229;" + Str$((Range("E82").Value))
               If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA > Range("E83").Value Then Range("R" + Mid$(Str$(i + 58), 2)).Value = "&#225;&#238;&#235;&#229;&#229;" + Str$((Range("E83").Value))
            End If
            
            If FAM <= Range("E81").Value And FAM > 0 Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "&#209;&#225;&#238;&#233; &#194;&#202;&#206;!"
            
           ' If UCase$(ID) = "PKO-1" Or UCase$(ID) = "PKO1" Or UCase$(ID) = "&#207;&#202;&#206;-1" Or UCase$(ID) = "&#207;&#202;&#206;1" Or UCase$(ID) = "PK1" Or UCase$(ID) = "&#207;&#202;1" Or UCase$(ID) = "PK-1" Or UCase$(ID) = "&#207;&#202;1" Then
           '     If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value >= Range("D75").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value < Range("F75").Value Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "&#207;&#202;&#206;1 Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "&#207;&#202;&#206;1 &#209;&#225;&#238;&#233;!"
           ' End If
           ' If UCase$(ID) = "PKO-2" Or UCase$(ID) = "PKO2" Or UCase$(ID) = "&#207;&#202;&#206;-2" Or UCase$(ID) = "&#207;&#202;&#206;2" Or UCase$(ID) = "PK2" Or UCase$(ID) = "&#207;&#202;2" Or UCase$(ID) = "PK-2" Or UCase$(ID) = "&#207;&#202;2" Then
           '     If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value >= Range("D76").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value < Range("F76").Value Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "&#207;&#202;&#206;2 Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "&#207;&#202;&#206;2 &#209;&#225;&#238;&#233;!"
           ' End If
            
            End If



жалуется Excel на выделенную мной строку.

Возможно это как раз таки проблема в кириллице, т.к. предварительно копируя кусок кода - рос. текст превращался в квакозябры, но опробовано на разных компах - ошибка одни и та же, макрос работать не хочет.
...
Рейтинг: 0 / 0
13.01.2014, 13:54
    #38524303
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
1) Используй тег SRC - VBA
2) Перед Ctrl-C - переключись на русскую раскладку
...
Рейтинг: 0 / 0
13.01.2014, 13:54
    #38524306
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
По проблеме - расставь скобки.
...
Рейтинг: 0 / 0
13.01.2014, 14:07
    #38524335
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
' Вынести нижний предел в настройки
            If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA >= Range("E82").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA <= Range("E83").Value Then
                Range("R" + Mid$(Str$(i + 58), 2)).Value = (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA
            Else
               If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA < Range("E82").Value Then Range("R" + Mid$(Str$(i + 58), 2)).Value = "менее" + Str$((Range("E82").Value))
               If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA > Range("E83").Value Then Range("R" + Mid$(Str$(i + 58), 2)).Value = "более" + Str$((Range("E83").Value))
            End If
            
            If FAM <= Range("E81").Value And FAM > 0 Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "Сбой ВКО!"
            
           ' If UCase$(ID) = "PKO-1" Or UCase$(ID) = "PKO1" Or UCase$(ID) = "ПКО-1" Or UCase$(ID) = "ПКО1" Or UCase$(ID) = "PK1" Or UCase$(ID) = "ПК1" Or UCase$(ID) = "PK-1" Or UCase$(ID) = "ПК1" Then
           '     If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value >= Range("D75").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value < Range("F75").Value Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "ПКО1 Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "ПКО1 Сбой!"
           ' End If
           ' If UCase$(ID) = "PKO-2" Or UCase$(ID) = "PKO2" Or UCase$(ID) = "ПКО-2" Or UCase$(ID) = "ПКО2" Or UCase$(ID) = "PK2" Or UCase$(ID) = "ПК2" Or UCase$(ID) = "PK-2" Or UCase$(ID) = "ПК2" Then
           '     If (10 ^ (JOEconc - FAMconc)) * Range("E72").Value >= Range("D76").Value And (10 ^ (JOEconc - FAMconc)) * Range("E72").Value < Range("F76").Value Then Range("S" + Mid$(Str$(i + 58), 2)).Value = "ПКО2 Ok" Else Range("S" + Mid$(Str$(i + 58), 2)).Value = "ПКО2 Сбой!"
           ' End If
            
            End If


Модератор: Учимся использовать тэги оформления кода - FAQ


Akina,

пардон, вот раскладку переключил.

а где конкретно скобки пропущены?

и тег (SRC - VBA) имеется ввиду поиск по форуму?
...
Рейтинг: 0 / 0
13.01.2014, 15:07
    #38524450
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Код: vbnet
1.
If (((10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA) >= Range("E82").Value) And (((10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA) <= Range("E83").Value) Then
...
Рейтинг: 0 / 0
13.01.2014, 15:10
    #38524455
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bedтег (SRC - VBA) имеется ввиду поиск по форуму?
...
Рейтинг: 0 / 0
13.01.2014, 15:20
    #38524482
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Akina, нет после добавления скобок та же самая ошибка, но скобки могли быть причиной, если бы в остальной части кода возникали такие же ошибки, т.к. подобные строки встречались уже, но ругается почему-то именно на эту строку.

на счет тегов понял, спасибо.
...
Рейтинг: 0 / 0
13.01.2014, 15:37
    #38524531
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Значит, разбивайте это многоэтажное безобразие на элементарные операции и смотрите, когда всплывёт ошибка.
Или хотя бы просто перечислите конкретные типы для

JOEconc
FAMconc
kA
Range("E72").Value
Range("E82").Value
Range("E83").Value

В смысле, что для каждого из них показывает TypeName(variable)
...
Рейтинг: 0 / 0
13.01.2014, 15:43
    #38524551
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Там значения присвоены, могу скинуть сам файл с исполняемым макросом.

Но конкретно типы под
JOEconc - FAMconc

я не могу найти.
...
Рейтинг: 0 / 0
13.01.2014, 15:48
    #38524565
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
...Range("E72").Value * kA...

Range("E72").Value="1,35*10^5" - то есть непонятную текстовую строку вы пытаетесь умножить на число.
...
Рейтинг: 0 / 0
13.01.2014, 15:51
    #38524572
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
А с чего вы решили, что строку "1,35*10^5" в [e72] Excel востпримет как число?
Или уж тогда использовать надо что-то вроде
Код: vbnet
1.
evaluate(replace([e72],",","."))


Да и вообще, как вам сказали - выражения навроде (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA , да ещё используемые несколько раз - надо выносить в отдельные переменные
...
Рейтинг: 0 / 0
13.01.2014, 16:04
    #38524610
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
AndreTMИли уж тогда использовать надо что-то вроде
Код: vbnet
1.
evaluate(replace([e72],",","."))

может проще научить пользователя правильно заносить экспоненциальные числа в ячейку?
...
Рейтинг: 0 / 0
13.01.2014, 17:50
    #38524818
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
AndreTMА с чего вы решили, что строку "1,35*10^5" в [e72] Excel востпримет как число?
Или уж тогда использовать надо что-то вроде
Код: vbnet
1.
evaluate(replace([e72],",","."))


Да и вообще, как вам сказали - выражения навроде (10 ^ (JOEconc - FAMconc)) * Range("E72").Value * kA , да ещё используемые несколько раз - надо выносить в отдельные переменные


простите, где использовать именно evaluate(replace([e72],",","."))?

авторможет проще научить пользователя правильно заносить экспоненциальные числа в ячейку?

формат ячеек используемых - общий, если поставить экспонциальное значение, то тоже толку никакого, если, правда, я правильно Вас понял.
...
Рейтинг: 0 / 0
13.01.2014, 18:25
    #38524875
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bedформат ячеек используемых - общий, если поставить экспонциальное значение, то тоже толку никакого, если, правда, я правильно Вас понял.неправильно. Общему формату ничто не мешает хранить числовое значение
...
Рейтинг: 0 / 0
13.01.2014, 18:26
    #38524878
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bedпростите, где использовать именно evaluate(replace([e72],",","."))?в вашей формуле. evaluate заставляет сработать текстовую строку как код, написанный на VBA
...
Рейтинг: 0 / 0
13.01.2014, 18:26
    #38524879
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
так значение пробовалось ставить и числовое и экспонциальное, результат тот же.
...
Рейтинг: 0 / 0
13.01.2014, 18:28
    #38524882
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bed[в формате] поставить экспонциальное значениеShocker.Proзаносить экспоненциальные числаРазницу осчущаете?


go2bedгде использовать именно evaluate(... AndreTMвыражения навроде ... надо выносить в отдельные переменныеАналогичный вопрос...
...
Рейтинг: 0 / 0
13.01.2014, 18:28
    #38524883
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bedтак значение пробовалось ставить и числовое и экспонциальное, результат тот же.не верю, ибо если я в вашем файле меняю содержимое ячейки на числовое значение, ошибка больше не выдается
...
Рейтинг: 0 / 0
13.01.2014, 18:33
    #38524889
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
авторне верю, ибо если я в вашем файле меняю содержимое ячейки на числовое значение, ошибка больше не выдается

в данный момент поменял значение на числовой в 81, 82 ячейке, да и в столбцах концентрации, результата, даже в пороговых цифрах - ничего не изменилось, где ж Вы то тогда поменяли?
...
Рейтинг: 0 / 0
13.01.2014, 18:48
    #38524911
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
в ячейке E72, в которой, собственно и происходит ошибка, я же писал:

Shocker.ProRange("E72").Value="1,35*10^5" - то есть непонятную текстовую строку вы пытаетесь умножить на число.
...
Рейтинг: 0 / 0
13.01.2014, 18:49
    #38524912
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
авторв ячейке E72, в которой, собственно и происходит ошибка, я же писал:

и в ней тоже выставил числовое значение, но та же ошибка вылезла. покажите пожалуйста файл
...
Рейтинг: 0 / 0
13.01.2014, 18:51
    #38524915
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
лучше вы покажите файл, чтобы я сразу смог посмотреть, в чем проблема
...
Рейтинг: 0 / 0
13.01.2014, 18:52
    #38524917
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
так ведь я его выложил выше
...
Рейтинг: 0 / 0
13.01.2014, 18:53
    #38524920
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
go2bedтак ведь я его выложил вышеВ нем в ячейке E72 находится НЕ число. Если написать туда число, ошибка не возникает. Если вы написали туда число и ошибка продолжает возникать, покажите.
...
Рейтинг: 0 / 0
13.01.2014, 19:01
    #38524936
go2bed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в коде VBA - Type mismatch
Shocker.Pro,

всё, дошло, представил в виде 135000 и ошибка ушла, спасибо большое, хотя теперь меня скорее смущает представление чисел в этой таблице, то есть по теории это выражение является 1.35 умножить на 10 в 5 степени, либо здесь не так должна выглядеть степень, либо значение 1,35 запрятано в код, когда в VBA по сути в значении ставится в коде точка в дробных значениях, а не запятая (если я правильно помню)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в коде VBA - Type mismatch / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]