Regards question 1, perhaps along the lines of:
Sub Example()
Dim ws As Worksheet
Dim xlCalc As XlCalculation
On Error GoTo Handler
With Application
xlCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "*.de" Then
With ws
.Range("C:D").Clear
With .Range(.Cells(3, "A"), .Cells(.Rows.Count, "A").End(xlUp)).Offset(, 2).Resize(, 2)
.Columns(1).FormulaR1C1 = "=RC2-R[-1]C2"
.Columns(2).FormulaR1C1 = "=IF(RC3>0,1,-1)"
End With
End With
End If
Next ws
ExitPoint:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalc
End With
Exit Sub
Handler:
MsgBox "Error Has Occurred" & vbLf & vbLf & _
"Error Number: " & Err.Number & vbLf & vbLf & _
"Error Desc.: " & Err.Description, _
vbCritical, _
"Fatal Error"
Resume ExitPoint
End Sub
Regards question 2 - if it's simply a 3D sum why not just use a 3D sum ?
Put a sheet "START" before first *.de sheet and another "END" after last *.de sheet and then just use:
Bookmarks