Введите произвольно в ячейке при использовании списка Excel VBA? - PullRequest
0 голосов
/ 28 февраля 2019

Как я могу произвольно набрать в ячейке при использовании списка?

Public Sub PullDown()
Dim MyList(5) As String
MyList(0) = "cat"
MyList(1) = "dog"

With Worksheets("sheet1").Range("C10").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, Formula1:=Join(MyList, ",")
End With
End Sub

Из-за validation, если я наберу слово, такое как bird , оно вернет ошибку, потому чтоэто не кошка ни собака .

Как можно произвольно набрать слово и одновременно выбрать нужные слова из списка?

Спасибо за ответ!

1 Ответ

0 голосов
/ 28 февраля 2019

Кажется, вы не можете этого сделать, или в документации довольно явно:

xlValidateList - Formula1 требуется, Formula2 игнорируется.Формула 1 должна содержать либо список значений, разделенных запятыми, либо ссылку на рабочий лист на этот список.

Тем не менее, я также попытался:

Public Sub PullDown()
    Dim MyList(5) As String
    MyList(0) = "cat"
    MyList(1) = "dog"
    MyList(2) = Worksheets(1).Range("A1")
    With Worksheets(1).Range("C10").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
             Operator:=xlBetween, Formula1:=Join(MyList, ",")
    End With
End Sub

Так что можно сказать, чтоон работает каждый раз, когда вы запускаете код, но не так, как вы хотели:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...