вы все здорово помогли с моим последним выпуском, так что я решил задать еще один вопрос. В настоящее время я создаю код, который отслеживает инвентарь почтового отделения. Код, над которым я работаю, представляет собой текстовое поле, которое всякий раз, когда что-то набирает, копирует значение в Excel и запускает расширенный поиск. Я хочу использовать xlfiltercopy, чтобы предотвратить визуальное повреждение листа Excel, и чтобы упростить обновление списка в пользовательской форме с помощью отфильтрованной информации. Пожалуйста, дайте мне знать, если вы можете найти причину, по которой возникла ошибка «Ошибка метода AdvancedFilter класса Range»
РЕДАКТИРОВАТЬ: Если возможно, я хотел бы отправить кому-нибудь по электронной почте весь Excel, чтобы узнать, работает ли программа на другом компьютер. Я физически не могу придумать, как заставить его работать. Пожалуйста, учтите!
' Input on the 2nd page
' This code will update the list box below automatically as you type a name
Private Sub TextBox5_Change()
If Me.TextBox5.Value = "" Then
Exit Sub
End If
Dim wks As Worksheet
Set wks = ThisWorkbook.Sheets("Mail_Inventory")
Dim rgData As Range
Dim rgCriteria As Range
Dim rgOutput As Range
Dim currentinventory As Long
Dim filteredcurrent As Long
Dim temp As Long
temp = wks.Range("AS1").Value
If temp > 0 Then
wks.ListObjects("CurrentFiltered").DataBodyRange.Rows.Delete
End If
wks.Range("AP6").Value = Me.TextBox5.Value
currentinventory = wks.Range("A1").Value
'Set rgData = ThisWorkbook.Worksheets("Mail_Inventory").Range("A2:H" & currentinventory + 2)
'Set rgCriteria = ThisWorkbook.Worksheets("Mail_Inventory").Range("AP5:AP6")
'Set rgOutput = ThisWorkbook.Worksheets("Mail_Inventory").Range("AS2:AZ2")
Set rgData = Range("A2:H" & currentinventory + 2)
Set rgCriteria = Range("AP5:AP6")
Set rgOutput = Range("AS2:AZ2")
rgData.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rgCriteria, CopytoRange:=rgOutput
'wks.Range("A2:H" & currentinventory + 2).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=wks.Range("AP5:AP6"), CopyToRange:=wks.Range("AS2:AZ2")
'filteredcurrent = wks.Range("AS1").Value
'Me.ListBox2.Clear
'Me.ListBox2.RowSource = wks.Range("AS2:AV" & filteredcurrent + 2)