让我先对论坛礼节中的任何错误或违反规则的行为以及由于我仍在缓慢学习中不正确使用技术术语而道歉。
总而言之,我正在尝试构建一个工作表,该工作表根据用户所做的下拉选择将数据从引用位置拉到指定的单元格位置。
Sub retrieve_data()
Dim LR As Long
LR = orderLog2.Cells.Find("*", Cells(Rows.Count, Columns.Count), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Application.ScreenUpdating = False
Application.EnableEvents = False
Sheets("search").UsedRange.Offset(2, 0).ClearContents
With Sheets("orderLog2")
.AutoFilterMode = False
.Range("A2:D" & LR).AutoFilter Field:=1, Criteria1:= _
Sheets("search").Range("C5").Value
.UsedRange.Offset(0, 0).SpecialCells(xlVisible).Copy
Sheets("search").Range("E7").PasteSpecial
.AutoFilterMode = False
End With
Application.CutCopyMode = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
因此,简而言之,我在工作表“ orderLog2”上有一个数据表(列A至D) 以及工作表“搜索”上的下拉列表。我希望,如果用户从下拉列表(位于单元格C5中)中选择一个用户名,则自动将工作表“ orderLog2”中的所有相关数据复制到工作表“ search”的单元格E7中。
这是插入工作表“搜索”中的代码:
Option Explicit
Private Sub dropdownselection(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
If Target.Address = "$C$5" Then
Application.EnableEvents = False
Call retrieve_data
Application.EnableEvents = True
End If
End Sub
行:“ LR = orderLog2.Cells.Find(” *“,单元格(Rows.Count,Columns.Count),SearchOrder:= xlByRows,_ SearchDirection:= xlPrevious).Row“
是导致运行时错误的原因,我认为LR定义正确,可以用作参考。
如果我想为您提供任何导入信息,请随时告诉我,我们将不胜感激任何帮助或建议。
答案 0 :(得分:0)
尝试:
Sub retrieve_data()
Dim orderlog2 As Worksheet, LR As Long
Set orderlog2 = Sheets("orderlog2")
With orderlog2
LR = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End with
'Rest of code...
也许您甚至不需要最后一行:
Sub Test()
Dim orderlog2 As Worksheet, LR As Long
Set orderlog2 = Sheets("orderlog2")
Application.ScreenUpdating = False
Application.EnableEvents = False
With Intersect(orderlog2.UsedRange, orderlog2.Columns("A:C"))
.AutoFilter 1, Sheets("search").Range("C5").Value
.Offset(1).Resize(.Rows.Count - 1).Copy Sheets("search").Range("E7")
.AutoFilter
End With
'Rest of code...