Поведение источника строки не обновляет / сбрасывает список без перезагрузки пользовательской формы // получает заголовки столбцов со списком = диапазоны - PullRequest
0 голосов
/ 11 июня 2018

У меня есть следующий код, который работает, НО только я выгружаю (x) пользовательскую форму и перезагружаю ее.Окно списка (являющееся DatabaseViewer) загружается при инициализации пользовательской формы.

Кнопка test будет принимать строковый ввод в TextBox и выполнять нечеткий поиск в исходной базе данных и копировать базу данных на временный лист, который позволяет формуле источника строкиwork.

Я бы предпочел использовать list = Ranges вместо RowSource, но из моих поисков в Google выясняется, что это единственный способ надежно получить заголовки, если есть альтернатива получению заголовков, пожалуйстаделиться !!

Private Sub testButton_Click()
Dim dataworksheet As String

dataworksheet = ActiveSheet.Name

MsgBox (dataworksheet)

Range(Cells(getFirstDataAreaRow, getApplicableColumn("Original Name")), Cells(getLastDataAreaRow, getApplicableColumn("Original Name"))).AutoFilter Field:=1, Criteria1:="*" & searchByName.Value & "*"
Range(Cells(getFirstDataAreaRow, getApplicableColumn("Number")), Cells(getLastDataAreaRow, getlastDataAreaColumn)).SpecialCells(xlCellTypeVisible).Copy
Sheets("Temp").Activate
Range("A1").Select
ActiveSheet.Paste
Sheets(dataworksheet).Activate
MsgBox (dataworksheet)
Dim TempDataArea As Range
Set TempDataArea = Range(ThisWorkbook.Sheets("Temp").Cells(getFirstDataAreaRow("Temp") + 1, getlastDataAreaColumn("Temp")), ThisWorkbook.Sheets("Temp").Cells(getLastDataAreaRow("Temp"), getlastDataAreaColumn("Temp")))


        With databaseViewer
            .ColumnCount = getlastDataAreaColumn("Temp")
            .ColumnHeads = True 'only works if you are using rowsource
            .ColumnWidths = "0;;4 in" 'THIS SETS the number column to HIDDEN!
            .RowSource = TempDataArea.Cells.Address 'rowsouce only works with address, .list works with ranges
        End With


End Sub
...