Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 493

Раздел: Basic
/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Я упростил вопрос, который был задан в предыдущей теме.

Есть код:

Private Sub CommandButton1_Click()
Dim i, j As Integer
For i = 1 To 1000
If Cells(i, 27).Text = ComboBox1.Text Then
For j = 1 To 31
‘??????
End Sub

в этот код необходимо вставить два сообщение с условиями.
Код первого сообщения:

MsgBox "????????", 16, "Запрет ввода"
Оно срабатывает кода в Cells(j, 26).Value нет значение, и не дает выполнению последующих действий.

Код второго сообщения:

If MsgBox("???????", _
vbYesNo Or 48, "Ввод данных разрешен") = vbNo Then Exit Sub
Оно срабатывает когда в Cells(j, 26).Value есть значения. При нажатии кнопки “Да” выполняется код Cells(i + 35, 21).Value = CDbl(TextBox1.Text)При нажатии кнопки “Нет” сообщение закрывается действия ни какие не выполняются.

Примечание #1 (5 декабря 2009, 15:07):
Код, в который необходимо вставить сообщения с условиями.


Private Sub CommandButton1_Click()

Dim i, j As Integer

For i = 1 To 1000
If Cells(i, 27).Text = ComboBox1.Text Then

'Необходимо вставить сообщения с условиями

Next
End If
Next
End Sub
Примечание #2 (5 декабря 2009, 15:24):
Немного изменил код.
Private Sub CommandButton1_Click()

Dim i, j As Integer

For i = 1 To 1000
If Cells(i, 27).Text = ComboBox1.Text Then
For j = 1 To 31

'Необходимо вставить сообщения с условиями

Next
End If
Next
End Sub

resseg Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: resseg (статус: Посетитель)
Вопрос отправлен: 5 декабря 2009, 14:55
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Егор

Здравствуйте, resseg!
Вот код:

Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer
 
For i = 1 To 1000
  If Cells(i, 27).Text = "декабрь" Then
    For j = 1 To 31
      If Cells(i - 1, 26).Value <> "" Then GoTo DopUslov
    Next j
    MsgBox "????????", 16, "Запрет ввода"
    Exit Sub
DopUslov:
    'Дополнительное сообщение
    If MsgBox("ВНИМАНИЕ" & vbCrLf & vbCrLf & "????????", _
              vbYesNo Or 48, "Ввод данных разрешен") = vbNo Then Exit Sub
    Cells(i + 35, 21).Value = CDbl(TextBox1.Text)
  End If
Next
End Sub

Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 6 декабря 2009, 20:58
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 39; последнее сообщение — 6 декабря 2009, 23:03; участников в обсуждении: 2.

