Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2010, 10:53   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию При пересчете значений в ячейке, форма VBA не дает выполнить код.

При выполнении кода пересчет значения в ячейки с шагом 0.01, открытая форма не дает выполнить данный год. Как можно решить данную проблему, и как вывести показатель пересчета Cells(i, 23) в Label?
Код:
Public Sub Pereset() 
   With Sheets("Отчет")
    If  Form_SelectDate.ComboBox_Month.Text = .Cells(z, 27).Text Then
        If .Cells(i, 28).Value = .Cells(i, 34).Value * -1 < .Cells(i, 35).Value Then
            X = 0
            .Cells(i, 23).Value = X
            .Cells(i, 28).Value = .Cells(i, 34).Value * -1 <= .Cells(i, 35).Value
            DoEvents
            .Cells(i, 23).Value = X
    End With
            X = X + 0.001
            Loop
        End If
    End If
End Sub
segail вне форума Ответить с цитированием
Старый 29.06.2010, 11:52   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что-то мне это очень напомнило недавнюю задачку...
А куда Do Until пропало?
Да и с шагом непонятно...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2010, 12:25   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Недавнею в смысле где?
Насчет Do Until ошибся
Do Until.Cells(i, 28).Value = .Cells(i, 34).Value * -1 <= .Cells(i, 35).Value
segail вне форума Ответить с цитированием
Старый 29.06.2010, 13:26   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В смысле на Планете... Я там остановился потому, что неясна задача целиком и поэтому непонятно, как обойти некоторые моменты. Оказывается, тут ещё и формы задействованы. Или это разные задачи?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2010, 14:04   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Да да, только планета по VBA не дает ответ.
segail вне форума Ответить с цитированием
Старый 29.06.2010, 14:11   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Мне кажется, если бы был пример в файле, ответ уже был получен. Там я не мог определится, на какое событие запускать код, а теперь тем более подожду думать, да и времени сейчас нет...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2010, 14:12   #7
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Да да, только планета на VBA не дает ответ.
Вы показали смыл на примере.
Я попытался его через VBA, но что то не то.
Хотя в коде не объявил переменную i, но это не важно я просто забыл указать в вопросе…

Последний раз редактировалось segail; 29.06.2010 в 14:14.
segail вне форума Ответить с цитированием
Старый 29.06.2010, 14:13   #8
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Ладно если что потом.
segail вне форума Ответить с цитированием
Старый 29.06.2010, 17:05   #9
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Мне кажется, если бы был пример в файле, ответ уже был получен. Там я не мог определится, на какое событие запускать код, а теперь тем более подожду думать, да и времени сейчас нет...
Вроде сделал, только не отображается процесс пересчета в лейбле.
Как его отобразить?
Вложения
Тип файла: rar primer.rar (18.9 Кб, 13 просмотров)
segail вне форума Ответить с цитированием
Старый 29.06.2010, 21:24   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Чтоб показало, надо эту строку перенести сюда:
Код:
            DoEvents
            .Cells(i, 23).Value = X
            Form_SelectDate.Lab_set = "Изменение процента потерь " & .Cells(i, 23) ' Показ персчета
            X = X + 0.001
            Loop
Только может надо округлить, а то там экспонента проскакивала... (если я правильно выразился...)
Например так:
Form_SelectDate.Lab_set = "Изменение процента потерь " & Format(.Cells(i, 23), "0.000")
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.06.2010 в 21:27.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить код через макрос vbs segail Microsoft Office Excel 0 04.04.2010 19:25
Выполнить код при закрытии окна просмотра segail Microsoft Office Excel 7 08.02.2010 11:22
Есть ли возможность выполнить код при инициализации подключаемого модуля? shurik_7866 Общие вопросы C/C++ 0 07.12.2009 22:59
конфликт разделителей чисел при использовании ControlSource (excel + форма vba) alvazor Microsoft Office Excel 2 06.07.2009 12:24
ПРИ ЗАГРУЗКЕ ВИНДЫ ДАЕТ ВЫБОР ИЗ 3, КАК УБРАТЬ 2? iukash Windows 3 01.05.2009 14:04