VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "DB_Data_sample" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Private data_ As Excel.Worksheet Public Function Init(target As Excel.Worksheet) Set data_ = target End Function Public Property Get Count() As Long Count = ILast.row_ - IBegin.row_ + 1 End Property Public Function IBegin() As IteratorWorker Set IBegin = New IteratorWorker Call IBegin.Init(data_) End Function Public Function ILast() As IteratorWorker Set ILast = New IteratorWorker Call ILast.Init(data_) Call ILast.GoLast End Function Public Function INew() As IteratorWorker Set INew = New IteratorWorker Call INew.Init(data_) Call INew.GoLast Call INew.Increment End Function Public Function Clear() Call data_.UsedRange.Offset(1).ClearContents End Function Public Function Contains(sWorkerID$) As Boolean Contains = Not Access(sWorkerID) Is Nothing End Function Public Function Access(sWorkerID$) As IteratorWorker Dim iWorker As IteratorWorker: Set iWorker = IBegin Do While Not iWorker.IsDone If iWorker.WorkerID = sWorkerID Then Set Access = iWorker Exit Function End If Call iWorker.Increment Loop End Function