Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сброс данных в последовательных выпадающих списках. - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Сброс данных в последовательных выпадающих списках.
GaLaXoN Дата: Понедельник, 16.03.2015, 10:37 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Всем привет!

вот у меня есть исходный файл, в котором я выбираю параметры из раскрывающихся списков....
но при выборе первых данных остаются старые ( в последующих ячейках).
можно ли как то организовать обнуление/сброс выбранных данных при смене выбранных параметров. (надеюсь понятно объяснил)

Спасибо за помощь!
К сообщению приложен файл: 6823182.xlsx (25.8 Kb)
 
Ответить
СообщениеВсем привет!

вот у меня есть исходный файл, в котором я выбираю параметры из раскрывающихся списков....
но при выборе первых данных остаются старые ( в последующих ячейках).
можно ли как то организовать обнуление/сброс выбранных данных при смене выбранных параметров. (надеюсь понятно объяснил)

Спасибо за помощь!

Автор - GaLaXoN
Дата добавления - 16.03.2015 в 10:37
GaLaXoN Дата: Понедельник, 16.03.2015, 11:17 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Вопрос: можно организовать такое или нет?
 
Ответить
СообщениеВопрос: можно организовать такое или нет?

Автор - GaLaXoN
Дата добавления - 16.03.2015 в 11:17
Manyasha Дата: Понедельник, 16.03.2015, 11:19 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
GaLaXoN, здравствуйте. Можно макросом:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 2 And Target.Row < 9 Then
         Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
     End If
