У меня есть следующий код, который работает, НО только я выгружаю (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