Using a matrix and class design

M

mikezx10

I am struggling with how to use a matrix(?) to feed my class
the code in sub Main doesnt work and i dont know how to fix it or how
to use the data passed to the AddEntry sub.

Any help greatly appreciated.


Class:
Private Entries As Collection
Private mAcctNo As String
Private mDebit As Integer
Private mCredit As Integer

Public Sub Main(data As Variant)
Dim i As Integer

For i = 1 To data.Length
AddEntry data(1)
Next i
End Sub
Private Sub AddEntry(entry As Variant)
Dim Je As JournalEntry
Set Je = New JournalEntry
Je.acctNo entry(1)
Je.Debit = entry(2)
Je.Credit = entry(3)
Entries.Add (Je)
End Sub
Public Property Let acctNo(val As String)
mAcctNo = val
End Property
Public Property Let Credit(val As Integer)
mCredit = val
End Property
Public Property Let Debit(val As Integer)
mDebit = val
End Property
------------------------------------------------
calling code:

Sub getstuff()
Dim vMatrix As Variant
Dim rngLastRow As Range

'a handle on the range we are working with
With ActiveSheet.Range("A:C")

'get the LastRow
Set rngLastRow = .Find(what:="*", searchorder:=xlByRows,
searchdirection:=xlPrevious)

'if the range contains data then populate our variant array
If Not rngLastRow Is Nothing Then
vMatrix = .Resize(rngLastRow.Row - .Row + 1, .Columns.Count)
End If

End With
Dim Je As JournalEntry
Set Je = New JournalEntry
Je.Main (vMatrix)

End Sub
 
S

Simon Lloyd

mikezx10;351065 said:
I am struggling with how to use a matrix(?) to feed my class
the code in sub Main doesnt work and i dont know how to fix it or how
to use the data passed to the AddEntry sub.

Any help greatly appreciated.

Code:
--------------------
'''Class:
Private Entries As Collection
Private mAcctNo As String
Private mDebit As Integer
Private mCredit As Integer

Public Sub Main(data As Variant)
Dim i As Integer

For i = 1 To data.Length
AddEntry data(1)
Next i
End Sub
Private Sub AddEntry(entry As Variant)
Dim Je As JournalEntry
Set Je = New JournalEntry
Je.acctNo entry(1)
Je.Debit = entry(2)
Je.Credit = entry(3)
Entries.Add (Je)
End Sub
Public Property Let acctNo(val As String)
mAcctNo = val
End Property
Public Property Let Credit(val As Integer)
mCredit = val
End Property
Public Property Let Debit(val As Integer)
mDebit = val
End Property
''------------------------------------------------
''calling code:

Sub getstuff()
Dim vMatrix As Variant
Dim rngLastRow As Range

'a handle on the range we are working with
With ActiveSheet.Range("A:C")

'get the LastRow
Set rngLastRow = .Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious)

'if the range contains data then populate our variant array
If Not rngLastRow Is Nothing Then
vMatrix = .Resize(rngLastRow.Row - .Row + 1, .Columns.Count)
End If

End With
Dim Je As JournalEntry
Set Je = New JournalEntry
Je.Main (vMatrix)

End Sub
--------------------
highlight it after posting and click the # at the top of your reply
window) as i don't see a decleration for data, also you use "AddEntry
data(1)" but it should be "AddEntry data(i)", you must also remember
that unless a Private sub is located within the same module as the one
calling it, it won't be available to the calling sub.


--
Simon Lloyd

Regards,
Simon Lloyd
'The Code Cage' (http://www.thecodecage.com)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top