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

Вход

Регистрация

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

 

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

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

Excel 2010
Manyasha, вот попробовал составить!
посмотрите, все ли правильно?

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

когда я меняю значения из списка, то иногда ошибки выдает.....перезагружаю файл.....и все хорошо!
почему такое происходит?

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

Excel 2010, 2016
[vba]
Код
    ReDim arrRow3(3 To 13)
     For i = 3 To 12
         arrRow2(i) = Лист1.Cells(3, i).Value
     Next I
[/vba]
Вам нужно запомнить значения до 13-го столбца включительно, а Вы запоминаете только до 12 (остальные массивы аналогично), теряется последняя ячейка. В этом есть и моя вина, в предыдущем сообщении была опечатка, код поправила, в файле самостоятельно исправьте.
Проверьте условие для диапазона в колонке С:
[vba]
Код
If Target.Column = 3 And Target.Row < 18 Then
[/vba]сюда попадают ячейки с1:с7, а не должны!

Еще ошибка в этой строчке:
[vba]
Код
Range(Cells(Target.Row + 1, 8), Cells(18, 3)).ClearContents
[/vba]
Вы очищаете колонки с 3-й по 8-ю, а Вам нужно только 3-ю. Правильно будет:
[vba]
Код
Range(Cells(Target.Row + 1, 3), Cells(18, 3)).ClearContents
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение[vba]
Код
    ReDim arrRow3(3 To 13)
     For i = 3 To 12
         arrRow2(i) = Лист1.Cells(3, i).Value
     Next I
[/vba]
Вам нужно запомнить значения до 13-го столбца включительно, а Вы запоминаете только до 12 (остальные массивы аналогично), теряется последняя ячейка. В этом есть и моя вина, в предыдущем сообщении была опечатка, код поправила, в файле самостоятельно исправьте.
Проверьте условие для диапазона в колонке С:
[vba]
Код
If Target.Column = 3 And Target.Row < 18 Then
[/vba]сюда попадают ячейки с1:с7, а не должны!

Еще ошибка в этой строчке:
[vba]
Код
Range(Cells(Target.Row + 1, 8), Cells(18, 3)).ClearContents
[/vba]
Вы очищаете колонки с 3-й по 8-ю, а Вам нужно только 3-ю. Правильно будет:
[vba]
Код
Range(Cells(Target.Row + 1, 3), Cells(18, 3)).ClearContents
[/vba]

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

Excel 2010
If Target.Column = 3 And Target.Row < 18 Then

а как можно задать диапазон для колонки С? мне ведь нужен диапазон не <18, а с 8 по 18.
привычными для меня способами пробовал.....ругается....не правильно!
 
Ответить
Сообщение
If Target.Column = 3 And Target.Row < 18 Then

а как можно задать диапазон для колонки С? мне ведь нужен диапазон не <18, а с 8 по 18.
привычными для меня способами пробовал.....ругается....не правильно!

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

Excel 2010, 2016
Можно так:
[vba]
Код
If Not Intersect(Target, [c8:c17]) Is Nothing Then
[/vba]или так[vba]
Код
If Target.Column = 3 And (Target.Row >= 8 And Target.Row < 18) Then
[/vba]
Последнюю 18-ю ячейку мы не проверяем, нам же ее не нужно стирать. Попробуйте написать, например [c8:c18] (для 1-го способа) или <=18 (для 2-го способа) и измените ячейку с18.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеМожно так:
[vba]
Код
If Not Intersect(Target, [c8:c17]) Is Nothing Then
[/vba]или так[vba]
Код
If Target.Column = 3 And (Target.Row >= 8 And Target.Row < 18) Then
[/vba]
Последнюю 18-ю ячейку мы не проверяем, нам же ее не нужно стирать. Попробуйте написать, например [c8:c18] (для 1-го способа) или <=18 (для 2-го способа) и измените ячейку с18.

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

Excel 2010
нам же ее не нужно стирать

почему?
проверяем...и стираем если меняется.....
а вот уже с 19 ничего не делается!

Можно так:
If Not Intersect(Target, [c8:c17]) Is Nothing Then
или так
If Target.Column = 3 And (Target.Row >= 8 And Target.Row < 18) Then


Теперь понял как организовать! =)
 
Ответить
Сообщение
нам же ее не нужно стирать

почему?
проверяем...и стираем если меняется.....
а вот уже с 19 ничего не делается!

Можно так:
If Not Intersect(Target, [c8:c17]) Is Nothing Then
или так
If Target.Column = 3 And (Target.Row >= 8 And Target.Row < 18) Then


Теперь понял как организовать! =)

Автор - GaLaXoN
Дата добавления - 27.03.2015 в 13:33
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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