Bryan,
You need to declare the Data variable as some sort of array. You can do this in two ways; either as a fixed size array or a variable sized array.
With a fixed size array you merely need to declare how big each dimension of the array needs to be when declaring the variable, as follows:
Code:
Option Base 1
Private Data(1, 8) As Variant
or
Code:
Private Data(1 To 1, 1 To 8) As Variant
Alternatively you could declare a variable sized array, which you can reseize during run-time. This is a bit more flexible if you don't know what the size of your data may be in each run. I've attached an extract from your code including the variable sized array set-up.
Code:
Private Data() As Variant
Private RangeData As Range
Private Sub SaveRecord()
'Copy values from ExpenditureForm controls to Data array
Set RangeData = ThisWorkbook.Sheets("Sheet1").Range("A1:H1")
ReDim Preserve Data(1 To 1, 1 To 8)
Data(1, 1) = "a" 'txtSEQ.Value
Data(1, 2) = "b" 'cboOrgShp.Value
Data(1, 3) = "c" 'txtNsn.Value
Data(1, 4) = "d" 'Application.WorksheetFunction.VLookup(txtNsn.Value, "Stock_num!AF_noun_tx", 2, False)
Data(1, 5) = "e" 'txtDoc.Value
Data(1, 6) = "f" 'txtLot.Value
Data(1, 7) = "g" 'txtQty.Value
Data(1, 8) = "h" 'txtCatCode.Value
'Assign Data array values to current record in expenditure form
RangeData.Value = Data
End Sub
Hope this helps,
Maccas