2012-03-02 45 views
0

搜索在Sheet2中,并更新与相邻的价值Sheet1中值我尝试写一些VBA代码,会第一时间值唯一值的列表,在A列Sheet 2上并搜索其反对sheet1中A列中的唯一值。一旦找到,它就会将单元格6更新为sheet1上活动单元格的右侧,其值与sheet2中的唯一代码相邻。它将继续,在表2中列出其余的表格,直到它到达一个空白单元格。Excel的VBA - 从工作表Sheet1

我已经成功地获取代码,找到独特的价值观,然后通过添加1更新单元6的权利,但我不能工作了其他位:

Private Sub SinglePaste_Click() 
    On Error GoTo InvalidBarcode 
    Dim EAN As Range 
     Sheets("Paste Here").Select 
      For Each EAN In ActiveSheet.Range("A:A") 
      Sheets("Master Stock File").Select 
      With Worksheets("Master Stock File") 
      .Range("A:A").Find(What:=EAN, After:=.Range("A1"), LookIn:=xlFormulas, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
      MatchCase:=False).Activate 
     ActiveCell.Offset(0, 6).Select 
     ActiveCell.Value = ActiveCell.Value + 1 
     End With 
     If IsEmpty(EAN) Then Exit For 
     Next EAN 
    Exit Sub 
    InvalidBarcode: 
    MsgBox ("Invalid Barcode - " & "" & EAN) 
    End Sub 

这是否合理?任何帮助是极大的赞赏。

+1

那么究竟什么是“其他位”,你不能工作了?运行直到一个空白单元格或在另一个表格中找到相应的唯一代码?这两张纸都有相同的唯一代码吗?或者会在一张纸上丢失一些代码? – Ryan 2012-03-02 17:45:43

回答

1

你的代码使用了大量的ActiveSheet,ActiveCell和Select来表示宏记录器,通常效率较低。我仍然不知道“另一位”你指的是,但这里是一个重新设计的宏:

Public Sub NewSinglePaste_Click() 
    Dim EAN As Range 
    Dim FoundRange As Range 
    Dim ValueCell As Range 
    Dim MasterSheet As Worksheet 
    Dim PasteSheet As Worksheet 

    Set MasterSheet = Sheets("Master Stock File") 
    Set PasteSheet = Sheets("Paste Here") 

    On Error GoTo InvalidBarcode 
    For Each EAN In PasteSheet.Range("A:A") 
    If IsEmpty(EAN.Text) Or EAN.Text = "" Then Exit For 

    Set FoundRange = MasterSheet.Range("A:A").Find(What:=EAN, _ 
     After:=MasterSheet.Range("A1"), LookIn:=xlFormulas, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 

    If Not (FoundRange Is Nothing) Then 
     Set ValueCell = FoundRange.Offset(0, 6) 
     ValueCell.Value = ValueCell.Value + 1 
    Else 
     Debug.Print "Cell not found: " & EAN.Worksheet.Name & "!" & EAN.Address 
    End If 
    Next EAN 

    Exit Sub 

InvalidBarcode: 
    MsgBox ("Invalid Barcode - " & "" & EAN) 

End Sub 
+0

我认为他想更新'FoundRange.Offset(0,6)'用'EAN.Offset(0,1)的值' – 2012-03-03 01:23:45

+0

感谢您的帮助两者。我试图解释(在一个非常混乱的一种方式)是工作表Sheet1(“主原文件”)将拥有唯一的ID的一个明确的清单,Sheet2的(“粘贴在这里”)将在那里我贴的一小部分这些ID以及将用于更新主股票文件表中某些值的其他数据。我挣扎着的部分是不是只是增加1到小区六在主原文件中发现EAN的权利,我想补充一点,在旁边的粘贴在此表中的ID,我认为这是数量Tim上面提到的。 – 2012-03-05 16:42:23

+1

...可能应该提到,这与+ EAN.Offset(0,1)的加法完美配合。谢谢你非常。 – 2012-03-05 16:51:12