VBA:将剪贴板数据粘贴到"查找"特征

时间:2017-10-03 19:03:10

标签: excel vba excel-vba

我是一名IT菜鸟,我们的任务是创建一个Excel宏,它将员工编号从一个工作表交叉引用到另一个工作表。找到匹配的员工编号后,需要复制该员工的信息(姓名等),最后将其带到结果页面并粘贴信息。

这是我第一次制作VBA宏,或者编程一般,所以请耐心等待。

Sub Macro2()
'
' Macro2 Macro
' 1st attempt
'

Dim DataObj As New MSForms.DataObject
Dim S As String
DataObj.GetFromClipboard
S = DataObj.GetText


For x = 1 To 10




Sheets("ad").Select
Cells(11 + x, 7).Select
Selection.Copy
Sheets("sp").Select
Cells.Find(What:=S, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate

ActiveCell.Offset(0, -1).Range("Table_GetJobs4[#Headers]").Select
ActiveCell.Offset(0, 1).Range("Table_GetJobs4[[#Headers],[Company_Code]]"). _
    Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("adtospresult").Select
ActiveCell.Offset(0, -2).Range("A1").Select
Cells.Find(What:="33620", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate
ActiveCell.Offset(0 + x, -9).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 2).Range("A1").Select

Next x
End Sub

很简单,我还没有能够让剪贴板找到工作的功能。任何帮助/指示都将非常感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将范围的值传递给s,而不是尝试将剪贴板信息传递给S,而不是:

s = Cells(11 + x, 7).Value

当你将它复制到另一个工作表时将其反转。

some_range = s  

此外,您不需要选择任何完全有效的工作表或单元格:

Sheets("sp").found_range = Sheets("ad").Cells(11 + x, 7).Value

找到的范围是您想要粘贴第一张工作表值的另一个工作表中的范围。

仅供参考,http://www.techrepublic.com/blog/software-engineer/train-users-to-follow-best-practices-when-writing-vba-code/这将有助于阅读以学习编写代码的最佳实践。当你不得不回去试图破解你在以后的代码中所做的事情时,它将在未来拯救你。