John M. Lercher
Data Analytics Professional
618-***-**** ****.*******@*****.*** St. Louis, MO
PROFESSIONAL SUMMARY
Driven Data Analytics Professional with a proven track record of delivering transformative solutions through strategic planning and data-driven insights. Over two decades of experience in leading complex initiatives, driving process optimization, and fostering innovation across diverse industries. Proficient in advanced analytics tools (Power BI, Tableau, SQL) and skilled in developing automated workflows to streamline operations and enhance decision-making. Seeking a challenging data analytics developer role to leverage my expertise in shaping data-centric strategies and driving positive business outcomes.
SKILLS
Data Analytics & Reporting
Specialist in data analytics regarding FEMA disaster declarations. This includes the identification, servicing and remediation of affected USDA properties.
Expert level VBA design and development in all MS Office products including Access. Code examples available upon request.
Strategy Development & Innovation
Process Automation
Cross-functional Team Leadership
Stakeholder Engagement
Financial & Compliance Auditing
Workflow System Design
Executive Communication & Reporting
Regulatory Compliance
SQL, Power BI, Tableau,
MS Office Suite
Critical thinker and problem-solver
Strong communication skills
WORK EXPERIENCE
Management and Program Analyst USDA Rural Development, St. Louis, MO August 2002 – Present
Strategic Leadership: Spearheaded the development of automated systems that improved audit efficiency for Single Family Housing (SFH) and Multi-Family Housing (MFH) programs, recovering over $50 million in unauthorized assistance.
Data-Driven Insights: Utilized Tableau, Power BI, and SQL to provide quantitative reports that influenced upper management's decisions on staffing, performance reviews, and compliance measures.
Stakeholder Collaboration: Worked cross-functionally with IT specialists and management to design workflow automation that enhanced productivity by 80%, aligning systems with USDA initiatives.
Process Innovation: Led process redesign initiatives that resulted in the automation of mass mailings and standardized data entry systems, reducing manual errors by 90%.
Communication and Leadership: Engaged with senior management, providing strategic insights during high-level meetings to align organizational goals with operational execution.
Key Achievements:
Reduced auditing error rates by 75% through implementation of automated systems.
Developed training programs for 600+ staff, ensuring seamless adoption of telework technologies and data reporting tools.
Produced executive-level reports that improved organizational transparency with stakeholders, including Office of General Counsel, Office of Inspector General and the US House of Representatives subcommittee on housing.
EDUCATION
M.A. in Management/Information Systems Webster University, St. Louis, MO
B.A. in Political Science/Philosophy of Religion McKendree University, Lebanon, IL
CERTIFICATIONS
Microsoft Certified Data Analyst
Power BI, Tableau, SQL
VBA/Microsoft Office Workflow Automation
Effective Team Leadership
Microsoft Visual Basic Development
I possess expert level skill in VBA design and deployment. My skill applies to all products within the MS Office suite. The code samples below illustrate my skills in using VBA within Word, Excel and Access Databases and Modules.
Word
This VBA code automates the creation of form letters using word documents linked to tables within Access that contain the mailing information needed to populate mail merge fields within the letters. The code uses Adobe distiller to create Adobe PDFs from the merged documents.
Sub revltr Set wapp = CreateObject("Word.Application")
DisplayAlerts = False
SetWarnings = False
ChangeFileOpenDirectory "C:\mor doc\"
Documents.Open FileName Moratorium missing docs - reviews.doc _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument PasswordTemplate Revert:=False, _
WritePasswordDocument WritePasswordTemplate Format:= _
wdOpenFormatAuto, XMLTransform
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ActiveDocument.Saved = True
ActiveDocument.Close
This code loops multiple times to create different types of letters.
Excel
The code below illustrates the use of VBA to parse a large data file using the array function within VBA. This allows for the conversion of a large, unstructured data file into a usable Excel spreadsheet. This code can be used to automate the formatting of new files each time an updated data file is received. This code formats a file received from the credit bureaus. Credit bureaus recently standardized the data structure of reporting files into a format called Metro2. This VBA code formats the Metro2 file into labeled columns in Excel.
EXP DATA FILE SECTION
Workbooks.OpenText Filename:="C:\cb files\EXP Data.txt", Origin:=437, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(30 _
, 2), Array(60, 2), Array(73, 2), Array(75, 3), Array(83, 1), Array(92, 1), Array(101, 1), _
Array(104, 1), Array(105, 1), Array(114, 1), Array(123, 1), Array(125, 1), Array(126, 1), _
Array(150, 2), Array(152, 2), Array(154, 1), Array(163, 1), Array(172, 1), Array(181, 3), _
Array(189, 3), Array(197, 3), Array(205, 3), Array(213, 1), Array(231, 1), Array(256, 1), _
Array(276, 1), Array(296, 1), Array(297, 2), Array(306, 3), Array(314, 2), Array(324, 2), _
Array(325, 2), Array(327, 2), Array(329, 2), Array(361, 2), Array(393, 2), Array(413, 2), _
Array(415, 2), Array(426, 1), Array(429, 2), Array(454, 2), Array(474, 2), Array(494, 2), _
Array(495, 2), Array(504, 3), Array(512, 2), Array(522, 2), Array(523, 2), Array(526, 1), _
Array(626, 1), Array(726, 1), Array(826, 1), Array(926, 1), Array(1026, 1), Array(1126, 1) _
, Array(1226, 1), Array(1326, 1), Array(1426, 1), Array(1526, 1), Array(1529, 2), Array( _
1554, 2), Array(1574, 2), Array(1594, 2), Array(1595, 2), Array(1604, 2), Array(1612, 2), _
Array(1622, 2), Array(1623, 2), Array(1625, 2), Array(1627, 2), Array(1659, 2), Array( _
1691, 2), Array(1711, 2), Array(1713, 2), Array(1726, 1), Array(1926, 1), Array(2126, 1), _
Array(2326, 1), Array(2526, 1), Array(2726, 1), Array(2926, 1), Array(3126, 1), Array( _
3326, 1), Array(3526, 1), Array(3726, 1), Array(3760, 1), Array(3762, 2), Array(3764, 1), _
Array(3800, 1), Array(3802, 2), Array(3804, 3), Array(3812, 1), Array(3830, 1)), _
TrailingMinusNumbers:=True
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows("2:2").Select
Selection.EntireRow.Hidden = True
Columns("N:N").Select
Selection.NumberFormat = "000000000000000000000000"
Range("AE1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Header_EXP"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Account #_EXP"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Portfolio Type_EXP"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Account Type_EXP"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Date Opened_EXP"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Credit Limit_EXP"
Range("G1").Select
ActiveCell.FormulaR1C1 = "High Credit_Orig Amt_EXP"
Range("H1").Select
ActiveCell.FormulaR1C1 = "Terms Duration_EXP"
Range("I1").Select
ActiveCell.FormulaR1C1 = "Terms Frequency_EXP"
Range("J1").Select
Range("J1").Select
ActiveCell.FormulaR1C1 = "Scheduled Monthly Payment_EXP"
Range("K1").Select
ActiveCell.FormulaR1C1 = "Actual Payment Amount_EXP"
Range("L1").Select
ActiveCell.FormulaR1C1 = "Account Status_EXP"
Range("M1").Select
ActiveCell.FormulaR1C1 = "Payment Rating_EXP"
Range("N1").Select
ActiveCell.FormulaR1C1 = "Payment History Profile_EXP"
Range("O1").Select
ActiveCell.FormulaR1C1 = "Special Comment Code_EXP"
Range("P1").Select
ActiveCell.FormulaR1C1 = "Compliance Condition Code_EXP"
Range("Q1").Select
ActiveCell.FormulaR1C1 = "Current Balance_EXP"
Range("R1").Select
ActiveCell.FormulaR1C1 = "Amount Past Due_EXP"
Range("S1").Select
ActiveCell.FormulaR1C1 = "Original Charge-Off Amount_EXP"
Range("T1").Select
ActiveCell.FormulaR1C1 = "DOAI_EXP"
Range("U1").Select
ActiveCell.FormulaR1C1 = "DOFD_EXP"
Range("V1").Select
ActiveCell.FormulaR1C1 = "Date Closed_EXP"
Range("W1").Select
ActiveCell.FormulaR1C1 = "Date of Last Payment_EXP"
Range("X1").Select
ActiveCell.FormulaR1C1 = "Reserved_EXP"
Range("Y1").Select
ActiveCell.FormulaR1C1 = "Surname_EXP"
Range("Z1").Select
ActiveCell.FormulaR1C1 = "First Name_EXP"
Range("AA1").Select
ActiveCell.FormulaR1C1 = "Middle_EXP"
Range("AB1").Select
ActiveCell.FormulaR1C1 = "Generation Code_EXP"
Range("AC1").Select
ActiveCell.FormulaR1C1 = "SSN_EXP"
Range("AD1").Select
ActiveCell.FormulaR1C1 = "DOB_EXP"
Range("AE1").Select
ActiveCell.FormulaR1C1 = "Telephone_EXP"
Range("AF1").Select
ActiveCell.FormulaR1C1 = "ECOA_EXP"
Range("AG1").Select
ActiveCell.FormulaR1C1 = "CII_EXP"
Range("AH1").Select
ActiveCell.FormulaR1C1 = "Country Code"
Range("AI1").Select
ActiveWindow.ActivatePrevious
Windows("EXP Data.txt").Activate
Range("AH1").Select
ActiveCell.FormulaR1C1 = "Country Code_EXP"
Range("AI1").Select
ActiveCell.FormulaR1C1 = "Address Line 1_EXP"
Range("AJ1").Select
ActiveCell.FormulaR1C1 = "Address Line 2_EXP"
Range("AK1").Select
ActiveCell.FormulaR1C1 = "City_EXP"
Range("AL1").Select
ActiveCell.FormulaR1C1 = "State_EXP"
Range("AM1").Select
ActiveCell.FormulaR1C1 = "Zip_EXP"
Range("AN1").Select
ActiveCell.FormulaR1C1 = "J1 Segment_EXP"
Range("AO1").Select
ActiveCell.FormulaR1C1 = "J1 Surname_EXP"
Range("AP1").Select
ActiveCell.FormulaR1C1 = "J1 First Name_EXP"
Range("AQ1").Select
ActiveCell.FormulaR1C1 = "J1 Middle_EXP"
Range("AR1").Select
ActiveCell.FormulaR1C1 = "Generation Code_EXP"
Range("AS1").Select
ActiveCell.FormulaR1C1 = "SSN_EXP"
Range("AT1").Select
ActiveCell.FormulaR1C1 = ""
Range("AR1").Select
ActiveCell.FormulaR1C1 = "J1 Generation Code_EXP"
Range("AS1").Select
ActiveCell.FormulaR1C1 = "J1 SSN_EXP"
Range("AT1").Select
ActiveCell.FormulaR1C1 = "J1 DOB_EXP"
Range("AU1").Select
ActiveCell.FormulaR1C1 = "J1 Telephone_EXP"
Range("AV1").Select
ActiveCell.FormulaR1C1 = "J1 ECOA_EXP"
Range("AW1").Select
ActiveCell.FormulaR1C1 = "J1 CII_EXP"
Range("AX1").Select
ActiveCell.FormulaR1C1 = "J1-1 Segment_EXP"
Range("AY1").Select
ActiveCell.FormulaR1C1 = "J1-2 Segment_EXP"
Range("AZ1").Select
ActiveCell.FormulaR1C1 = "J1-3 Segment_EXP"
Range("BA1").Select
ActiveCell.FormulaR1C1 = "J1-4 Segment_EXP"
Range("BB1").Select
ActiveCell.FormulaR1C1 = "J1-5 Segment_EXP"
Range("BC1").Select
ActiveCell.FormulaR1C1 = "J1-6 Segment_EXP"
Range("BD1").Select
ActiveCell.FormulaR1C1 = "J1-7 Segment_EXP"
Range("BE1").Select
ActiveCell.FormulaR1C1 = "J1-8 Segment_EXP"
Range("BF1").Select
ActiveCell.FormulaR1C1 = "J1-9 Segment_EXP"
Range("BG1").Select
ActiveCell.FormulaR1C1 = "J1-10 Segment_EXP"
Range("BH1").Select
ActiveCell.FormulaR1C1 = "J2 Segment_EXP"
Range("BI1").Select
ActiveCell.FormulaR1C1 = "J2 Surname_EXP"
Range("BJ1").Select
ActiveCell.FormulaR1C1 = "J2 First Name_EXP"
Range("BK1").Select
ActiveCell.FormulaR1C1 = "J2 Middle_EXP"
Range("BL1").Select
ActiveCell.FormulaR1C1 = "J2 Generation Code_EXP"
Range("BM1").Select
ActiveCell.FormulaR1C1 = "J2 SSN_EXP"
Range("BN1").Select
ActiveCell.FormulaR1C1 = "J2 DOB_EXP"
Range("BO1").Select
ActiveCell.FormulaR1C1 = "J2 Telephone_EXP"
Range("BP1").Select
ActiveCell.FormulaR1C1 = "J2 ECOA_EXP"
Range("BQ1").Select
ActiveCell.FormulaR1C1 = "J2 CII_EXP"
Range("BR1").Select
ActiveCell.FormulaR1C1 = "J2 Country Code_EXP"
Range("BS1").Select
ActiveCell.FormulaR1C1 = "J2 Address Line 1_EXP"
Range("BT1").Select
ActiveCell.FormulaR1C1 = "J2 Address Line 2_EXP"
Range("BU1").Select
ActiveCell.FormulaR1C1 = "J2 City_EXP"
Range("BV1").Select
ActiveCell.FormulaR1C1 = "J2 State_EXP"
Range("BW1").Select
ActiveCell.FormulaR1C1 = "J2 Zip_EXP"
Range("BX1").Select
ActiveCell.FormulaR1C1 = "J2-1 Segment_EXP"
Range("BY1").Select
ActiveCell.FormulaR1C1 = "J2-2 Segment_EXP"
Range("BZ1").Select
ActiveCell.FormulaR1C1 = "J2-3 Segment_EXP"
Range("CA1").Select
ActiveCell.FormulaR1C1 = "J2-4 Segment_EXP"
Range("CB1").Select
ActiveCell.FormulaR1C1 = "J2-5 Segment_EXP"
Range("CC1").Select
ActiveCell.FormulaR1C1 = "J2-6 Segment_EXP"
Range("CD1").Select
ActiveCell.FormulaR1C1 = "J2-7 Segment_EXP"
Range("CE1").Select
ActiveCell.FormulaR1C1 = "J2-8 Segment_EXP"
Range("CF1").Select
ActiveCell.FormulaR1C1 = "J2-9 Segment_EXP"
Range("CG1").Select
ActiveCell.FormulaR1C1 = "J2-10 Segment_EXP"
Range("CH1").Select
ActiveCell.FormulaR1C1 = "K2 Segment_EXP"
Range("CI1").Select
ActiveCell.FormulaR1C1 = "K3 Segment_EXP"
Range("CJ1").Select
ActiveCell.FormulaR1C1 = "K3 Segment_EXP1"
Range("CK1").Select
ActiveCell.FormulaR1C1 = "K3 Segment_EXP2"
Range("CL1").Select
ActiveCell.FormulaR1C1 = "K4 Segment_EXP"
Range("CM1").Select
ActiveCell.FormulaR1C1 = "K4 Specialized Payment Indicator_EXP"
Range("CN1").Select
ActiveCell.FormulaR1C1 = "K4 Deferred Payment Start Date_EXP"
Range("CO1").Select
ActiveCell.FormulaR1C1 = "K4 Segment_EXP1"
Range("CP1").Select
ActiveCell.FormulaR1C1 = "L1 Segment_EXP"
Range("CQ1").Select
Columns("CN:CN").Select
Range("CN307").Activate
ChDir "c:\cb files\"
ActiveWorkbook.SaveAs Filename:= _
"c:\cb files\experian file.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
This code loops and alters the field names to process additional credit bureau files for Innovis, Transunion and Equifax in addition to Experian which is shown above.
Access
My use of VBA in Access is a departure from the automation aspect that VBA allows for in Word and Excel. I am very skilled in database administration and process development within Access. This involves the creation of user input forms to collect data that cannot be collected through traditional sources such a data warehouse. The VBA code below controls the entry of data into a form. The VBA code allows the user to enter data but limits that data to predefined values using an offline rule set. Limiting the user data to predefined values virtually eliminates the need for data cleansing and the loss of completed audit information due to invalid data values. I also use the code to calculate additional database field values thus eliminating the need for the user to input these values.
Private Sub Audit_Child_Care_GotFocus Audit_Medical_Expenses_minues_3__annual_income = (Audit_Medical_Expenses_Not_Reimbursed - Audit_3__of_Annual_Income)
If Audit_Medical_Expenses_minues_3__annual_income < 0 Then
Audit_Medical_Expenses_minues_3__annual_income = 0
Else
End If
Audit_Total_Deductions_for_family = (Audit_family_members_elderly_or_disabled + Audit_family_members_under_18_or_students + Audit_Child_Care)
Audit_3__of_Annual_Income = (total_annual_Income * 0.03)
Audit_Total_Deductions = (Audit_family_members_elderly_or_disabled + Audit_family_members_under_18_or_students + Audit_Child_Care + Audit_Medical_Expenses_minues_3__annual_income)
Audit_Adjusted_Income = (total_annual_Income - Audit_Total_Deductions)
Audit_Total_Deductions_for_family = (Audit_family_members_elderly_or_disabled + Audit_family_members_under_18_or_students + Audit_Child_Care)
If Audit_Medical_Expenses_Not_Reimbursed = 0 Then
Audit_Total_Deductions = Audit_Total_Deductions_for_family
Audit_Adjusted_Income = (total_annual_Income - Audit_Total_Deductions)
Else
End If
Audit_Adjusted_Income = (total_annual_Income - Audit_Total_Deductions)
Audit_Adjusted_Income = 10 * Round([Audit_Adjusted_Income] / 10, 0)
DoCmd.Maximize
audit_required = "YES"
Combo290.Visible = False
Combo210 = ""
Combo213 = ""
Activation_Date = ""
audit_not_required_reason.Visible = False
Date.Visible = False
reviewer_name.SetFocus
Date.Locked = True
Combo210.Enabled = True
Combo213.Enabled = True
DoCmd.GoToRecord,, acNewRec
total_annual_Income.Locked = True
Audit_Total_Deductions_for_family.Locked = True
Audit_Medical_Expenses_minues_3__annual_income.Locked = True
Audit_Total_Deductions.Locked = True
Audit_Total_Deductions.Locked = True
Audit_Adjusted_Income.Locked = True
reviewer_name.SetFocus
Audit_3__of_Annual_Income.Locked = True
Private Sub primary_borrower_GotFocus If Combo210 <> account_number Then
MsgBox ("The Account Number was not found.")
Combo210.SetFocus
Else
Private Sub saveit_Click If (audit_required) = "No" Then GoTo
If Audit_Effective_Date >= Audit_Expiration_Date Then
account_number.SetFocus
MsgBox ("The Effective or Expiration Date is Incorrect.")
Else
End If
If IsNull(Audit_Annual_Income_1) = True Then
MsgBox ("The Audit Annual Income 1 field is blank. ")
Audit_Annual_Income_1.SetFocus
Else
End If
If IsNull(Audit_Calculation_Documentation_1) = True Then
MsgBox ("The Audit Calculation 1 field is blank.")
Audit_Calculation_Documentation_1.SetFocus
Else
End If
If IsNull(Audit_Household_Member_1) = True Then
MsgBox ("The Audit Household Member 1 field is blank.")
Audit_Household_Member_1.SetFocus
Else
End If
If IsNull(Audit_Income_Source_1) = True Then
MsgBox ("The Audit Income 1 field is blank.")
Audit_Income_Source_1.SetFocus
Else
End If
If (Audit_Subsidy <> 0 And IsNull(Date_Audit_Completed) = True) Then
MsgBox ("Date Audit Completed is blank. Please populate this date.")
Date_Audit_Completed.SetFocus
Else
End If
If (Audit_Subsidy = 0 And IsNull(Date_Audit_Completed) = False) And IsNull(Combo290 = True) Then
Combo290.Visible = True
MsgBox ("You must enter the Zero Audit Subsidy Amount Reason.")
Combo290.SetFocus
Else
End If
If IsNull(primary_borrower) = True Then
MsgBox ("The Primary Borrower field is blank.")
primary_borrower.SetFocus
Private Sub Close_without_Saving_Click On Error GoTo Err_Close_without_Saving_Click
If IsNull(primary_borrower) = True Then
Else
End If
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo,, acMenuVer70
DoCmd.Close
Exit_Close_without_Saving_Click:
Exit Sub
Err_Close_without_Saving_Click:
MsgBox Err.Description
Resume Exit_Close_without_Saving_Click
DoCmd.Close
DoCmd.Save
DoCmd.Close
Private Sub Combo210_AfterUpdate Application.Echo False
account_number.Enabled = True
account_number.SetFocus
DoCmd.FindRecord Combo210
Combo210.SetFocus
account_number.Locked = True
Application.Echo True
DoCmd.Requery
Date = Now
audit_required.SetFocus
End Sub
Modules
Since VBA is nearly identical to VB 6.0, Access allows for the creation of modules which are similar to VB6 executables. Modules contain VBA code that allows for additional functionality within Access but are not tied to another item such as a form or query. Module code can be written and stored independently from other items and then executed using an Access macro or by calling it from other VBA code.
The code example below checks the name of the user logged into Windows and verifies that the user is valid and should be allowed to view the database. Names have been changed from real USDA employee names.
Public Function extsec Dim myQry As String
Dim sUserName As String
' Get Current User Name
sUserName = Environ$("username")
If sUserName = "james.madison" Or
If sUserName = "barack.obama" Or
If sUserName = "thomas.jefferson" Or
If sUserName = "grover.cleveland"
then
q2:
End Function
else
MsgBox ("You are not authorized to use this database. Access will now close.")
Docmd.Close
End Sub
The module below collects PDF files from a folder, attaches them to an email and sends the files to the users specified in the “names” field. This allows for the creation of “Blast” emails to send documents or reports that are needed daily. This process occurs silently in the background. Outlook does not open nor is it displayed to the user executing the module. The sleep function shown within the code below is used to delay the attachment of files to the email until the creation of the PDF files has completed.
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Function sm 'Sub sendmail Dim objol As Object
Dim objmail As Object
Dim objFolder As Object
Dim strFolder As String
Dim fso As Object
Dim fsFolder As Object
Dim fsFile As Object
strFolder = "c:\mor doc merge\"
names2 = ("***.*****@****.***;****.*****@****.***;****.*****@****.***; ")
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsFolder = fso.GetFolder(strFolder)
Set objol = CreateObject("Outlook.Application")
Set objmail = objol.CreateItem(0) '(olMailItem)
With objmail
.to = names2
.subject = "Moratorium Letters for " & Date
.Body = "Attached are the moratorium letters for today."
.NoAging = True
'// Using the file system object, return/add all the Excel files in the picked //
'// folder newHour = Hour(Now Sleep (96111)
For Each fsFile In fsFolder.Files
If fsFile.Name Like "*.pdf" Then
.Attachments.Add strFolder & "\" & fsFile.Name
End If
Next
.Send
End With
errhndl:
Set objFolder = Nothing
Set fso = Nothing
Set fsFolder = Nothing
Set objol = Nothing
Set objmail = Nothing
DoCmd.Close
End Function
Thank you for reviewing the code examples I’ve provided. I am constantly researching better coding methods and investigating ways that I can improve the efficiency and accuracy of USDA employees thus improving the quality and accuracy of information provided to USDA Rural Development Single Family Housing customers. I have 20 years of experience writing and implementing VBA. I think you’ll find that my skills, experience and master’s degree level education make me uniquely qualified for this position.