|
Вопрос # 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]
|
resseg (статус: Посетитель), 6 декабря 2009, 19:50 [#21]:
Егор продолжаем, или что не ясно?
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 19:51 [#22]:
да, продолжаем
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:53 [#23]:
6.При нажатие кнопки ДА числовое значение TextBox1 вводится в столбец 21 строки 35 Cells(i + 35, 21), от ориентира ячейки месяц. При нажатие кнопки НЕТ происходи просто выход и закрытие сообщения.
Если тут ясно и я иду в правильном направлении, то мне пока сказать нечего…
|
|
resseg (статус: Посетитель), 6 декабря 2009, 19:54 [#24]:
p/s
Данный код у меня получился таким
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
If Cells(i + j - 1, 26).Value = "" Then
MsgBox "????????", 16, "Запрет ввода"
Exit Sub
Else
'Дополнительное сообщение
If MsgBox("ВНИМАНИЕ" & vbCrLf & vbCrLf & "????????", _
vbYesNo Or 48, "Ввод данных разрешен") = vbNo Then Exit Sub
Cells(i + 35, 21).Value = CDbl(TextBox1.Text)
End If
Next
End If
Next
End Sub
Он всегда при клике выводит сообщение о запрете ввода???
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 20:01 [#25]:
Цитата (resseg):
...в столбец 21 строки 35 от ориентира ячейки месяц...
не понял
пусть у нас "декабрь" записано, скажем, в ячейку (строчка=100, столбец=27), то мы должны записать значение из TextBox1 в ячейку:
* (строчка=35, столбец=21)
* (строчка=100+35, столбец=27+21)
* (строчка=100+35, столбец=21)
* или ещё куда?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 20:04 [#26]:
момент
|
|
resseg (статус: Посетитель), 6 декабря 2009, 20:12 [#27]:
Как у меня
декабрь записан строка=413 столбец=27 то мы должны записать значение из TextBox1 в ячейку строка=448 столбец=21
значит строка=413+35 столбец=27-6
Должно по идеи быть так * (строчка=413+35, столбец=21)
У меня выглядит это так Cells(i + 35, 21).Value = CDbl(TextBox1.Text)
|
|
resseg (статус: Посетитель), 6 декабря 2009, 20:42 [#28]:
Все месяца в 27 столбце разделены друг от друга равным количеством строк,для удобства написания кода
|
|
resseg (статус: Посетитель), 6 декабря 2009, 21:04 [#29]:
Cells(i, 27).Text = "декабрь" ???
В место декабря можно поставить ComboBox1.Text где прописаны двенадцать месяцев, или это только на один месяц?
|
|
resseg (статус: Посетитель), 6 декабря 2009, 21:15 [#30]:
Тоже самое как и у меня. Постоянно выходит сообщение о запрете ввода ???
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 21:18 [#31]:
так...
сейчас проверю...
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 21:54 [#32]:
а так:
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer, ccc
For i = 1 To 1000
If Cells(i, 27).Text = ComboBox1.Text Then
For j = 1 To 31
If Cells(i + j - 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
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 22:09 [#33]:
Я так понял Вы добавили , ccc Что это обозначает если не секрет? Код заработал.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 22:21 [#35]:
А тогда в чем различие первого и второго кода? Честно сказать не могу найти.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 22:32 [#36]:
Понял (i + j - 1, 26)
Благодарю за терпение.
|
|
Егор (статус: 10-ый класс), 6 декабря 2009, 22:34 [#37]:
в первом коде я не сделал перехода к следующей ячейке:
For j = 1 To 31
If Cells(i - 1, 26).Value <> "" Then GoTo DopUslov
Next j
а во втором - сделал:
If Cells(i + j - 1, 26).Value <> ...
надо было поставить ещё "+j" 
да, забыл спросить
Цитата (resseg):
... Как у меня декабрь записан строка=413 столбец=27 ...
проверять мы должны 31 пустую ячейку, начиная (в этом случае) со строки 413 или начиная со строки 414? если со строки 414, то в коде надо исправить:
If Cells(i + j, 26).Value <> ...
т.е. убрать "- 1"
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 22:51 [#38]:
Месяц находится на строке 413 столбец 27 и первая ячейка проверки тоже на 413 строке столбца 26 код проверки (i + j - 1, 26) Вроде работает значение ставил и вконец месяца и в начало 26 столбца, сообщение выходит.
|
|
resseg (статус: Посетитель), 6 декабря 2009, 23:03 [#39]:
Завтра вставлю код в рабочий файл, проверю, если что сообщу.
А пока удачи Вам Егор в борьбе за лидерство.
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|