几个工作表中的变量匹配

时间:2014-01-22 21:31:52

标签: excel-vba vba excel

在我的机器配置器中,我有以下代码,当我在与ComboBox2相同的工作表中获得机器的所有数据时工作正常,但是现在我重新组织了数据并将它们分成10个不同的工作表。这意味着一个工作表包含每个machinemodell的项目。

现在,我的问题是这样,我如何调整下面的代码,以便它在所有10张纸中的AG列中进行搜索和匹配,而不仅仅是当前的纸张?

我尝试使用IF语句和Case语句,但它们根本不起作用。

欢迎任何提示:)

Private Sub ComboBox2_Change()

Dim vr%
vr = 0
On Error Resume Next
vr = WorksheetFunction.Match(ComboBox2.Value, Columns("AG"), 0)
On Error GoTo 0
If vr = 0 Then Exit Sub
If ComboBox2.Value = "Velg utstyr her" Then Exit Sub
Range("AE" & vr & ":AM" & vr).Copy Destination:=Range("C91").End(xlUp).Offset(1, 0)

End Sub    

更新1 :(尝试循环使用工作表但不工作)

 Private Sub ComboBox2_Change()

 Dim Current As Worksheet
 Dim vr%

 For Each Current In Worksheets

 vr = 0
 On Error Resume Next
 vr = WorksheetFunction.Match(ComboBox2.Value, Columns("AG"), 0)
 On Error GoTo 0
 If vr = 0 Then Exit Sub
 If ComboBox2.Value = "Velg utstyr her" Then Exit Sub
 Range("AE" & vr & ":AM" & vr).Copy Destination:=Sheets("Sheet1").Range("C91").End(xlUp).Offset(1, 0)

 Next

 End Sub

1 个答案:

答案 0 :(得分:0)

未测试:

Private Sub ComboBox2_Change()

    Dim sht As Worksheet
    Dim v

    If ComboBox2.Value = "Velg utstyr her" Then Exit Sub

    For Each sht In ThisWorkbook.Worksheets

        v = Application.Match(ComboBox2.Value, sht.Range("AG:AG"), 0)
        If Not IsError(v) Then
            sht.range("AE" & v & ":AM" & v).Copy _
                   Activesheet.Range("C91").End(xlUp).Offset(1, 0)
            Exit For 'if you only expect one hit
        End If

    Next

End Sub