Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема вычисления в VB6 
V
    Опции темы
scull
Дата 27.7.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.7.2006
Где: СПБ

Репутация: нет
Всего: нет



Вот кусок кода:

Код

k = 13
h = 9
Ind(0) = 8
Sum = Round(.Cells(k, 5), 6)

Do Until .Cells(k + 1, 2) = "Итого"
    If .Cells(k + 1, 2).Font.Italic = False Then
        If Val(.Cells(k + 1, 5)) = 0 Then
        Else
            Sum = Sum - Round(.Cells(k + 2, 5), 4)
        End If
    End If
    If Sum = 0 Then
        Combo1.AddItem k + 3
        Sum = Round(.Cells(k + 4, 5), 4)
    End If
    k = k + 2
Loop


Смысл её в вычитании из предыдущей ячейки всех последующих. 
Проблема в том, что VB вычисляет все с округлением и не учитывает числа после запятой, в следствии чего Sum (Double) равно 1 а не 0, хотя в Excel все числа сходятся. Пробовал конструкции с format и Val, не получается. 
Нужна срочная помощь... smile 
PM MAIL   Вверх
mihanik
Дата 27.7.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Знаешь, scull,  ты немного не так делаешь.

Если тебе не надо укруглять, то получается так...

Код

k = 13
h = 9
Ind(0) = 8
Sum = val(.Cells(k, 5).value)

Do Until .Cells(k + 1, 2).value = "Итого"
    If .Cells(k + 1, 2).Font.Italic = False Then
        If Val(.Cells(k + 1, 5).Value) = 0 Then
        Else
            Sum = Sum - val(.Cells(k + 2, 5).Value)
        End If
    End If
    If Sum = 0 Then
        Combo1.AddItem k + 3
        Sum = val(.Cells(k + 4, 5).Value)
    End If
    k = k + 2
Loop



Поподробнее опиши задачу, а-то не совсем понятно. что ты хочешь получить...

Добавлено @ 12:12 
И ещё!


У тебя, как мне кажется, небольшие пробелы в знаниях объектов и способах доступа к ним в excel...

Допустим, к значению клетки обращаются так

Код

cells( Nrow, NCol).Value

Приводят всё к числовому виду при помощи функции VAL ( String )

Если я что-то не так понял, - извини...

Добавлено @ 12:16 
И ещё.

Код

        If Val(.Cells(k + 1, 5).Value) = 0 Then
        Else
            Sum = Sum - val(.Cells(k + 2, 5).Value)
        End If


Лучше оформить так...

Код

       If Val(.Cells(k + 1, 5).Value) <> 0 Then  Sum = Sum - val(.Cells(k + 2, 5).Value)


И вообще...  smile  

Это сообщение отредактировал(а) mihanik - 27.7.2006, 12:14


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
scull
Дата 28.7.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.7.2006
Где: СПБ

Репутация: нет
Всего: нет



2 Mihanik
Спастбо за советы, все заработало.
А на счет пропуска Then Else, просто туда я ещё код буду впихивать. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.