
Я новичок в VBA и мне интересно создать программу, которая делает следующее. Когда выбирается элемент из выпадающего меню, он вставляет определенный текст в ячейки, которые находятся рядом с выбранным выпадающим списком.
Например: Мой выпадающий список содержит в столбце A КОММЕНТАРИЙ ПЕРЕМЕЩЕНИЕ
Когда я выбираю «КОММЕНТАРИЙ», я хочу, чтобы в столбце B было написано «ВВЕДИТЕ КОММЕНТАРИЙ». Когда я выбираю «ХОД», я хочу, чтобы в столбце B было написано «ВВЕДИТЕ ТИП ДВИЖЕНИЯ», а в столбце C — «ВВЕДИТЕ СКОРОСТЬ ДВИЖЕНИЯ».
Мне бы хотелось, чтобы они менялись только при выборе раскрывающегося меню, поскольку я использую эти данные в других ячейках в зависимости от того, какой элемент раскрывающегося меню выбран.
решение1
Если я правильно понимаю, это можно сделать либо с помощью VBA, либо просто функцией. В моем примере у меня есть список в A1
и в A4
Both, содержащий "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
приходится менять меньше кода в зависимости от расположения списка.