我正在尝试运行一个宏,允许用户在一次搜索中搜索最多15个值 . 用户有时可能只搜索1个值,但最终用户希望此选项可用 . 我现在拥有的代码在 Sheet1
中搜索一个值,当找到它时将整行复制到 Sheet2
,效果很好 . 现在我正在尝试最多15个值 . 我目前的代码如下:
Sub FindValues()
Dim LSearchRow As Integer
Dim rw As Integer, cl As Range, LSearchValue As Long, LCopyToRow As Integer
Sheet2.Cells.Clear
Sheet1.Select
On Error GoTo Err_Execute
'this for the end user to input the required A/C to be searched
LSearchValue = InputBox("Please enter a value to search for.", "Enter value")
LCopyToRow = 2
For rw = 1 To 1555
For Each cl In Range("D" & rw & ":M" & rw)
If cl = LSearchValue Then
cl.EntireRow.Copy
'Destination:=Worksheets("Sheet2")
'.Rows(LCopyToRow & ":" & LCopyToRow)
Sheets("Sheet2").Select
Rows(LCopyToRow & ":" & LCopyToRow).Select
'Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
'LSearchRow = LSearchRow + 1
Next cl
Next rw
'Position on cell A3
'Application.CutCopyMode = False
'Selection.Copy
Sheets("Sheet2").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Sheet2.Select
MsgBox "All matching data has been copied."
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub
1 回答
请尝试以下代码 . 您可能希望使搜索项的输入更加健壮,因为如果他们单击“取消”或输入任何非数字值,您将收到错误 .