ࡱ>   _`) !"#$%&'(*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^daecfrqijklmnopbstuwxyz{|}~Root Entry F8zT0X v;Workbook _VBA_PROJECT_CUR"@v0X vVBA @v0v  !"#$&'()*+,-./012346789:;<=>?@ABCDFGHIJKLMNOPQRSTVWXYZ[\]^_`abcdfghijklmnopqrstuvwxyz{|}~  \p Stephen Allen Ba= ThisWorkbook=x-B%<X@"1lArial1lArial1lArial1lArial1lArial""#,##0;\-""#,##0""#,##0;[Red]\-""#,##0""#,##0.00;\-""#,##0.00#""#,##0.00;[Red]\-""#,##0.005*0_-""* #,##0_-;\-""* #,##0_-;_-""* "-"_-;_-@_-,)'_-* #,##0_-;\-* #,##0_-;_-* "-"_-;_-@_-=,8_-""* #,##0.00_-;\-""* #,##0.00_-;_-""* "-"??_-;_-@_-4+/_-* #,##0.00_-;\-* #,##0.00_-;_-* "-"??_-;_-@_-                + ) , *  `Sheet1Sheet2Sheet3,"cc     dMbP?_*+%"??_-U>@7 Sheet1     dMbP?_*+%"??_-U>@7 Sheet2     dMbP?_*+%"??_-U>@7 Sheet3 %ׁ#xThisWorkbook %Sheet15Sheet2ESheet3UME (SLSS<N0{00020819-0000-0000-C000-000000000046}8(%HxAttribute VB_Name = "ThisWorkbook" Bas0{00020P819-0C$0046} |GlobalSpacFalse dCreatablPredeclaIdTru BExposeTemplateDerivBustomizD2%#xME (SLSS<N0{00020820-0000-0000-C000-000000000046}8(%HxAttribute VB_Name = "She@et1" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2%#xME (SLSS<N0{00020820-0000-0000-C000-000000000046}8(%HxAttribute VB_Name = "She@et2" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2%z_#xME (SLSS<N0{00020820-0000-0000-C000-000000000046}8(%HxAttribute VB_Name = "She@et3" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2 :%xDateManagemente__SRP_2T__SRP_3pStringManipulation&TME(6 << <+`@i `"`$ %0>_M$*\Rffff*2>4d5fabfa B   4(` 4p  6  0x]`]x '"-Find out the Weekday the test date represents "$&'$.If it isn't a Monday keep adding 1 until it is $b " '" "$&'$ "'0Remember to format your worksheet cell as a datecidAttribute VB_Name = "DateManagement" Option Explicit FuncPNextMon(DtRecvd As@ Long) Dim TestDt &MyWe ekDayIn`tegerZ+= R 'Find out the 5d5 tW d reprDess Y=-(U)LIf it isn't a ]&keep adding 1 until_o While +<> 2  V+ 1 ALoop O~'Rmber to format your worksheet celpl as]|E rU~| krU (`a(nrU~| x & 8 > (8Ph ( @ &X   :  . 68 p       2   ( @ X p        0 (P x   > D J0        8Ph     B @8 8x "  (08@X ` hpx  B   H ,  FP L     0@H` $x08  @P h x         @ X p  x       0 8@ HP`hp x B  H F0 >x .   8 P`  h (x ( "$  H X` "h  : > .0  *`     &  H`(       (0 8P` hx    N   0 @ P `hp  x &  B  ,@ (H  p    6 N .X   : : @ DX    Tj%IxME(6 << < +*`@FFi, `~q[i.`0ng 1`2`4"`6 `8`:+B`P~~i,dd D@F 1`H`J00`L`N  @ ` +R`QQiVIX `Z`\`^```b`d`8`f+h@`rril`N`n`pMySt`rata `t`vthis`x`8ou c`fe to`zEx`|or n`~ould+TX`ZZiV'IX acte`Zfo`\ber`^ll s``-be`bpart``aces`de`on o`8.al`fdeem``onte`us`ecis` 6`$+X`==id>iXi:`3P`char`e us`whet @ ` ??ien ti :i't w` tha`` ( ` IIi he ui #Erri(`he s`at a`#Err+X `h ;;i t bei s isi,vily`6-It`dict``both`ecif`'to+ `  33i .i s) ti,8to`6e va`art `8`D`D`D`@ ( @XXX ( % X  >_M$*\Rffff*2?4d5fabfa B  (08 4H  , : & $( P p   (  ( 4 .H $x 4 $ $ (@(xX  J L@ 2   4   ( 08 $@ hx (  >  ( B 0 8@HPX` 8h * 4 @ .H  H X  p             B >0! p!!!  !! ! ! " 0" H"X" `" x" " " "    " """"" # B # ## #(# H0# x# L# #  $$  $ ($ 8$H$  `$p$ x$$ $$$ $$  $$ %%  %0%8%@%H% X%h%  %%%%%  % %% % B %%%% F& 6H& B& ,& & ' ('H'P' X' `' ' '''' ' ' '( ((( 0( P( `(((( ( ( (((( ( ) )8)@)H)P)X)`) B h)p)x)) @) >) * (* 8*X*`*h* p* * **** * * +(+0+8+ @+ `+ p++++ 2+ 2+ , 8, P, `,,,, , , ,,,, , - -8-@-H- P-X-`- B h-p-x----- D- 2-  . D0. *x. ,. B.  / @@/////// 2/000  4@0 6x0 J0  11(1 "H1 p1 1 11*1 1 1 :2 2@2 x2 22222 2222 B 23333 3(303 B83  3,3 333444 4@4   H4X4p4 4 4 4 44*4 "5 85 H5`5h5p5 55 5 5555 5xp]]]]].First convert MyString into a string data type ,X '0%Check whether this is an error number3because when you convert an error value to a stringExcel delivers the error numbernthis would confuse the results2 0Error #*G<jddFind out how long it isas 0'6!Test each character in the stringfor whether it's a number!but exclude full stops and commas-because they can form parts of number strings'and exclude spaces because they confusethe presentation of the result.also "" is also often deemed to represent zerodepending on context in Exceluse ASCII codes for precision 8 6 0 8$'2 ! 2$>  2$>. 2$>, 2$> 2$> 2$@ : ': DPos is the Nth position of the string character required by the user FCheck whether PosN - the position of the character under consideration +Matches Pos - If so then that's your answer . : 2'4-We don't want to loop any more than necessaryykkkCheck whether we got an answer 4 4'*dx"Tell the user something went wrong#Error'*k8z0<(7In this case the string looked looked at an error value#Error'*i]p]]]]]2There shouldn't be any errors, but this process is$both long and very heavily branched.-It is difficult to predict what can go wrong.9This provides both a safety net and specific notification'to the user if some thing does go wrongP ,'HCreate first array for testing.2This tests (and deletes) the longest strings first8to avoid missing a date variable by deleting part of it. D8 ##/##/####+D ##/#/####+D #/##/####+D#/#/####+D##/##/##+D##/#/##+D#/##/##+D#/#/##+D##/## +D##/# +D#/## +D#/# +D Loop around each of the patternsdeleting them as you go. F$D4Call the process for deleting numeric date patterns. H F$R'L(If the check process identifies an error0go back to the known correct value of the string L DateErrorypdhotherwise move on. L'Hk@8+Now test for the presence of month strings. DXJanuary+DFebruary+DMarch+DApril+DMay+DJune+DJuly+DAugust+D September +DOctober +DNovember +DDecember +DLoop around each month"deleting string segments as found. F$D H F$T'HX7Do the same for shortened versions of the month strings>NB May is ommitted because there is no change in string lengthDThere are two shortened wersions of September. This will get either. DxJan+DFeb+DMar+DApr+DJun+DJul+DAug+DSept+DSep +DOct +DNov +DDec +D F$D H F$T'H  H'N;Strings that are or look empty tend to confuse the reviewer:The substitutes empty string with the value "Empty String"2NB The return value does not include any numerics. N J N H J$ Gyj J N Empty String'Hkd Empty String'Hk H'BzP#Error'Bip]]]0H`]x]BThis process takes the match criteria and tests whether it equates&to any portion of the original string.@If a match is found, the matching potion is immediately deleted.FThe matching process continues until the end of the string is reached. V'Z X'\ V'd 8 Z \  8'^ d \$'` d \ $'b 8 8 Z \  e d 8 $'^ d 8 \$'` d \ 8 $'bd d 8 $'^ d 8 \$'`'bk ` X `$h ^ b'd d'Zyp dh DateError'djH k@ k8 0 8 Z \  b f 8 Z \  f Z \  d f $'^ d f \$'` d \ f $'bd d f $'^ d f \$'`'bk@ ` X `$h ^ b'd d'Zy d DateError'dj k k f '8 j d'Ri ] ]8]P]h]]]]]]](AThis process tests whether the numeric elements of a date string,?comprising numbers and slashes only, meets a series of criteria8relating to the maximum combinations of days and months.'Break the string into relevant elements l'N f N f'8 n l f$'n n$@Gyj nX'p N !Consider a 2 number value string.!Treat as day month vatiants only. l/'| r l | $'r N |  l | $$@ z 'zd r l | $'rkhk` rX't4Apply the standard test for maximum days and months.8Not intended to be able to distnguish the number of days'associated with different month values.#This is a generalised control only. p t  z 'z@ p e z 'z t e z 'zkd Consider a 3 number value string l/'| | l/'~ l | ~ |  $'r r$@ z 'z0d( rX'tk l ~ $'v v$@ z 'zk p t  z 'z p e z 'zp t e z 'zHk@ v'NHKeep 4 digit years within the Microsoft date process validation criteria N vX'x xl z 'zkkk Any test value above zero fails.P z'hi@@]]] ]8]P]h]](]@"Considers text based date formats. V'Z X'\ V'd 8 Z \  d 8 \$'`/If the process finds a text match for the monthHthen looks to see where the first related numeric value lies in relation(to the month value - before or after it. ` X d XX 8$'  8 3if before then look for appropriate string patterns 3PatLen - determines how long the relevant string is  XX V$' >We use both StartPos and PatLen togther to remove the relevant portion from the string. d  $'^ d   $'b ^ b'dd Blook for string pattern where both day and year numeric fall after the month string  XX V$' d  $'^ d   $'b ^ b'dk(k ;The Do While ... Loop ensures your look as the whole string7and do not simply jump out after you've found one match 8 Z \  b f 8 Z \  d f \$'` ` X d XX f$'  f  XX V$' d  $'^ d   $'b ^ b'dd  XX V$' d  $'^ d   $'b ^ b'dk8k0( f '8j d'TiX]]](]@AValidates the string position from which the start of the patternwill be validated.EEssentially is there a relevant numeric that determines the day valuebefore the month string.  ' e# X' ' d $'  'd 'kpdh## X' ' d  $'   $X 'd  'kjk# X' ' d  $'    'dP 'k@k8j0 'i X]] ]( ?In this process we look for a pattern that matches a date value0starting with the longest possible version first<If the evaluation finds a match we return the pattern length&and jump out of the evaluation process##  ####' '   $  'k#  ####' '   $  '@k8##  ##' '   $  'k#  ##' '   $  'pkh## ' '   $  'k# ' '   $  'k 'i@ ] ] ] 9We use a similar process for dates where all the figures,7both day and year, are presented after the month string  ##, ####' '   $  'k  #, ####' '   $  '0k(  ##, ##' '   $  'k  #, ##' '   $  '`kX+We also gone one step further and evaluated+those patterns where only one value appearsafter the month text  ####' '   $  'pkh  ##' '   $  'k  #' '   $  'k 'i( ] ] ] ] ]( ]@ >This process returns 1 or more whole words before the position,of a numeric value "NumPos" within a string. ,'6>This tests the validity of the variables NumPos and WordNum in$relation to the length of the string   6   GLj;This For ... Next loop works backwards to find the positionof the first space.:This represents the end of the word(s) we are looking for.    , $  'y0k( +If no spaces there is an error so junp out. GLj  '-Work backwards until you find a complete word0as determined by the position of the next space.CContinue the Backwards loop until all the required words are found.   b   , $  ,    $'  '  'yhk` , $   ,    $'  ' 3If you got to the beginning of the string and still +have not found the required number of words return an error value   GLjkH @ 8 'z( L #Error'i X ] ] ]( ]@ ]X ]p ] <Very similar in process and structure to TextBeforeNum above ,'6   6   6 GLj   6 , $   'y k  6 GLj '   b   6 , $  ,    $'  '  'y( k , $   6 ,  6   $'  '   GLjk  6 Gxjp   GLj 'zH L@ #Error'i(  Attribute VB_Nam@e = "SngManipulation" Op Explicit@Bas e 1 FuncJNthNonNum(My As Variant, PosInteger) % Dim` Test5 Char 1Answe9Len+i-^iN  'First convert ainto a s data type|Y= C <|)'Check whethASthis an error @numbers5Au0gust]s5Se8pte5OctosNy%6DP?6h/}segms 96n.v#!SZ#2Tq)Pa׶t(CurrString, TestVar)  Next 'Do the same for shortened versions ofDmonth ssrNB May i@mmittdbecaHuse\reno chang n: length@The%a(twoxwxSeptember. Thjwill get eir.ReDimArray(12y) = "Jan" 2 Feb 3 (Mar 4 Ap 5 Ju16 l %7 Aug n8 ~ 9 10 Oct 1BNovNC?Dec@ FEachS InUƏACǗVDelTD`atePa՞EMyLen @H@Csat $look empty d tonf revie@Ô substitutefs  w value "EwB?'@tHurn do@not include any numericsIf C3> 0,enCARq@81 "@ n Exit @ ACNc6aEnd If1Else J9am 1 A'i <"-ø o i -0GS i/  / . + i$ sF@ p2 "7  "4vO#@LikeCLpNumElements(auY_ 0sm &$7e)c-$ aSUo0K[q`"O Wx+QGo ileaveVq1y? scУWhil <7)68r i!q88r.arlO%I%r. }%r?/22tp/f g0wO O O t8O F 2@V2wd2RQ33K +v_3133D33R4Q_494K 4 grp#hLoop :047 anq<_2LAq,O"yM}h~1pzDza2WmYea!PMy/mmg =m Slash1Pos 20*qŽ ca dPT,0crisssonly, medetp sAf ՠrelatamaximum combinations of days and months.  'Break the string into relevant mentsVMyLen = (DateS(tr). For r61 To ( iBrDayM1? & Mid\, r, 1bHIf IsNu`meric$F)GFalse ThExit HŐ9Ii= C Nexth4v< 6)'Cider a 2 numbvaluU'T0t as vǀnly*Slash1PosbIn(1, , "/"=2+ P5- 28/ Yc2) ^3Test['E#Go@EscapeFuncEs t@2KEIfCF-ʈYa'ApplyDard t: fmAD'Notende o be able @distnguish+'associ@d with differ?ƘA dThis @a generalis`cprol oQ >% 1! > 12 A`%"l  ebI e)< 3xEV(T A|=%= "# " &HRKPEstO]YGteRY/Yt=b3ˉxHju\- 3,"._" Cp.(V, 2)) > 31ofIf!q 1K{3IAGo{*Hy?&P?&tL=& ` 2! /' /'$'4 J2 &?[ X%<+[ 6 >[_ubxW, Ma$'W!( V\*YExtrac?H#Wp2XMy1 'In NpRprocess wesaaRm!RaPtrWR3YwiaTlong@]sibpversp fi|rs[  Yl uaC_@s a RaretuaD_ lena wGE&/#"(F >,% LѬ;g,='b:MyJp( Q :O O O O P)O eO J 3 [ /( nV > v P  ݵStartPos, PatLen) Like Myptern T@hen E xtrac =C`GoTobJump End If = "## " & MonthSptr t(*)8If Mid(&ingVa8l, fRMy: FindˀgthDbMFunct ioriva(te !aMZC As Integer,j;bbrdlDim H zLJ@A'We use a similar process for d3s wher@ll the figures, 'boDthy ayTea1a@ pea5d af@B m st4 " ##,##"O ,+? i>?,,+_+falso gone astep fur`drbevaluhd etholpat%jonlyBl4pp@hsftextfgx=&#####Z9yy?1c_)_)_)o}`}hhahdg"VhT#Be]eNum(0 !egWords`:MySbA)f`QcCxurr!C0ountN-os^ A3Thisflreturns 1 lmoiwhole w s bRjposis|'ofpnumeric 9"S" withinrl.1t= Е`{z'tests"idit@?friables ObCa i'relaA tolen xt@$<Or>r1 q ErrorCPheckF... NP# loopkackward oP 1kfirst space3reDe4 q(s) wPkч!= 6- P0 V-17#>D5+,4!, 1)="Rf%pTyCExit `嵡P< )# 901;@a1GZ + 1G -":q = wa*2*%TR۱1PNotb۟A0301E(?Q?m;' 'g dIbeginnq;IL stillhave n#"'V%pWberA*%\47Y; '7_"O&>LO sDX_BT"#EPrror" End Function X TextAft@erNum( Pos As Integer, Word, &MyS`tring() Dim ,8Len*ICurrqVal 1h Count4My aartK3 'Very similar in pro@cess astructure toBeforeaboveSx= {()` If F< 1 Or>O I& ThG oTo ECheckor :=#+*? F 9MidB, , 1) = "@ StDR=GExit0 ForCIf8 N6>=40 3b!IDo WhileC< @(D/F__SRP_6 ^ >rU ,`y/&(`y0,`0/(`0,!`0/0I` 00&0q` Aa&000` Aa&000` y&&00 ` y&&0nrU~| frU $`$`tu nclM, MyRng6e'Testi shows that error values will c@orrupteuMOn EResuNexXSet|= A&p.Ave 'e.aeach wx in1 BEs In-.c#s 7j=0 ws.m'check if /a possibly empty IfE.Ce@lls.Co@7 > 1 Then)HusAHa>pied aiof*#.$'mu3qu ickeranF :Athe #tselfL=D$Ė!D your w@through both @dimenss D%( AOr!@3o UB6d( , 1) s 2 C A = (r,< s [Not ""DY '@m: fin[  add i@oB^total tid(CStr(cl)886"= i i +a|iEI5y` @r Else]"QCH8EBmisRtentialgRO uR(1.`4m!<> n'bb1!`P!M  w @+X!ŧRS___A_____EaB "|ShX i>'`ir]EP,PRPPyP=5p:P Pr?PP @PRm_?V==3?` rPCkASoAo4w%H %(H__SRP_7ArrayFunctionsv__SRP_8^__SRP_9n(  H  `rU~| frU (`/$`n&0* pHd VBAProject4@j = r >_M J< rstdole>stdole h%^*\G_VBA_PROJECTIdir*__SRP_0x__SRP_1Gs9# TextAfterNum- StartWordPosFileInformationb NumFormula_WB}|wb_Workbookkws_ WorksheetUsedRangeArrayulcl\MyRngRRange  Application*ActiveWorkbook Worksheets UsedRangeȉCellsCount0vFormulaqY NumFormula_WS| ActiveSheet%NModule1bArrayFunctionsNumberOfDimensionsFDimNumZXarrayFinalDimensionMsgBoxR NoDimInArrayMyArray TestNoDim TestArrayJDimNo>;TesEE%xME(<<<6 +H`99 Xis% x4d%` %Ch`8an e`f3be`rt a`trin`` @%+`00 % 1%` `8`f```` %H %(H>_M$*\Rffff*2@4d5fabfam B ( 0P <` . *@ .X 8   8(  H  ` 0p     4@0`      B  <(hp 4  . 8  @ 8P     0 @P X  ` p     xp]@]`]]](n6Testing shows that error values will corrupt the countX !.'evaluate each worksheet in the workbook  ! !.li$check if worksheet ia possibly emptyonfuse !! (using a copied array of the worksheet isg 1much quicker than evaluating the worksheet itself !'fo2work your way through both dimensions of the array f    f $' )if you find a formula add it to the total X $= 8 '8k(k   fd.checking a worksheet that is potentially empty %! %!X $= 8 '8kXkPkH  8'i(H]]]](@]Xp6Testing shows that error values will corrupt the count !.-evaluate the active worksheet in the workbook . !.(using a copied array of the worksheet is1much quicker than evaluating the worksheet itself !'2work your way through both dimensions of the array f    f $' )if you find a formula add it to the total X $= 8 '8kk  f 8'iphAttribute VB_Name = "FileInformation" Op Explicit@Base 1 FunBcJNumFvula_WB() As Long Dim wbWorkbook&sshee](UsedRangeArray @VarianiV, r HtVal(  )  red\OFFICE11\MSO.DLL#Microsoft Office 11.0 Object Library  >_M{00020430-C 0046}#2.0#0#C:\WINDOWS\syst em32\e2.tlb#OLE Automation`EOffDicEOficEE2DF8D04C-5BFA-101B-BDE5EAAC42Egram Files\CommonMicrosoft Shared\OFFICE11\MSO.0DLL#M 1@1.0 Ob LibraryKE%ThisWorkbookGTisWrkbUo 2 QHB1Bx%B,!"B+BB|Sheet1G S@#e@Xt1H2N*222233J33z_UDateManagementGBDaeMUngXmny@O !c=!"==String ipulbnG$`ringipuaiRn`&32?M o` jTIvInforG[F+ I@ f@rJm+t 2?Kҫ8ArrayFuncs?ArQ ayuc -)s *?(d ?;`(4d5fabfaK*yrU~~~~~~~~~f ;3J1x     ) A 9p!Y 9 Yy!Y  91Y 9yi VBAProject ThisWorkbookSheet1Sheet2Sheet3DateManagementStringManipulationFileInformationF /C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLLVBA  i0F4C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXEExcel q@0FC:\WINDOWS\system32\stdole2.tlbstdole  QP^%;xME(6 << <@HX8%@+X`i BAOD``L nt `<< `nc`  X>_M$*\Rffff*2A4d5fabfa(R F ,  .P ,      @ , @ H (P (x  FH . $  L &X 2         @   B PX` h @ ( B X x       "  2HX  h xxp&http://support.microsoft.com/kb/152288ROGR! 'Sets up the error handler." On Error GoTo FinalDimension( 'dimensions; this allows for that. For DimNum = 1 To 60000arraE 'It is necessary to do something with the LBound to force it  'to generate an error.wi, ErrorCheck = LBound(Xarray, DimNum)an err Exit SubFinalDimension:neEnd Subha%in the Microsoft Developer's resource](]@Sets up the error handler.p9Visual Basic for Applications arrays can have up to 60000!dimensions; this allows for that. ` ;It is necessary to do something with the LBound to force it to generate an error.  'L `'zP The error routine.(  'iX]]] ,8Stephen' $' A@oSub NumberOfDimensions() Dim DimNumDim ErrorCheck% 'Dimensions Xarray as an array.\D: Dim Xarray(1 To 10, 5 To 20, 256 To 300, 8, -5 To 0)@ 'Visual Basic for Applications arrays can have up to 60000e Next DimNum ' The error routine.: MsgBox "The array has " & DimNum - 1 & " dimensions"@The original version of this code was presented as a Sub Routine'The URL to this resource is shown belowxAttribute VB_Name = "ArrayFunctions" Op$ Explicit@Base 1 'The original verst of this code was presented a Sub Routi$neBin-e Microsoft Develo@per's 8ourc'jURLX to] is@hown b6wQhttp://support.mY.com/kb/152288_INumberOfDimebnds() Error`Check ' Xavn .(1 To 10(, 52256308, - 0B3SetPs upeE handler1On R Go0FΆN$%Visuntic for ApzaBC.IqanveoX 60dFK;eallowsBthatG%F!?R@>F@R'ItAtnecessary{do someng with?LBound@.ce A'b'genera@@0J#q#(Cn,| ^Nexim,pExitA'v grA b:I MsgBox " h" &!D" - 1" ['E@@A NoYIn(My As Variant)Long % gh##f+ 'PCP  PyuP$_Pd 6P OO#OOD5OOe<@XiRB73SSI Ew`Q! !O) TestLAcQj%NoPaV@MRe'fE @Stephen@f No@i'($ $qkgay  *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{00020813-0000-0000-C000-000000000046}#1.5#0#C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE#Microsoft Excel 11.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation(*\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.3#0#C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL#Microsoft Office 11.0 Object Library  >_M%ThisWorkbook234d5fa9fcThisWorkbook% Sheet1244d5fa9fc Sheet1% Sheet2254d5fa9fc Sheet20% Sheet3264d5fa9fc Sheet3z_H%DateManagement2>4d5fabfaDateManagement`$StringManipulation2?4d5fabfa($StringManipulationIxjFileInformation2@4d5fabfaFileInformationKArrayFunctions2A4d5fabfaArrayFunctions;d`x0HP^KK;{OQZ~q[g"ԸN)A{~BBήZMK;b (!I-O+ g#$Fn%ѷMI8`7Excel+VBAWin16~Win32MacVBA6# VBAProjectstdole`Officeu ThisWorkbook| _EvaluateSheet1Sheet2Sheet3DateManagement|NextMonpDtRecvdTestDt` MyWeekDayWeekdayStringManipulation NthNonNumKsMyStringPos TestString{TestCharTAnswer,StrLeni`PosN ErrorHandlerOAsc!u IsNumeric$*DelDate_frm_String TestVarArrayX TestVar. CurrStringZqh ErrorCheck9aMyLen ErrorExitU! DelDatePatDelTextDatePat:CompStr DateVarStrICompLen} DateVarLenbStartStr MidStrEndStr% TempRevStr1riTestNumDateElementsv leaveFunctionDateStrϘ DayMonth1Strh DayMonth1Int_ DayMonth2Str[ DayMonth2Int$ MyYearStrw) MyYearInt`TestInt Slash1Pos# Slash2PosEscapeFunctionNeStartPosGTestStrPatLensjtkmdnepg ReturnStrMNTestStartDatePatternFindPatternLengthDbMJFindPatternLengthDaM% StartTextVald0TestPatStartValPTestLenD StringPat.MonthStr StringVal< ExtractLen]/ MyPattern\MyJump, TextBeforeNumNumPosyWordNum. CurrTextValw WordCountMyPosѰ EndWordPoL-[DR?C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLLOffice q`Module1ArrayFunctionsNextMon  NthNonNumDelDate_frm_String DelDatePatTestNumDateElementsDelTextDatePatTestStartDatePatternFindPatternLengthDbMFindPatternLengthDaM TextBeforeNum TextAfterNum NumFormula_WB NumFormula_WS NoDimInArray TestNoDimgrU    DtRecvdMyStringPosCompStr DateVarStrDateStr TempRevStr StartTextValStartPosMonthStr StringValNumPosWordNumMyArrayCThisWorkbookThisWorkbookSheet1Sheet1SheePROJECTwm+PROJECTSummaryInformation(DocumentSummaryInformation8 t2Sheet2Sheet3Sheet3DateManagementDateManagementStringManipulationStringManipulationFileInformationFileInformationArrayFunctionsArrayFunctionsID="{B7AD4EAB-7110-4F93-B6BB-235D5B7C025A}" Document=ThisWorkbook/&H00000000 Document=Sheet1/&H00000000 Document=Sheet2/&H00000000 Document=Sheet3/&H00000000 Module=DateManagement Module=StringManipulation Module=FileInformation Module=ArrayFunctions Name="VBAProject" HelpContextID="0" VersionCompatible32="393222000" CMG="9A986202F006F006F006F006" DPB="2C2ED4B4F447F547F547" GC="BEBC46264A2ADD2BDD2B22" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisWorkbook=0, 0, 0, 0, C Sheet1=0, 0, 0, 0, C Sheet2=0, 0, 0, 0, C Sheet3=0, 0, 0, 0, C DateManagement=110, 110, 387, 528, StringManipulation=110, 110, 387, 528, FileInformation=132, 132, 684, 643, ArrayFunctions=44, 44, 652, 406, Z Oh+'0@H`x Stephen AllenStephen AllenMicrosoft Excel@p~RW@^v՜.+,0 PXh px ACBA' Sheet1Sheet2Sheet3  Worksheets F!Microsoft Office Excel WorksheetBiff8Excel.Sheet.89qCompObjm