Darren Smith
Well-known Member
- Joined
- Nov 23, 2020
- Messages
- 631
- Office Version
- 2019
- Platform
- Windows
Also using case function for the ranges.
Please help to join the Match, Index results to specified Ranges
Please help to join the Match, Index results to specified Ranges
VBA Code:
Private Sub Refresh_Drawing_Numbers_Click()
Dim cmb As ComboBox
Dim wsSource As Worksheet, wsDest As Worksheet
Dim wsSourceLastRow As Long, wsDestLastRow As Long
Dim IndexRng As Range, MatchRng As Range
Dim i As Integer
Dim RefreshDrNumbers As Long
Set cmb = Me.Refresh_Drawing_Numbers
Set wsSource = ThisWorkbook.Worksheets("Parts List")
Set wsDest = ThisWorkbook.Worksheets("Job Card Master")
wsSourceLastRow = wsSource.Range("A" & Rows.Count).End(xlUp).Row
wsDestLastRow = wsDest.Range("A" & Rows.Count).End(xlUp).Row
Set IndexRng = wsSource.Range("F1:F" & wsSourceLastRow)
Set MatchRng = wsSource.Range("E1:E" & wsSourceLastRow)
Select Case cmb.Value
Case ("Refresh DrawingNo.s 1 Page Jobcard")
RefreshDrNumbers wsDest.Range("A13:Q" & wsDestLastRow)
Case ("Refresh DrawingNo.s 2 Page Jobcard")
RefreshDrNumbers wsDest.Range("A13:Q61")
RefreshDrNumbers wsDest.Range("A66:Q" & wsDestLastRow)
Case ("Refresh DrawingNo.s 3 Page Jobcard")
RefreshDrNumbers wsDest.Range("A13:Q61")
RefreshDrNumbers wsDest.Range("A66:Q122")
RefreshDrNumbers wsDest.Range("A127:Q" & wsDestLastRow)
Case ("Refresh DrawingNo.s 4 Page Jobcard")
RefreshDrNumbers wsDest.Range("A13:Q61")
RefreshDrNumbers wsDest.Range("A66:Q122")
RefreshDrNumbers wsDest.Range("A127:Q183")
RefreshDrNumbers wsDest.Range("A188:Q" & wsDestLastRow)
Case ("Refresh DrawingN0.s 5 Page Jobcard")
RefreshDrNumbers wsDest.Range("A13:Q61")
RefreshDrNumbers wsDest.Range("A66:Q122")
RefreshDrNumbers wsDest.Range("A127:Q183")
RefreshDrNumbers wsDest.Range("A188:Q244")
RefreshDrNumbers wsDest.Range("A249:Q" & wsDestLastRow)
End Select
End Sub
Sub RefreshDrNumbers()
Dim i As Integer
For i = 2 To wsDestLastRow
Dim MatchRow
MatchRow = Application.Match(wsDestDest.Range("E" & i).Value, MatchRng, 0)
If IsError(MatchRow) Then
wsDest.Range("B" & i).Value = ""
Else
wsDest.Range("B" & i).Value = IndexRng.Cells(MatchRow, 1)
End If
Next i
End If
End Sub