Добавление выпадающих списков ко всем ячейкам в столбце таблицы - PullRequest
0 голосов
/ 09 марта 2020

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

Sub test()
    AddYesNoDropdown ("H5")
End Sub

Public Function AddYesNoDropdown(r)
    With Range(r).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Yes, No"
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = False
        .ShowError = False
    End With
End Function

Мне нужно сделать это в каждой ячейке в именованной таблице (ListObject?), Ссылающейся на столбец по имени, а не по индексу в случае, если столбец таблицы должен был быть перемещен или переименован и т. д. c.

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

Необходимость делать ...

.ListColumns("Expected Ship Date?").Range.ColumnWidth = 10.14

Вместо ...

.Columns("A").ColumnWidth = 10.14

Я знаю, что это, вероятно, просто ...

1 Ответ

2 голосов
/ 09 марта 2020

Вы можете сделать это таким образом, используя Match для поиска соответствующего столбца, а затем передавая этот столбец таблицы в свою функцию (в качестве диапазона). Таким образом, это добавит DV к каждой ячейке в этом столбце.

Sub test()

Dim v As Variant

With Sheet1.ListObjects("Table1")
    v = Application.Match("Heading 2", .HeaderRowRange, 0) 'in my example returns 2
    If IsNumeric(v) Then AddYesNoDropdown .ListColumns(v).DataBodyRange
End With

End Sub

Public Function AddYesNoDropdown(r As Range)
    With r.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Yes, No"
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = False
        .ShowError = False
    End With

End Function

enter image description here

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