"I work as a support developer for the trading desk at a fairly large bank," Jay P.L. writes, "some of the automatic trading systems used have grown organically from what can originally be called an Excel spread-sheet. However, the complexity can sometimes be overwhelming."
Jay continues, "When traders find functionality that doesn’t quite work as expected, our usual response is, 'just send over the spreadsheet and we'll take a look at it.' Cracking open the VBA and debugging through the issue usually finds the cause relatively quickly. Most of the time, the issue can be blamed on a close colleague who made the mistake during a particularly hectic trading atmosphere under an abundant amount of stress and pressure. These situations are usually overlooked and forgiven. The issue fixed and returned."
"Usually forgiven. Imagine my joy at finding the following code snippet."
Sub LogIn()
On Error Resume Next
Result = BatchLogin("jpl", "England1")
If Err.Number <> 0 Then
Err.Clear
PassWordReset
ElseIf Len(Result) = 0 Then
PassWordReset
End If
End Sub
Sub PassWordReset()
With ThisWorkbook.VBProject.VBComponents.Item("DataBase")
SecStr = .CodeModule.Lines(3, 1)
SecArr = Split(Right(SecStr, Len(SecStr) - 22), ",")
UserID = Replace(SecArr(0), Chr(34), "")
With frmLogIn
.txbUserId = UserID
.Show
If Len(.txbUserId) = 0 Then End
UserID = .txbUserId
Password = .txbPassword
End With
AppSts = Application.ScreenUpdating
Application.ScreenUpdating = True
Application.ScreenUpdating = AppSts
On Error Resume Next
Result = BatchLogin(CStr(UserID), CStr(Password))
If Err.Number = 0 And Len(Result) > 0 Then
q = Chr(34)
.CodeModule.DeleteLines 3, 1
On Error GoTo 0
.CodeModule.InsertLines 3, _
" Result = BatchLogin(" _
& q & UserID & q & "," _
& q & Password & q & ")"
Else
PassWordReset
End If
End With
End Sub
Jay adds, "I find the interesting point being the self-modifying VBA code, even though it can be enjoyed on so many levels."