![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Всем доброе утро!
Подскажите, пожалуйста, в чём проблема. Я пишу условие: If Len(vArr(j, 12) & "") = 0 Then vArr(j, 13) = "" Else Select Case vArr(j, 12) Case Is < 0.5: vArr(j, 13) = "Высокое": r = 1 Case Is > 1: vArr(j, 13) = "Низкое": r = 3 Case Is >= 0.5, Is <= 1: vArr(j, 13) = "Среднее": r = 2 End Select End If Но почему-то в результатах всё время пишется в независимости от числа - оценка - Низкое. Почему? то есть если 0,35 - то выдает "Низкое", 0,66 - "Низкое" Помогите, пожалуйста понять причину |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 410
|
![]()
проблема не в коде.
скорее всего в самом значении vArr(j, 12) попробуйте записать Select Case --vArr(j, 12) или Select Case cdbl(vArr(j, 12)) |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
А что означает Select Case --vArr(j, 12) и Select Case cdbl(vArr(j, 12))?
|
![]() |
![]() |
![]() |
#4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Замените свой код на это:
Код:
По идее, Ваш код верен, и все должно работать. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Если так записать, то во всех столбцах оценка пропадает вообще!
Как быть, помогите, пожалуйста |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
А кто и как формирует массив? Возможно, что Вы не верно задаете разделитель целой и дробной части.
Так, если у Вс в Excel-е установлен разделитель "запятая", а массив формируется из значений с точками, то в результате выполнения Вашего макроса будет именно так, как Вы говорите.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Да в Excel запятая, а в коде точка. А как поменять в коде?
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 410
|
![]()
в ексель и должна быть запятая, просто скорее всего Ваш vArr(j, 12) не воспринимается как число.
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Менять не нужно. В VBA всегда точка, а в Excel Может быть что угодно, но если установлена запятая, а в ячейке значение с точкой, то это будет текст и при сравнении его с числом возникнет Ваша ситуация.
Попробуйте на чистом листе заполнить диапазон "A1:T1" любыми значениями. Затем, меняя значения в ячейке "L1" выполнять макрос "Test". Увидите, что при вводе, например, значения "0,3" все правильно, а при вводе "0.3" результат не верный (при вводе числа с разделителем, отличным от установленного в Excel). Код:
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
![]()
Как же тогда быть?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подсчет суммы ячеек с разных страниц при выполнении условия | sttafi | Microsoft Office Excel | 27 | 07.12.2012 17:50 |
Проблема с проверкой по списку, который зависит от условия | jlobster | Microsoft Office Excel | 2 | 24.12.2009 21:41 |
При выполнении программа отображает ошибку, в чем проблема понять не могу | Hyjak | Помощь студентам | 7 | 20.10.2008 23:48 |
Удалить строку листа Excel при выполнении условия | Gennady | Microsoft Office Excel | 14 | 18.12.2007 13:54 |