|
Вопрос # 3 493/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Я упростил вопрос, который был задан в предыдущей теме.
Есть код:
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 (статус: Посетитель)
Вопрос отправлен: 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 (статус: Посетитель), 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 (статус: Посетитель), 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 (статус: Посетитель), 6 декабря 2009, 18:35 [#6]:
момент
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 18:38 [#7]:
и хорошо бы в объяснении вообще БЕЗ кода
объясните как для человека, не как для программиста, хорошо? 
а как в коде воплотить - это я придумаю
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 18:39 [#8]:
Cells(i, 27).Text это месяц например текст декабрь, проверять тридцать одну ячейку вниз необходимо напротив Cells(i, 27).Text то есть в 26 столбце.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 18:40 [#9]:
понял попробую
|
|
resseg (статус: Посетитель), 6 декабря 2009, 18:47 [#10]:
1.При клике по кнопке необходимо попасть в ячейку нужного месяца столбца 27 (например там будет введен текст декабрь который совпадает с текстом объекта ComboBox1.Text)
Если тут ясно и я иду в правильном направлении то я продолжу?
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 18:51 [#11]:
ага
пользователь говорит, "хочу декабрь" (т.е. в комбобоксе выбирает декабрь). мы ищем столбец, который в 27-ой строчке содержит слово "декабрь"
а когда "декабрь" будет найден, начнём просмотр вниз 31-у ячейку в поисках пустой
так?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 18:56 [#12]:
Так только все тридцать одну ячейку уже 26 столбца.
ПОДРОБНО:
2.Затем в силу вступает условие. Необходимо от ячейки где вписано декабрь как то перейти на 26 столбец данной строки и проверить весь столбец (тридцать одну ячейку в низ на пустоту). Возможно данный столбец можно проверить и на значение? Как лучше я не знаю, но я решил на пустоту.
Если тут ясно и я иду в правильном направлении то я продолжу?
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 19:02 [#13]:
можно и на значение. только что вы понимаете под этой фразой? имеете в виду "есть ли там хоть что-то"?
в целом, понятно, слушаю дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:07 [#14]:
3.Там могут быть только числовые значения отрицательные или положительные, а так же возможен и ноль, или может быть ничего.
Если тут ясно и я иду в правильном направлении то я продолжу?
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 19:12 [#15]:
ага, в 26-ом столбце ищем пустые ячейки.
нашли - сообщим об ошибке и выйдем
если все ячейки заполнены, то...
слушаю дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:16 [#16]:
НЕ ХОЧУ ТОРОПИТЬ СОБЫТИЕ
4.Если в столбце 26 в тридцать одной ячейки нет значений, то есть везде пусто, то выходит сообщение о запрете ввода.
Если тут ясно и я иду в правильном направлении то я продолжу
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 19:27 [#17]:
ага, запрет ввода только если ВСЕ ячейки пусты - это было не понятно
дальше
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:30 [#18]:
5.Если в столбце 26 в тридцать одной ячейки есть значения, не зависимо от того какие они и как расположены в данном диапазоне (то есть 26 столбец тридцать одна ячейка выбранного месяца) то выходит сообщение о разрешение ввода, с двумя кнопками ДА и НЕТ
Если тут ясно и я иду в правильном направлении то я продолжу?
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 19:39 [#19]:
т.е. если в 26-м столбце есть хотя бы одна заполненная ячейка, то выводим сообщение с кнопками "да" и "нет"
если так, то продолжайте
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:41 [#20]:
В 26-м столбце данного месяца. Продолжаем?
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|