Страницы: [1] [2] [Следующая »]

Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 18:07 [#1]:

уточню.
т.е. должно работать следующим образом:

1. Дана матрица (ну, или таблица) размерами 1000 строк на 31 столбец
2. Просматриваем все строчки в поисках фразы из ComboBox. Фраза должна находиться в 27-ом столбце
3. Если в ячейке 27-го столбца вообще пусто, то сообщаем "запрет ввода" и выходим из функции
4. Если в ячейке 27-го столбца есть фраза (и эта фраза совпадает с фразой из ComboBox'a), то выводим "Ввод разрешён" с двумя кнопками - "да" и "нет". если пользователь отвечает "да", то выполняем код Cells(i + 35, 21).Value = CDbl(TextBox1.Text), если "нет" - то просто выходим из процедуры.

так?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:24 [#2]:

If Cells(i, 27).Text = ComboBox1.Text Then оно не должно влиять на сообщения. Возьмем это как ориентир.
После нахождения ячейки If Cells(i, 27).Text необходимо перейти на 26 столбец и проверить тридцать одну ячейку на пустоту данного столбца.
Основное условие для сообщений должно выглядеть так If Cells(i + j - 1, 26).Value = "" Then но это мое личное мнении.

Как отправить файл? Вы бы меня поняли лучше.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:28 [#3]:

Равенство кода Cells(i, 27).Text = ComboBox1.Text всегда будет неизбежным, то есть всегда будет равно
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 18:34 [#4]:

Цитата (resseg):

После нахождения ячейки If Cells(i, 27).Text необходимо перейти на 26 столбец и проверить тридцать одну ячейку на пустоту данного столбца.

не понял
особенно это:

Цитата (resseg):

If Cells(i, 27).Text
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 18:35 [#5]:

что мы должны искать в 27-ой ячейке и откуда вдруг взялась 26-я?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:35 [#6]:

момент
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 18:38 [#7]:

и хорошо бы в объяснении вообще БЕЗ кода
объясните как для человека, не как для программиста, хорошо? :)
а как в коде воплотить - это я придумаю :)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:39 [#8]:

Cells(i, 27).Text это месяц например текст декабрь, проверять тридцать одну ячейку вниз необходимо напротив Cells(i, 27).Text то есть в 26 столбце.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:40 [#9]:

понял попробую
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:47 [#10]:

1.При клике по кнопке необходимо попасть в ячейку нужного месяца столбца 27 (например там будет введен текст декабрь который совпадает с текстом объекта ComboBox1.Text)

Если тут ясно и я иду в правильном направлении то я продолжу?
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 18:51 [#11]:

ага
пользователь говорит, "хочу декабрь" (т.е. в комбобоксе выбирает декабрь). мы ищем столбец, который в 27-ой строчке содержит слово "декабрь"
а когда "декабрь" будет найден, начнём просмотр вниз 31-у ячейку в поисках пустой
так?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 18:56 [#12]:

Так только все тридцать одну ячейку уже 26 столбца.
ПОДРОБНО:
2.Затем в силу вступает условие. Необходимо от ячейки где вписано декабрь как то перейти на 26 столбец данной строки и проверить весь столбец (тридцать одну ячейку в низ на пустоту). Возможно данный столбец можно проверить и на значение? Как лучше я не знаю, но я решил на пустоту.

Если тут ясно и я иду в правильном направлении то я продолжу?
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 19:02 [#13]:

можно и на значение. только что вы понимаете под этой фразой? имеете в виду "есть ли там хоть что-то"?

в целом, понятно, слушаю дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 19:07 [#14]:

3.Там могут быть только числовые значения отрицательные или положительные, а так же возможен и ноль, или может быть ничего.
Если тут ясно и я иду в правильном направлении то я продолжу?
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 19:12 [#15]:

ага, в 26-ом столбце ищем пустые ячейки.
нашли - сообщим об ошибке и выйдем
если все ячейки заполнены, то...

слушаю дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 19:16 [#16]:

НЕ ХОЧУ ТОРОПИТЬ СОБЫТИЕ
4.Если в столбце 26 в тридцать одной ячейки нет значений, то есть везде пусто, то выходит сообщение о запрете ввода.
Если тут ясно и я иду в правильном направлении то я продолжу
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 19:27 [#17]:

ага, запрет ввода только если ВСЕ ячейки пусты - это было не понятно

дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 19:30 [#18]:

5.Если в столбце 26 в тридцать одной ячейки есть значения, не зависимо от того какие они и как расположены в данном диапазоне (то есть 26 столбец тридцать одна ячейка выбранного месяца) то выходит сообщение о разрешение ввода, с двумя кнопками ДА и НЕТ
Если тут ясно и я иду в правильном направлении то я продолжу?
Егор

Егор (статус: 10-ый класс), 6 декабря 2009, 19:39 [#19]:

т.е. если в 26-м столбце есть хотя бы одна заполненная ячейка, то выводим сообщение с кнопками "да" и "нет"

если так, то продолжайте
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
resseg

resseg (статус: Посетитель), 6 декабря 2009, 19:41 [#20]:

В 26-м столбце данного месяца. Продолжаем?

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.