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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 10:19   #11
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А что, поиск по форуму не работает?[/B]
Прошу прощенье инет ограниченный, досиживаю последние Кб.
Flangini вне форума Ответить с цитированием
Старый 22.06.2009, 10:20   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    FormatConfirmationCell [a2:a100]
End Sub

Sub FormatConfirmationCell(ByRef ra As Range)
    Dim cell As Range
    For Each cell In ra.Cells
        With cell
            .HorizontalAlignment = xlCenter
            With .Validation    ' формируем выпадающий список
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:= _
                     xlBetween, Formula1:=cell.Value & ", Выполнено, Не выполнено"
                .IgnoreBlank = True: .InCellDropdown = True
            End With
            .FormatConditions.Delete    ' условное форматирование
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Выполнено"""
            .FormatConditions(1).Interior.ColorIndex = 35    '4
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Не выполнено"""
            .FormatConditions(2).Interior.ColorIndex = 38    '3
        End With
    Next cell
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2009, 13:36   #13
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Код:
Sub LCV(ByVal Target As Range)
FormatConfirmationCell_D2 [???]
End Sub

Sub CAR(ByVal Target As Range)
FormatConfirmationCell_D1 [???]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Value = "CAR" Then Call CAR 
    If Target.Cells.Value = "LCV" Then Call LCV
'В столбце С можно выбрать либо CAR либо LCV в зависимости от этого в столбце D должен появиться список Волга_1, Волга_2 или же ГАЗ_1, ГАЗ_2. Если вместо ??? поставить d1 : d1000 всё работает идеально, единственное, что макрос пробегает весь диапазон d2 : d1000 - это занимает время, а как можно чтобы макрос выполнялся только для той ящейки столбца D напротив которой в яцейке С выбранно значение?

Код:
End Sub

Sub FormatConfirmationCell_D1(ByRef ra As Range)
    Dim cell As Range
    For Each cell In ra.Cells
        With cell
            cell.HorizontalAlignment = xlCenter
            With .Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:= _
                     xlBetween, Formula1:=cell.Value & "Волга_1, Волга_2"
                .IgnoreBlank = True: .InCellDropdown = True
            End With
        End With
    Next cell
End Sub

Sub FormatConfirmationCell_D2(ByRef ra As Range)
    Dim cell As Range
    For Each cell In ra.Cells
        With cell
            cell.HorizontalAlignment = xlCenter
            With .Validation    
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:= _
                     xlBetween, Formula1:=cell.Value & "ГАЗ_1, ГАЗ_2"
                .IgnoreBlank = True: .InCellDropdown = True
            End With
        End With
    Next cell
End Sub
Flangini вне форума Ответить с цитированием
Старый 22.06.2009, 17:01   #14
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Single
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("b2:b1000")) Is Nothing Then
With Target(1, 0)
.Value = Date
End With
End If
Target.Cells.Rows = a 'Как изменить эту страку чтобы получить номер строки выделенной ячейки, чтобы потом запустить выполнение FormatConfirmationCell в этой строке, столбец известен - D
FormatConfirmationCell [???]
End Sub
Flangini вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исчез раскрывающийся список Nando Microsoft Office Excel 6 13.05.2009 22:41
Список значений в Access и delphi eldar БД в Delphi 1 12.04.2009 06:34
Раскрывающийся список sergiksergik Microsoft Office Excel 3 31.03.2009 22:48
Элементы управления и список значений tomasmazas Microsoft Office Excel 1 26.12.2007 09:20