Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 12:14   #1
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию Обновление части листа

Добрый день!

У меня есть большой файл (24914 строк excel 2003). Его заполняют разные отделы.
У меня есть колонка "comment". В ней выпадающий писок.
Если выбираешь значение "Сомнительный долг" то в столбце "Status old debts" выпадает один список, если "оплата/зачет" то другой список.
Это сделано для того, чтобы отделы не ставили противоречащие друг другу данные.
Вопрос в том, что всякий раз, когда выбираешь какое-то значение, курсор бегает по всем ячейкам (24914) . А как сделать так, чтобы он не бегал?
Вот код, котрый у меня получился.

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As String
Dim AM As String
Dim i As Integer
For i = 1 To 24914
AM = cells(1 + i, 46).value
P = cells(1 + i, 41).value
Select Case P
Case "Сомнительный долг"
cells(i + 1, 46).Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$BH$12:$BH$15"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True '
        End With

Case "Оплата/зачет"
cells(i + 1, 46).Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$BH$19:$BH$20"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True '
        End With
 End Select
Next i
End Sub
Флина вне форума Ответить с цитированием
Старый 25.10.2010, 12:21   #2
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Вот файл.

Сжатая ZIP-папка.zip
Флина вне форума Ответить с цитированием
Старый 25.10.2010, 12:54   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Я не понял, после изменения ячейки в столбце comment, вам надо изменить выпадающий список ВО ВСЕХ ячейках на листе, или только в ОДНОЙ ячейке - в той же строке, где был изменён comment?

Я бы вам посоветовал такой вариант: (для той строки, где был изменён comment)
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Target.Column <> 41 Then Exit Sub
    
    With Target.Offset(, 5).Validation
        .Delete
        Select Case Target
            Case "Сомнительный долг"
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                     xlBetween, Formula1:="=$BH$12:$BH$15"
            Case "Оплата/зачет"
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                     xlBetween, Formula1:="=$BH$19:$BH$20"
        End Select
    End With
End Sub

Последний раз редактировалось EducatedFool; 25.10.2010 в 13:01.
EducatedFool вне форума Ответить с цитированием
Старый 25.10.2010, 13:48   #4
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Спасибо большое
Флина вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание листа с одновременным созданием формулы на ячейку нового листа ShamanK Microsoft Office Excel 4 02.05.2010 22:00
if then в части процедуры kostghost Помощь студентам 2 20.03.2010 19:21
веб-части чижик-пыжик Общие вопросы .NET 0 25.02.2010 22:40
Обновление части страницы без использования фреймов regman JavaScript, Ajax 6 08.10.2009 20:11
Разбиение на части MAcK Общие вопросы .NET 4 18.09.2008 13:56