|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
Здравствуйте, форумчане, прошу помочь разобраться начинающему программисту с работой в процедуре Worksheet_Change: написал макрос, который работает так, если значение в ячейке G2 пустое, то диапазон ячеек K2:P2 очищается, и так дальше для G3 и т.д. не получается следующее: то же самое но для другого диапазона ячеек: если значение в ячейке R2 пустое, то диапазон ячеек W2:AA2 очищается, и так дальше для R3 и т.д. вот текст макроса (файл во вложении): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Модератор: Предупреждаю еще раз насчет использования тэгов оформления кода - FAQ Заранее благодарен за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2012, 17:50 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 09:10 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
скукотища, ElseIf If K >= 23 And K <= 27 Then ' столбцы W:AA - червоная строка, ересь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 09:20 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
катастрофаскукотища, ElseIf If K >= 23 And K <= 27 Then ' столбцы W:AA - червоная строка, ересь? Ересь. Копипастил невнимательно. If - было явно лишним. Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 10:35 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
катастрофаскукотища, ElseIf If K >= 23 And K <= 27 Then ' столбцы W:AA - червоная строка, ересь? Спасибо, только один If (второй) лишний ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 10:58 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
скукотища+ Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Спасибо, все работает теперь, кроме одного: я ввожу данные в столбец G начиная со второго ряда и если он пустой то пустой становится интервал ячеек в диапазоне P:K, аналогично для столбца R и диапазона W:AA, как можно отредактировать код, чтоб при редактировании ячееек G и R в первом ряду не очищалось содержимое диапазонов ячеек P:K и W:AA (тк в первом ряду будет шапка к таблице)? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 11:07 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
> martinezo > ...чтоб при редактировании ячееек G и R в первом ряду не очищалось содержимое диапазонов Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 11:18 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
текст программы Private Sub Worksheet_Change(ByVal Target As Range) Dim K As Long, R As Long Dim K2 As Long Dim ColOfs As Long, ColCnt As Long K = Target.Column 'определение номера колонки вводимого значения R = Target.Row 'определение номера ряда вводимого значения If R < 2 Then Exit Sub If K >= 11 And K <= 16 Then ' столбцы P:K K2 = 7 ' номер столбца G ColOfs = 4 ' расстояние от столбца G до столбца K ColCnt = 6 ' количество столбцов в диапазоне P:K 'ElseIf K = 7 And Range("K2" & R).Value <> "" Then MsgBox "111111111111" ElseIf K >= 23 And K <= 27 Then ' столбцы W:AA K2 = 18 ' номер столбца R ColOfs = 5 ' расстояние от столбца R до столбца W ColCnt = 5 ' количество столбцов в диапазоне W:AA ElseIf K = 7 And Range("G" & R).Value <> "" Then Range("O" & R).Select ElseIf K = 7 And Range("G" & R).Value <> "" Then MsgBox "заполни комментарий" ElseIf K = 18 And Range("R" & R).Value <> "" Then Range("AA" & R).Select ElseIf K = 18 And Range("R" & R).Value <> "" Then MsgBox "заполни другой комментарий" 'ElseIf ... And ... Then ' K2 = ... ' Ofs = ... 'ColCnt = .. Else Exit Sub End If With Target.Parent.Cells(R, K2) ' Возможно, ссылка на родительский элемент лишняя (и даже вредна), и корректно будет работать ' обращение к Cells() без указания контекста. Не проверял. If .Value2 = "" Then ' если значение ячейки в соответствующем столбце пустое ' очистить соответствующий диапазон .Offset(0, ColOfs).Resize(, ColCnt).ClearContents End If End With End Sub просьба помочь - хочу добавить следующее дополнение в текст программы: если ячейка G заполняется (т.е. не пустая) в одном из ряду, то курсор должен позиционироваться на ячейке O в томже ряду и должно выходить сообщение "ввeдите комментарий", тоже самое когда ячейка G заполняется (т.е. не пустая) в одном из ряду, то курсор должен позиционироваться на ячейке AA в соответсвующем ряду и должно выходить сообщение "введите другой комментарий" это я в приведенном тексте прописал, но в результате макрос только позиционирует курсор в нужную ячейку, но сообщение просьбой ввести комментарий не выходит и дальше выходит ошибкА Run time error 1004, что м.б. не так (пример во вложении)? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2012, 17:14 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
martinezo, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2012, 14:22 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
спасибо Вам за отзывчивость и наступающим Днем Победы! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2012, 18:14 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
скукотищаmartinezo, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Уважаемые форумчане, прошу помочь, возникла следующая непонятная для меня ситуация: у меня макрос на компе работает корректно, но когда этот же файл открыл мой коллега у себя на компе, у него стал вылетать Excel при срабатывании макроса, а именно, при условии когда ячейка G пустая, при попытке что-либо написать в ячейках K:P макрос должен все удалить, в этот момент файл вылетает,тоже самое когда ячейка R пустая. Полагаю, что у меня макрос срабатывает нормально тк у меня новый ПК, а у коллеги не очень, поэтому наверняка проблема будет и других пользователей, попробовал поискать про это в Инете - пишут что возможно неккоректно описаны переменные, но что именно не понятно. Спасибо за ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 13:54 |
|
условия в процедуре Worksheet_Change
|
|||
---|---|---|---|
#18+
причем, у меня windows 7 офис 2010 а у коллеги XP и офис 2010 - но у него закрывается Эксель при срабатывании макроса, запускал пошаговую отладку - макрос срабатывает корректно и файл не вылетает, в чем м.б. дело (файл во вложении)? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 17:56 |
|
|
start [/forum/topic.php?fid=60&fpage=79&tid=2157804]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 167ms |
0 / 0 |