Столбцы с выпадающими меню в Excel

Я пользователь VBA-любитель и нуждаюсь в некотором руководстве...

У меня есть два листа в Excel (1) Биллинг, (2) Контракт. Лист выставления счетов имеет столбец с раскрывающимся меню с описаниями выставления счетов. Столбцы B и C — время начала и окончания. Столбец D представляет собой «стоимость», расположенную в листе контракта и связанную с описанием выставления счетов. В зависимости от описания выставления счетов заполняется стоимость в столбце D (лист выставления счетов).

Мне нужна помощь либо с формулой (если возможно), либо с кодом VBA, который, если пользователь вводит что-то из раскрывающегося списка, превышающее контракт, «описание контракта» заменит первоначальную раскрывающуюся запись, а описание превышения будет автоматически удалено до строки ниже, а также автоматически заполнять время начала и окончания в той же строке. Любая помощь будет принята с благодарностью.


person Jaymie Bailey    schedule 01.11.2011    source источник
comment
Как выбор из раскрывающегося списка превысит контракт?   -  person Tim Williams    schedule 01.11.2011
comment
В раскрывающемся списке есть варианты, которые включают в себя выставление счетов по контракту и вариант сверх контракта (т. е. контракт = 1000, превышение = 2000, 3000)... вы можете только удвоить или утроить сумму по контракту. если пользователь выбирает 2000, я хочу, чтобы первоначальный выбранный параметр (из раскрывающегося списка) изменился на 1000, а строка ниже автоматически заполнялась до 1000. Надеюсь, это имеет смысл. Спасибо.   -  person Jaymie Bailey    schedule 01.11.2011
comment
Итак, если они выберут тройной вариант, что произойдет? Будут ли вставлены две дополнительные строки?   -  person Tim Williams    schedule 01.11.2011
comment
Нет, я бы хотел, чтобы 2-я строка была заполнена до 2000, а начальная строка — 1000. Надеюсь, это имеет смысл.   -  person Jaymie Bailey    schedule 01.11.2011
comment
Как рассчитывается столбец D: если ваш макрос потенциально собирается изменить значение, выбранное из раскрывающегося списка, должен ли столбец D отражать новое значение?   -  person Tim Williams    schedule 02.11.2011
comment
Столбец D заполняется из раскрывающегося списка, связанного с функцией поиска.   -  person Jaymie Bailey    schedule 02.11.2011


Ответы (1)


Что-то вроде этого (входит в модуль кода рабочего листа)

Private Sub Worksheet_Change(ByVal Target As Range)

    Const VAL_TRIPLE As String = "Triple"
    Const VAL_DOUBLE As String = "Double"
    Dim rng As Range, cost

    On Error GoTo haveError

    Set rng = Target.Cells(1)

    If rng.Column = 1 And rng.Row > 1 Then

        DoEvents 'run the cost lookup...
        cost = rng.EntireRow.Cells(4).Value

        With rng
            If .Value = VAL_DOUBLE Or .Value = VAL_TRIPLE Then
                Application.EnableEvents = False

                .Offset(1, 0).Insert
                .Offset(1, 0).Value = .Value
                If IsNumeric(cost) Then
                   .Offset(1, 3).Value = cost * IIf(.Value = VAL_TRIPLE, 2, 1)
                End If
                .Value = "replacement" 'how to know what goes here?
                .Offset(1, 1).Value = .Offset(0, 1).Value
                .Offset(1, 2).Value = .Offset(0, 2).Value

                Application.EnableEvents = True
            End If
        End With
    End If

    Exit Sub

haveError:
    Application.EnableEvents = True

End Sub
person Tim Williams    schedule 01.11.2011