You're using "i" before you assign it any value
WSNr = Worksheets(i).Cells(Rows.Count, "A").End(xlUp).Row + 1
I'm guessing that the troublesome line is not where you want it??
Private Sub cmdSaveGL_Click()
Dim WSNr As Long
Dim a As Integer
Dim i As Long
a = ThisWorkbook.Worksheets.Count
' Add Expense data to Registers
If Me.cmbGLCategory.value = "Expense" Then
For i = 1 To a
' Find next blank row
WSNr = Worksheets(i).Cells(Rows.Count, "A").End(xlUp).Row + 1
If Worksheets(i).Name = cmbGLCashAcct.value Then Worksheets(i).Range("A" & WSNr).value = Me.txbGLName.value End If Next End If End Sub