Greetings,
I think I got stuck at the for loop. I think I made some mistakes about for loop. The first time I put in the data will stay in the first row. The second time I put in the data, that would start a new row. Instead of repeat like this five times.
I think I got stuck at the for loop. I think I made some mistakes about for loop. The first time I put in the data will stay in the first row. The second time I put in the data, that would start a new row. Instead of repeat like this five times.
VBA Code:
Sub AddLot()
Dim Wafers As Integer, stepid, lotidentifier, ss, t, myrange
100:
On Error Resume Next
Wafers = InputBox("How many Wafers will be processed:", "Inputs", "1 to 25", vbOKCancel)
If Err.Number >= 1 Then Exit Sub
If Val(Wafers) > 25 Or Val(Wafers) < 1 Then
MsgBox "Please enter a valid number within 1 to 25"
GoTo 100
End If
200:
stepid = InputBox("Input your step ID", "ID Number", vbOKCancel)
If Err.Number >= 1 Then Exit Sub
t = checkStep(stepid)
If t = True Then
Else
MsgBox "Please enter a valid step ID."
GoTo 200
End If
lotidentifier = InputBox("input your lotidentifier ", "Number", vbOKCancel)
Dim i As Integer
For i = 1 To 5
Set myrange = Range("I2")
PrintTableHeader myrange
myrange(i).Offset(1, 0) = lotidentifier
myrange(i).Offset(1, 1) = Wafers
myrange(i).Offset(1, 2) = stepid
myrange(i).Offset(1, 3) = Wafers * Application.WorksheetFunction.VLookup(stepid * 1, Sheet3.Range("A:D"), 2, 0) / 60
myrange(i).Offset(1, 4) = Wafers * Application.WorksheetFunction.VLookup(stepid * 1, Sheet3.Range("A:D"), 3, 0) / 60
myrange(i).Offset(1, 5) = myrange.Offset(1, 3) + myrange.Offset(1, 4)
myrange(i).Offset(1, 0).Resize(1, 6).Borders.LineStyle = xlContinuous
myrange(i).Offset(1, 3).Resize(1, 3).NumberFormat = "0.00"
brr = myrange.Offset(i, 0).Resize(1, 6).Value
Next i
If [I4] = "" Then ActiveSheet.Shapes("Button 1").Visible = False Else ActiveSheet.Shapes("Button 1").Visible = True
End Sub
Function checkStep(s)
Dim rownumber
rownumber = Application.Match(s * 1, Sheet3.Range("A:A"), 0)
If IsError(rownumber) = True Then
checkStep = False
Else
checkStep = True
End If
End Function
Sub PrintTableHeader(myrange)
Dim arr
arr = Array("Lot identifer", "# of Wafers in Lot", "Processing Step", "Inspect Time (Minutes)", "Re-Inspect Time (Minuts)", "Expected Time (Minutes)")
myrange.Resize(1, UBound(arr) + 1).Value = arr
myrange.Resize(1, UBound(arr) + 1).Borders.LineStyle = xlContinuous
myrange.Resize(1, UBound(arr) + 1).Interior.ColorIndex = 37
myrange.Resize(1, UBound(arr) + 1).Columns.AutoFit
End Sub
Exmaple.xlsm | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
H | I | J | K | L | M | N | O | |||
1 | ||||||||||
2 | Lot identifer | # of Wafers in Lot | Processing Step | Inspect Time (Minutes) | Re-Inspect Time (Minuts) | Expected Time (Minutes) | ||||
3 | 1 | 23 | 1435 | 19.21 | 48.07 | 67.28 | ||||
4 | 1 | 23 | 1435 | 19.21 | 48.07 | 67.28 | ||||
5 | 1 | 23 | 1435 | 19.21 | 48.07 | 67.28 | ||||
6 | 1 | 23 | 1435 | 19.21 | 48.07 | 67.28 | ||||
7 | 1 | 23 | 1435 | 19.21 | 48.07 | 67.28 | ||||
8 | ||||||||||
9 | ||||||||||
Report |