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

кусок кода:

Код: 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
ошибка в коде VBA - Type mismatch
    #38524303
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Используй тег SRC - VBA
2) Перед Ctrl-C - переключись на русскую раскладку
...
Рейтинг: 0 / 0
ошибка в коде VBA - Type mismatch
    #38524306
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По проблеме - расставь скобки.
...
Рейтинг: 0 / 0
ошибка в коде VBA - Type mismatch
    #38524335
go2bed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
ошибка в коде VBA - Type mismatch
    #38524450
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
ошибка в коде VBA - Type mismatch
    #38524455
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
go2bedтег (SRC - VBA) имеется ввиду поиск по форуму?
...
Рейтинг: 0 / 0
ошибка в коде VBA - Type mismatch
    #38524482
go2bed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, нет после добавления скобок та же самая ошибка, но скобки могли быть причиной, если бы в остальной части кода возникали такие же ошибки, т.к. подобные строки встречались уже, но ругается почему-то именно на эту строку.

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

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

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

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

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

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


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

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


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


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

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

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


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

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

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

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

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


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