End Sub
[/vba]
К сообщению приложен файл: 6823182.xlsm (31.3 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеGaLaXoN, здравствуйте. Можно макросом:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 2 And Target.Row < 9 Then
         Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
     End If
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 16.03.2015 в 11:19
GaLaXoN Дата: Понедельник, 16.03.2015, 11:29 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, а он действует только на определенный диапазон или на всю книгу.

к примеру у меня будет много выпадающих списков, не связанных друг с другом.
сбрасываться все будут?

не могли бы поподробнее описать принцип работы.
к сожалению не могу написать лично Вам, заблокированна возможность.
 
Ответить
СообщениеManyasha, а он действует только на определенный диапазон или на всю книгу.

к примеру у меня будет много выпадающих списков, не связанных друг с другом.
сбрасываться все будут?

не могли бы поподробнее описать принцип работы.
к сожалению не могу написать лично Вам, заблокированна возможность.

Автор - GaLaXoN
Дата добавления - 16.03.2015 в 11:29
Manyasha Дата: Понедельник, 16.03.2015, 12:14 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
GaLaXoN, макрос запускается при изменении первого листа. Если нужно распространить на другие листы, просто скопируйте код в модули нужных листов. Макрос проверяет только диапазон B1:B8, и очищает соответственно с активной ячейки до B9. Если нужно проверять другие диапазоны, можно продублировать строчки[vba]
Код
    If Target.Column = 2 And Target.Row < 9 Then
           Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
       End If
[/vba]с заменой в них номеров столбцов и строк для проверки.

Если будет понятней, то эти 3 строчки можно переписать так:[vba]
Код
    If Not Intersect(Target, Range("B1:B8")) Is Nothing Then
           Range("B" & Target.Row + 1 & ":B9").ClearContents
       End If
[/vba].


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Понедельник, 16.03.2015, 12:15
 
Ответить
СообщениеGaLaXoN, макрос запускается при изменении первого листа. Если нужно распространить на другие листы, просто скопируйте код в модули нужных листов. Макрос проверяет только диапазон B1:B8, и очищает соответственно с активной ячейки до B9. Если нужно проверять другие диапазоны, можно продублировать строчки[vba]
Код
    If Target.Column = 2 And Target.Row < 9 Then
           Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
       End If
[/vba]с заменой в них номеров столбцов и строк для проверки.

Если будет понятней, то эти 3 строчки можно переписать так:[vba]
Код
    If Not Intersect(Target, Range("B1:B8")) Is Nothing Then
           Range("B" & Target.Row + 1 & ":B9").ClearContents
       End If
[/vba].

Автор - Manyasha
Дата добавления - 16.03.2015 в 12:14
GaLaXoN Дата: Понедельник, 16.03.2015, 12:56 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, с буквенно-цифровым обозначением будет понятней, я хоть путаться не буду.
Спасибо, Вам, большое!
буду экспериментировать.
 
Ответить
СообщениеManyasha, с буквенно-цифровым обозначением будет понятней, я хоть путаться не буду.
Спасибо, Вам, большое!
буду экспериментировать.

Автор - GaLaXoN
Дата добавления - 16.03.2015 в 12:56
GaLaXoN Дата: Понедельник, 16.03.2015, 13:11 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, оказалось наоборот, запутался с буквенно-цифровым и стал понимать с цифровым.
просто английским языком не очень владею.....с помощью переводчика понял что и за что отвечает!
еще раз большое Вам спасибо!
 
Ответить
СообщениеManyasha, оказалось наоборот, запутался с буквенно-цифровым и стал понимать с цифровым.
просто английским языком не очень владею.....с помощью переводчика понял что и за что отвечает!
еще раз большое Вам спасибо!

Автор - GaLaXoN
Дата добавления - 16.03.2015 в 13:11
GaLaXoN Дата: Пятница, 20.03.2015, 10:22 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, а можно отменить сброс при выборе пункта который был (т.е. выбор не поменялся)?
 
Ответить
СообщениеManyasha, а можно отменить сброс при выборе пункта который был (т.е. выбор не поменялся)?

Автор - GaLaXoN
Дата добавления - 20.03.2015 в 10:22
Manyasha Дата: Пятница, 20.03.2015, 11:27 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Можно так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 2 And Target.Row < 9 Then
         'If Target.Count > 1 Then Exit Sub
         If Target.Value <> arrB(Target.Row) Then
             Application.EnableEvents = False
             Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
             Application.EnableEvents = True
         End If
         initialize_arrB
     End If
End Sub
[/vba]
[vba]
Код
Public arrB() As String
Sub initialize_arrB()
     ReDim arrB(1 To 8)
     For i = 1 To 8
         arrB(i) = Лист1.Cells(i, 2).Value
     Next i
End Sub
[/vba]
К сообщению приложен файл: 6823182_1.xlsm (34.3 Kb)


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Пятница, 20.03.2015, 12:00
 
Ответить
СообщениеМожно так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 2 And Target.Row < 9 Then
         'If Target.Count > 1 Then Exit Sub
         If Target.Value <> arrB(Target.Row) Then
             Application.EnableEvents = False
             Range(Cells(Target.Row + 1, 2), Cells(9, 2)).ClearContents
             Application.EnableEvents = True
         End If
         initialize_arrB
     End If
End Sub
[/vba]
[vba]
Код
Public arrB() As String
Sub initialize_arrB()
     ReDim arrB(1 To 8)
     For i = 1 To 8
         arrB(i) = Лист1.Cells(i, 2).Value
     Next i
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 20.03.2015 в 11:27
GaLaXoN Дата: Пятница, 20.03.2015, 11:40 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, спасибо!
попробую потестить!
 
Ответить
СообщениеManyasha, спасибо!
попробую потестить!

Автор - GaLaXoN
Дата добавления - 20.03.2015 в 11:40
GaLaXoN Дата: Пятница, 20.03.2015, 11:58 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, хммм....выдает ошибку, но я не пойму почему!..
 
Ответить
СообщениеManyasha, хммм....выдает ошибку, но я не пойму почему!..

Автор - GaLaXoN
Дата добавления - 20.03.2015 в 11:58
Manyasha Дата: Пятница, 20.03.2015, 11:58 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Неправильно немного сделала (некорректно работает при открытии файла). Файлик перезалила в предыдущее сообщение. Инициализацию массива В вынесла в отдельный модуль.

UPD
И строчку откомментить забыла[vba]
Код
'If Target.Count > 1 Then Exit Sub
[/vba]знак комментария нужно убрать.
[p.s.]Что-то я сегодня косячу...


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Пятница, 20.03.2015, 12:03
 
Ответить
СообщениеНеправильно немного сделала (некорректно работает при открытии файла). Файлик перезалила в предыдущее сообщение. Инициализацию массива В вынесла в отдельный модуль.

UPD
И строчку откомментить забыла[vba]
Код
'If Target.Count > 1 Then Exit Sub
[/vba]знак комментария нужно убрать.
[p.s.]Что-то я сегодня косячу...

Автор - Manyasha
Дата добавления - 20.03.2015 в 11:58
GaLaXoN Дата: Пятница, 20.03.2015, 12:06 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, теперь вроде все хорошо работает!
попробую разобраться как это работает! =))
Спасибо!
 
Ответить
СообщениеManyasha, теперь вроде все хорошо работает!
попробую разобраться как это работает! =))
Спасибо!

Автор - GaLaXoN
Дата добавления - 20.03.2015 в 12:06
Pelena Дата: Пятница, 20.03.2015, 12:10 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 19519
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
[offtop]
Что-то я сегодня косячу...

Весна... :) [/offtop]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[offtop]
Что-то я сегодня косячу...

Весна... :) [/offtop]

Автор - Pelena
Дата добавления - 20.03.2015 в 12:10
Manyasha Дата: Пятница, 20.03.2015, 12:30 | Сообщение № 15
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
[offtop]Елена, ага. Авитаминоз походу :D [/offtop]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение[offtop]Елена, ага. Авитаминоз походу :D [/offtop]

Автор - Manyasha
Дата добавления - 20.03.2015 в 12:30
GaLaXoN Дата: Четверг, 26.03.2015, 14:36 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, плохо поддаются мне учения макросам....
никак не получается у меня сделать макрос не столбца, а строки!......
помогите, пожалуйста!
объясните подробнее!
 
