Заполните ячейку, которая позволяет вводить вручную, с £ 0,00, если в раскрывающемся списке выбрано слово «отсутствует». - PullRequest
0 голосов
/ 26 февраля 2020

Предположим, у меня есть ячейки A1 и B1. Ячейка А1 в выпадающем списке. Одно из слов в раскрывающемся списке - «отсутствует».

Когда в ячейке A1 выбрано «отсутствует», я хочу, чтобы ячейка B1 была заполнена символом «£ 0,00».

Я могу сделать это с помощью формулы: в ячейке B1, такой как = IF (A1 = "отсутствует", "£ 0,00", "").

Если выбраны другие параметры в раскрывающемся списке, Запись «0,00» исчезает (это то, что я хочу).

Ячейка B1 также должна вводить вручную. Например, если я выбираю слово «настоящее» из раскрывающегося списка в A1, тогда в B1 необходимо вручную ввести значение ca sh, например, £ 1,76.

Это работает с формульным подходом - формулой просто переписывается Не идеально.

Возможно ли использование VBA для заполнения ячейки B1 '0,00' каждый раз, когда слово "отсутствует" выбрано из выпадающего списка. Также следует перезаписать любое значение (если оно присутствует) в B1 на £ 0,00, когда выбрано слово «отсутствует». Если «отсутствует» не выбрано, то ячейка B1 должна по-прежнему принимать ручной ввод.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я предлагаю вам использовать событие Worksheet_Change.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("A1") Then
        Application.EnableEvents = False

        If LCase(Target.Value) = "absent" Then
            With Target.Offset(0, 1)
                .Value = 0
                .NumberFormat = "£0.00"
            End With
        Else
                Target.Offset(0, 1).ClearContents
        End If

    End If

    Application.EnableEvents = True
End Sub

Чтобы ввести этот инициируемый событием макрос:

  • щелкните правой кнопкой мыши вкладку листа для листа, содержащего раскрывающийся список. вниз.
  • Выберите «Просмотреть код» в раскрывающемся меню правой кнопкой мыши.
  • Затем вставьте указанный выше код в открывшееся окно.

РЕДАКТИРОВАТЬ

Если вы имеете дело с несколькими ячейками в столбце А вместо одной, вот один способ справиться с этим:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim myRange As Range

'Avoid multiple selection ranges
Set Target = Target(1, 1)

'Set myRange = Range("A1:A10")

'or, to set this dynamically:

Set myRange = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))

If Not Intersect(Target, myRange) Is Nothing Then
    Application.EnableEvents = False

        If LCase(Target.Value) = "absent" Then
            With Target.Offset(0, 1)
                .Value = 0
                .NumberFormat = "£0.00"
            End With
        Else
                Target.Offset(0, 1).ClearContents
        End If

End If
    Application.EnableEvents = True
End Sub
0 голосов
/ 26 февраля 2020

Использование формулы Excel:

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

Если A1 отсутствует, значение будет £0.00, в противном случае значение будет выбрано из столбца C, в который можно ввести вручную.

=IF(A1="Absent","£0.00",C1)

Использование VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    If Cells(1, "A") = "Absent" Then
        Cells(1, "B") = "£0.00"
    Else
        Cells(1, "B") = "Enter Value"
    End If
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...