Используйте раскрывающееся меню для изменения ячеек рядом с раскрывающимся списком.

Используйте раскрывающееся меню для изменения ячеек рядом с раскрывающимся списком.

Я новичок в VBA и мне интересно создать программу, которая делает следующее. Когда выбирается элемент из выпадающего меню, он вставляет определенный текст в ячейки, которые находятся рядом с выбранным выпадающим списком.

Например: Мой выпадающий список содержит в столбце A КОММЕНТАРИЙ ПЕРЕМЕЩЕНИЕ

Когда я выбираю «КОММЕНТАРИЙ», я хочу, чтобы в столбце B было написано «ВВЕДИТЕ КОММЕНТАРИЙ». Когда я выбираю «ХОД», я хочу, чтобы в столбце B было написано «ВВЕДИТЕ ТИП ДВИЖЕНИЯ», а в столбце C — «ВВЕДИТЕ СКОРОСТЬ ДВИЖЕНИЯ».

Мне бы хотелось, чтобы они менялись только при выборе раскрывающегося меню, поскольку я использую эти данные в других ячейках в зависимости от того, какой элемент раскрывающегося меню выбран.

решение1

Если я правильно понимаю, это можно сделать либо с помощью VBA, либо просто функцией. В моем примере у меня есть список в A1и в A4Both, содержащий "COMMENT" и "MOVE".

введите описание изображения здесь

У B1меня есть функция=IF(A1="MOVE","ENTER MOVE TYPE",IF(A1="COMMENT","ENTER COMMENT"," "))

И в C1функции=IF(A1="MOVE","ENTER MOVE SPEED","")

Для списка A4я использую VBA на рабочем листе (щелкните правой кнопкой мыши по листу и выберите «Показать код»)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range(Target.Address), Range("A4")) Is Nothing And Target.Count = 1 Then
    If Target.Value2 = "MOVE" Then
        Target.Offset(, 1).Value = "ENTER MOVE TYPE"
        Target.Offset(, 2).Value = "ENTER MOVE SPEED"
    ElseIf Target.Value2 = "COMMENT" Then
        Target.Offset(, 1).Value = "ENTER COMMENT"
        Target.Offset(, 2).Value = ""
    Else
        Target.Offset(, 1).Value = ""
        Target.Offset(, 2).Value = ""
    End If
End If
End Sub

Я использую относительное положение текста Bи Cс его помощью .Offsetприходится менять меньше кода в зависимости от расположения списка.

Связанный контент