Ответить
СообщениеManyasha, плохо поддаются мне учения макросам....
никак не получается у меня сделать макрос не столбца, а строки!......
помогите, пожалуйста!
объясните подробнее!

Автор - GaLaXoN
Дата добавления - 26.03.2015 в 14:36
Manyasha Дата: Четверг, 26.03.2015, 16:22 | Сообщение № 17
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
GaLaXoN, смотрите на 1-ю строку, правильно ли я поняла?
К сообщению приложен файл: 6823182_2.xlsm (35.1 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеGaLaXoN, смотрите на 1-ю строку, правильно ли я поняла?

Автор - Manyasha
Дата добавления - 26.03.2015 в 16:22
GaLaXoN Дата: Пятница, 27.03.2015, 08:07 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
смотрите на 1-ю строку, правильно ли я поняла?

да, вроде все верно!

я просто немного путаюсь в цифровом формате.....
для меня пока не очень понятно это...
в буквенно-цифровом попроще как-то! =))

да еще и с английским у меня туго.....приходится в переводчик загонять все, чтобы понять суть!..
 
Ответить
Сообщение
смотрите на 1-ю строку, правильно ли я поняла?

да, вроде все верно!

я просто немного путаюсь в цифровом формате.....
для меня пока не очень понятно это...
в буквенно-цифровом попроще как-то! =))

да еще и с английским у меня туго.....приходится в переводчик загонять все, чтобы понять суть!..

Автор - GaLaXoN
Дата добавления - 27.03.2015 в 08:07
GaLaXoN Дата: Пятница, 27.03.2015, 08:49 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 103
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Manyasha, попытался написать макрос, но постоянно ошибку выдает....

скидываю пример....
там 3 варианта действий...
я попытался для 1 и 2 варианта написать макрос....но ошибка!

может макросы пока для меня тяжеловаты? может с чего то надо начать их изучение....
с чего то легкого, чтобы принципы понимать...
К сообщению приложен файл: 5961891.xlsm (17.5 Kb)
 
Ответить
СообщениеManyasha, попытался написать макрос, но постоянно ошибку выдает....

скидываю пример....
там 3 варианта действий...
я попытался для 1 и 2 варианта написать макрос....но ошибка!

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

Автор - GaLaXoN
Дата добавления - 27.03.2015 в 08:49
Manyasha Дата: Пятница, 27.03.2015, 09:51 | Сообщение № 20
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
GaLaXoN, комментарии к 1-й части кода (для 1-й строки):
'Если пересечение диапазана a1:g1 и выделенных ячеек НЕ пусто (другими словами среди выделенных ячеек есть что-то из b1:g1)
[vba]
Код
    If Not Intersect(Target, [a1:g1]) Is Nothing Then
         'если выделено более одной ячейки, выходим из макроса
             If Target.Count > 1 Then Exit Sub
             'если новое значение ячейки не равно предыдущему значению этой же ячейки
             If Target.Value <> arrRow1(Target.Column) Then
                 Application.EnableEvents = False
                 'очищаем диапазон <следующая ячейка после выделенной>:<h1> (8 - это номер столба h)
                 Range(Cells(1, Target.Column + 1), Cells(1, 8)).ClearContents
                 Application.EnableEvents = True
             End If
             'запоминаем новые значения ячеек 1-й строки (a1:h1)
             initialize_arrRow1
         End If
[/vba]Для второй части комментарии будут аналогичные.

Давайте перепишем инициализацию массива так, чтобы номер элементов массива совпадал с номерами столбцов, которые мы меняем (так будет нагляднее)


Думаю так должно быть понятнее
К сообщению приложен файл: 5961891_1.xlsm (18.9 Kb)


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Пятница, 27.03.2015, 12:31
 
Ответить
СообщениеGaLaXoN, комментарии к 1-й части кода (для 1-й строки):
'Если пересечение диапазана a1:g1 и выделенных ячеек НЕ пусто (другими словами среди выделенных ячеек есть что-то из b1:g1)
[vba]
Код
    If Not Intersect(Target, [a1:g1]) Is Nothing Then
         'если выделено более одной ячейки, выходим из макроса
             If Target.Count > 1 Then Exit Sub
             'если новое значение ячейки не равно предыдущему значению этой же ячейки
             If Target.Value <> arrRow1(Target.Column) Then
                 Application.EnableEvents = False
                 'очищаем диапазон <следующая ячейка после выделенной>:<h1> (8 - это номер столба h)
                 Range(Cells(1, Target.Column + 1), Cells(1, 8)).ClearContents
                 Application.EnableEvents = True
             End If
             'запоминаем новые значения ячеек 1-й строки (a1:h1)
             initialize_arrRow1
         End If
[/vba]Для второй части комментарии будут аналогичные.

Давайте перепишем инициализацию массива так, чтобы номер элементов массива совпадал с номерами столбцов, которые мы меняем (так будет нагляднее)


Думаю так должно быть понятнее

Автор - Manyasha
Дата добавления - 27.03.2015 в 09:51
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!