Всем добрый день. Хочу сделать так что бы при заполнении определенных ячеек в колонках автоматически изменялось значение в заданых ячейках установленной колонки.
[vba]
Код
Sub ProjectState() Dim i As Integer Dim TT As Variant Dim Off As Variant Dim PCIP As Variant Dim ACIP As Variant Dim Tender As Variant Dim Contr As Variant Dim Impl As Variant Dim St As Variant
If TT.Value <> 0 And Off.Value <> 0 And PCIP.Value <> 0 And ACIP.Value <> 0 And Tender.Value <> 0 And Contr.Value <> 0 And Impl.Value <> 0 Then St.Value = "Выполнено" End If Next i End Sub
[/vba] Собственно при запуске кода возникает ошибка Run-time error '424' на строке: [vba]
Код
If TT.Value <> 0 And Off.Value <> 0 And PCIP.Value <> 0 And ACIP.Value <> 0 And Tender.Value <> 0 And Contr.Value <> 0 And Impl.Value <> 0 Then St.Value = "Выполнено"
[/vba] Прошу помочь в решении данной проблемы
Всем добрый день. Хочу сделать так что бы при заполнении определенных ячеек в колонках автоматически изменялось значение в заданых ячейках установленной колонки.
[vba]
Код
Sub ProjectState() Dim i As Integer Dim TT As Variant Dim Off As Variant Dim PCIP As Variant Dim ACIP As Variant Dim Tender As Variant Dim Contr As Variant Dim Impl As Variant Dim St As Variant
If TT.Value <> 0 And Off.Value <> 0 And PCIP.Value <> 0 And ACIP.Value <> 0 And Tender.Value <> 0 And Contr.Value <> 0 And Impl.Value <> 0 Then St.Value = "Выполнено" End If Next i End Sub
[/vba] Собственно при запуске кода возникает ошибка Run-time error '424' на строке: [vba]
Код
If TT.Value <> 0 And Off.Value <> 0 And PCIP.Value <> 0 And ACIP.Value <> 0 And Tender.Value <> 0 And Contr.Value <> 0 And Impl.Value <> 0 Then St.Value = "Выполнено"
[/vba] Прошу помочь в решении данной проблемыMacLuck
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума - Оформите второй код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)
*Ответ скорее всего уже есть, жду от Вас вышеуказанных исправлений
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума - Оформите второй код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)
*Ответ скорее всего уже есть, жду от Вас вышеуказанных исправлений_Boroda_
при заполнении определенных ячеек в колонках автоматически изменялось значение в заданых ячейках
То есть чтобы макрос срабатывал автоматически при изменении ячейки? Тогда он должен называться Worksheet_Change, а не ProjectState Или всё же макрос должен запускаться вручную и перебирать все имеющиеся строки? От ответов зависит алгоритм решения
при заполнении определенных ячеек в колонках автоматически изменялось значение в заданых ячейках
То есть чтобы макрос срабатывал автоматически при изменении ячейки? Тогда он должен называться Worksheet_Change, а не ProjectState Или всё же макрос должен запускаться вручную и перебирать все имеющиеся строки? От ответов зависит алгоритм решенияPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
TT, Off ... - у Вас не диапазоны Range, а массивы, поэтому нужно писать так [vba]
Код
If TT(i, 1) <> 0 And Off(i, 1) <> 0 And PCIP(i, 1) <> 0 And ACIP(i, 1) <> 0 And Tender(i, 1) <> 0 And Contr(i, 1) <> 0 And Impl(i, 1) <> 0 Then St(i, 1) = "Выполнено"
[/vba]
TT, Off ... - у Вас не диапазоны Range, а массивы, поэтому нужно писать так [vba]
Код
If TT(i, 1) <> 0 And Off(i, 1) <> 0 And PCIP(i, 1) <> 0 And ACIP(i, 1) <> 0 And Tender(i, 1) <> 0 And Contr(i, 1) <> 0 And Impl(i, 1) <> 0 Then St(i, 1) = "Выполнено"
Всем еще раз, добрый день. Спасибо за пояснения. На Worksheet_Change я пока что повесил другой макрос, и я банально не знаю как два макроса повесить на одно событие, пробывал через Call Macrosname что-то не получилось. Пока планирую сделать что при нажатии кнопоки(запуске макроса), марос пробегал по всем ячейкам и проверял/ставил статусы. (п.с. я думал что все отличие было бы в том что в полностью автоматическом случае макрос назывался бы Worksheet_Change ..., а в кнопочном Sub ProjectState(), или я не прав?)
Цитата
TT, Off ... - у Вас не диапазоны Range, а массивы, поэтому нужно писать так
Ахахаха, наверное для кого-то это будет забавно, но я только из вашего поста понял что есть диапазоны а есть массивы, спс.
Написал таким образом [vba]
Код
Sub ProjectState() Dim i As Integer Dim TT As Variant 'Technical_task Dim Off As Variant 'Offer Dim PCIP As Variant 'Preparing_CIP Dim ACIP As Variant 'Approved_CIP Dim Tender As Variant 'Tender Dim Contr As Variant 'Contract Dim Impl As Variant 'Implementation Dim St As Variant 'Status
If TT(i, 1).Value <> 0 And Off(i, 1).Value <> 0 And PCIP(i, 1).Value <> 0 And ACIP(i, 1).Value <> 0 And Tender(i, 1).Value <> 0 And Contr(i, 1).Value <> 0 And Impl(i, 1).Value <> 0 Then St(i, 1).Value = "Выполнено"
End If Next i End Sub
[/vba]
Вылетает ошибка Run-time 424, объект не найден на следующей строке:
[vba]
Код
St(i, 1).Value = "Выполнено"
[/vba]
Всем еще раз, добрый день. Спасибо за пояснения. На Worksheet_Change я пока что повесил другой макрос, и я банально не знаю как два макроса повесить на одно событие, пробывал через Call Macrosname что-то не получилось. Пока планирую сделать что при нажатии кнопоки(запуске макроса), марос пробегал по всем ячейкам и проверял/ставил статусы. (п.с. я думал что все отличие было бы в том что в полностью автоматическом случае макрос назывался бы Worksheet_Change ..., а в кнопочном Sub ProjectState(), или я не прав?)
Цитата
TT, Off ... - у Вас не диапазоны Range, а массивы, поэтому нужно писать так
Ахахаха, наверное для кого-то это будет забавно, но я только из вашего поста понял что есть диапазоны а есть массивы, спс.
Написал таким образом [vba]
Код
Sub ProjectState() Dim i As Integer Dim TT As Variant 'Technical_task Dim Off As Variant 'Offer Dim PCIP As Variant 'Preparing_CIP Dim ACIP As Variant 'Approved_CIP Dim Tender As Variant 'Tender Dim Contr As Variant 'Contract Dim Impl As Variant 'Implementation Dim St As Variant 'Status
If TT(i, 1).Value <> 0 And Off(i, 1).Value <> 0 And PCIP(i, 1).Value <> 0 And ACIP(i, 1).Value <> 0 And Tender(i, 1).Value <> 0 And Contr(i, 1).Value <> 0 And Impl(i, 1).Value <> 0 Then St(i, 1).Value = "Выполнено"
End If Next i End Sub
[/vba]
Вылетает ошибка Run-time 424, объект не найден на следующей строке:
Sub ProjectState() Dim i As Integer Dim TT 'Technical_task Dim Off 'Offer Dim PCIP 'Preparing_CIP Dim ACIP 'Approved_CIP Dim Tender 'Tender Dim Contr 'Contract Dim Impl 'Implementation Dim St 'Status
With Range("AA4:AA350") St = .Value '8 For i = 1 To 300 If TT(i, 1) <> 0 And Off(i, 1) <> 0 And PCIP(i, 1) <> 0 And ACIP(i, 1) <> 0 And _ Tender(i, 1) <> 0 And Contr(i, 1) <> 0 And Impl(i, 1) <> 0 Then St(i, 1) = "Выполнено" End If Next i .Value = St End With End Sub
[/vba]
MacLuck, привет скорее всего, так:
[vba]
Код
Sub ProjectState() Dim i As Integer Dim TT 'Technical_task Dim Off 'Offer Dim PCIP 'Preparing_CIP Dim ACIP 'Approved_CIP Dim Tender 'Tender Dim Contr 'Contract Dim Impl 'Implementation Dim St 'Status
With Range("AA4:AA350") St = .Value '8 For i = 1 To 300 If TT(i, 1) <> 0 And Off(i, 1) <> 0 And PCIP(i, 1) <> 0 And ACIP(i, 1) <> 0 And _ Tender(i, 1) <> 0 And Contr(i, 1) <> 0 And Impl(i, 1) <> 0 Then St(i, 1) = "Выполнено" End If Next i .Value = St End With End Sub