1*cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?> 2*cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Strings" script:language="StarBasic">Option Explicit 4*cdf0e10cSrcweirPublic sProductname as String 5*cdf0e10cSrcweir 6*cdf0e10cSrcweir 7*cdf0e10cSrcweir' Deletes out of a String 'BigString' all possible PartStrings, that are summed up 8*cdf0e10cSrcweir' in the Array 'ElimArray' 9*cdf0e10cSrcweirFunction ElimChar(ByVal BigString as String, ElimArray() as String) 10*cdf0e10cSrcweirDim i% ,n% 11*cdf0e10cSrcweir For i = 0 to Ubound(ElimArray) 12*cdf0e10cSrcweir BigString = DeleteStr(BigString,ElimArray(i) 13*cdf0e10cSrcweir Next 14*cdf0e10cSrcweir ElimChar = BigString 15*cdf0e10cSrcweirEnd Function 16*cdf0e10cSrcweir 17*cdf0e10cSrcweir 18*cdf0e10cSrcweir' Deletes out of a String 'BigString' a possible Partstring 'CompString' 19*cdf0e10cSrcweirFunction DeleteStr(ByVal BigString,CompString as String) as String 20*cdf0e10cSrcweirDim i%, CompLen%, BigLen% 21*cdf0e10cSrcweir CompLen = Len(CompString) 22*cdf0e10cSrcweir i = 1 23*cdf0e10cSrcweir While i <> 0 24*cdf0e10cSrcweir i = Instr(i, BigString,CompString) 25*cdf0e10cSrcweir If i <> 0 then 26*cdf0e10cSrcweir BigLen = Len(BigString) 27*cdf0e10cSrcweir BigString = Mid(BigString,1,i-1) + Mid(BigString,i+CompLen,BigLen-i+1-CompLen) 28*cdf0e10cSrcweir End If 29*cdf0e10cSrcweir Wend 30*cdf0e10cSrcweir DeleteStr = BigString 31*cdf0e10cSrcweirEnd Function 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir 34*cdf0e10cSrcweir' Finds a PartString, that is framed by the Strings 'Prestring' and 'PostString' 35*cdf0e10cSrcweirFunction FindPartString(BigString, PreString, PostString as String, SearchPos as Integer) as String 36*cdf0e10cSrcweirDim StartPos%, EndPos% 37*cdf0e10cSrcweirDim BigLen%, PreLen%, PostLen% 38*cdf0e10cSrcweir StartPos = Instr(SearchPos,BigString,PreString) 39*cdf0e10cSrcweir If StartPos <> 0 Then 40*cdf0e10cSrcweir PreLen = Len(PreString) 41*cdf0e10cSrcweir EndPos = Instr(StartPos + PreLen,BigString,PostString) 42*cdf0e10cSrcweir If EndPos <> 0 Then 43*cdf0e10cSrcweir BigLen = Len(BigString) 44*cdf0e10cSrcweir PostLen = Len(PostString) 45*cdf0e10cSrcweir FindPartString = Mid(BigString,StartPos + PreLen, EndPos - (StartPos + PreLen)) 46*cdf0e10cSrcweir SearchPos = EndPos + PostLen 47*cdf0e10cSrcweir Else 48*cdf0e10cSrcweir Msgbox("No final tag for '" & PreString & "' existing", 16, GetProductName()) 49*cdf0e10cSrcweir FindPartString = "" 50*cdf0e10cSrcweir End If 51*cdf0e10cSrcweir Else 52*cdf0e10cSrcweir FindPartString = "" 53*cdf0e10cSrcweir End If 54*cdf0e10cSrcweirEnd Function 55*cdf0e10cSrcweir 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir' Note iCompare = 0 (Binary comparison) 58*cdf0e10cSrcweir' iCompare = 1 (Text comparison) 59*cdf0e10cSrcweirFunction PartStringInArray(BigArray(), SearchString as String, iCompare as Integer) as Integer 60*cdf0e10cSrcweirDim MaxIndex as Integer 61*cdf0e10cSrcweirDim i as Integer 62*cdf0e10cSrcweir MaxIndex = Ubound(BigArray()) 63*cdf0e10cSrcweir For i = 0 To MaxIndex 64*cdf0e10cSrcweir If Instr(1, BigArray(i), SearchString, iCompare) <> 0 Then 65*cdf0e10cSrcweir PartStringInArray() = i 66*cdf0e10cSrcweir Exit Function 67*cdf0e10cSrcweir End If 68*cdf0e10cSrcweir Next i 69*cdf0e10cSrcweir PartStringInArray() = -1 70*cdf0e10cSrcweirEnd Function 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir 73*cdf0e10cSrcweir' Deletes the String 'SmallString' out of the String 'BigString' 74*cdf0e10cSrcweir' in case SmallString's Position in BigString is right at the end 75*cdf0e10cSrcweirFunction RTrimStr(ByVal BigString, SmallString as String) as String 76*cdf0e10cSrcweirDim SmallLen as Integer 77*cdf0e10cSrcweirDim BigLen as Integer 78*cdf0e10cSrcweir SmallLen = Len(SmallString) 79*cdf0e10cSrcweir BigLen = Len(BigString) 80*cdf0e10cSrcweir If Instr(1,BigString, SmallString) <> 0 Then 81*cdf0e10cSrcweir If Mid(BigString,BigLen + 1 - SmallLen, SmallLen) = SmallString Then 82*cdf0e10cSrcweir RTrimStr = Mid(BigString,1,BigLen - SmallLen) 83*cdf0e10cSrcweir Else 84*cdf0e10cSrcweir RTrimStr = BigString 85*cdf0e10cSrcweir End If 86*cdf0e10cSrcweir Else 87*cdf0e10cSrcweir RTrimStr = BigString 88*cdf0e10cSrcweir End If 89*cdf0e10cSrcweirEnd Function 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir' Deletes the Char 'CompChar' out of the String 'BigString' 93*cdf0e10cSrcweir' in case CompChar's Position in BigString is right at the beginning 94*cdf0e10cSrcweirFunction LTRimChar(ByVal BigString as String,CompChar as String) as String 95*cdf0e10cSrcweirDim BigLen as integer 96*cdf0e10cSrcweir BigLen = Len(BigString) 97*cdf0e10cSrcweir If BigLen > 1 Then 98*cdf0e10cSrcweir If Left(BigString,1) = CompChar then 99*cdf0e10cSrcweir BigString = Mid(BigString,2,BigLen-1) 100*cdf0e10cSrcweir End If 101*cdf0e10cSrcweir ElseIf BigLen = 1 Then 102*cdf0e10cSrcweir BigString = "" 103*cdf0e10cSrcweir End If 104*cdf0e10cSrcweir LTrimChar = BigString 105*cdf0e10cSrcweirEnd Function 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir' Retrieves an Array out of a String. 109*cdf0e10cSrcweir' The fields of the Array are separated by the parameter 'Separator', that is contained 110*cdf0e10cSrcweir' in the Array 111*cdf0e10cSrcweir' The Array MaxIndex delivers the highest Index of this Array 112*cdf0e10cSrcweirFunction ArrayOutOfString(BigString, Separator as String, Optional MaxIndex as Integer) 113*cdf0e10cSrcweirDim LocList() as String 114*cdf0e10cSrcweir LocList=Split(BigString,Separator) 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir If not isMissing(MaxIndex) then maxIndex=ubound(LocList()) 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir ArrayOutOfString=LocList 119*cdf0e10cSrcweirEnd Function 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir' Deletes all fieldvalues in one-dimensional Array 123*cdf0e10cSrcweirSub ClearArray(BigArray) 124*cdf0e10cSrcweirDim i as integer 125*cdf0e10cSrcweir For i = Lbound(BigArray()) to Ubound(BigArray()) 126*cdf0e10cSrcweir BigArray(i) = "" 127*cdf0e10cSrcweir Next 128*cdf0e10cSrcweirEnd Sub 129*cdf0e10cSrcweir 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir' Deletes all fieldvalues in a multidimensional Array 132*cdf0e10cSrcweirSub ClearMultiDimArray(BigArray,DimCount as integer) 133*cdf0e10cSrcweirDim n%, m% 134*cdf0e10cSrcweir For n = Lbound(BigArray(),1) to Ubound(BigArray(),1) 135*cdf0e10cSrcweir For m = 0 to Dimcount - 1 136*cdf0e10cSrcweir BigArray(n,m) = "" 137*cdf0e10cSrcweir Next m 138*cdf0e10cSrcweir Next n 139*cdf0e10cSrcweirEnd Sub 140*cdf0e10cSrcweir 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir' Checks if a Field (LocField) is already defined in an Array 143*cdf0e10cSrcweir' Returns 'True' or 'False' 144*cdf0e10cSrcweirFunction FieldinArray(LocArray(), MaxIndex as integer, LocField as String) As Boolean 145*cdf0e10cSrcweirDim i as integer 146*cdf0e10cSrcweir For i = Lbound(LocArray()) to MaxIndex 147*cdf0e10cSrcweir If Ucase(LocArray(i)) = Ucase(LocField) Then 148*cdf0e10cSrcweir FieldInArray = True 149*cdf0e10cSrcweir Exit Function 150*cdf0e10cSrcweir End if 151*cdf0e10cSrcweir Next 152*cdf0e10cSrcweir FieldInArray = False 153*cdf0e10cSrcweirEnd Function 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir' Checks if a Field (LocField) is already defined in an Array 157*cdf0e10cSrcweir' Returns 'True' or 'False' 158*cdf0e10cSrcweirFunction FieldinList(LocField, BigList()) As Boolean 159*cdf0e10cSrcweirDim i as integer 160*cdf0e10cSrcweir For i = Lbound(BigList()) to Ubound(BigList()) 161*cdf0e10cSrcweir If LocField = BigList(i) Then 162*cdf0e10cSrcweir FieldInList = True 163*cdf0e10cSrcweir Exit Function 164*cdf0e10cSrcweir End if 165*cdf0e10cSrcweir Next 166*cdf0e10cSrcweir FieldInList = False 167*cdf0e10cSrcweirEnd Function 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir' Retrieves the Index of the delivered String 'SearchString' in 171*cdf0e10cSrcweir' the Array LocList()' 172*cdf0e10cSrcweirFunction IndexinArray(SearchString as String, LocList()) as Integer 173*cdf0e10cSrcweirDim i as integer 174*cdf0e10cSrcweir For i = Lbound(LocList(),1) to Ubound(LocList(),1) 175*cdf0e10cSrcweir If Ucase(LocList(i,0)) = Ucase(SearchString) Then 176*cdf0e10cSrcweir IndexinArray = i 177*cdf0e10cSrcweir Exit Function 178*cdf0e10cSrcweir End if 179*cdf0e10cSrcweir Next 180*cdf0e10cSrcweir IndexinArray = -1 181*cdf0e10cSrcweirEnd Function 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir 184*cdf0e10cSrcweirSub MultiArrayInListbox(oDialog as Object, ListboxName as String, ValList(), iDim as Integer) 185*cdf0e10cSrcweirDim oListbox as Object 186*cdf0e10cSrcweirDim i as integer 187*cdf0e10cSrcweirDim a as Integer 188*cdf0e10cSrcweir a = 0 189*cdf0e10cSrcweir oListbox = oDialog.GetControl(ListboxName) 190*cdf0e10cSrcweir oListbox.RemoveItems(0, oListbox.GetItemCount) 191*cdf0e10cSrcweir For i = 0 to Ubound(ValList(), 1) 192*cdf0e10cSrcweir If ValList(i) <> "" Then 193*cdf0e10cSrcweir oListbox.AddItem(ValList(i, iDim-1), a) 194*cdf0e10cSrcweir a = a + 1 195*cdf0e10cSrcweir End If 196*cdf0e10cSrcweir Next 197*cdf0e10cSrcweirEnd Sub 198*cdf0e10cSrcweir 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir' Searches for a String in a two-dimensional Array by querying all Searchindexex of the second dimension 201*cdf0e10cSrcweir' and delivers the specific String of the ReturnIndex in the second dimension of the Searchlist() 202*cdf0e10cSrcweirFunction StringInMultiArray(SearchList(), SearchString as String, SearchIndex as Integer, ReturnIndex as Integer, Optional MaxIndex as Integer) as String 203*cdf0e10cSrcweirDim i as integer 204*cdf0e10cSrcweirDim CurFieldString as String 205*cdf0e10cSrcweir If IsMissing(MaxIndex) Then 206*cdf0e10cSrcweir MaxIndex = Ubound(SearchList(),1) 207*cdf0e10cSrcweir End If 208*cdf0e10cSrcweir For i = Lbound(SearchList()) to MaxIndex 209*cdf0e10cSrcweir CurFieldString = SearchList(i,SearchIndex) 210*cdf0e10cSrcweir If Ucase(CurFieldString) = Ucase(SearchString) Then 211*cdf0e10cSrcweir StringInMultiArray() = SearchList(i,ReturnIndex) 212*cdf0e10cSrcweir Exit Function 213*cdf0e10cSrcweir End if 214*cdf0e10cSrcweir Next 215*cdf0e10cSrcweir StringInMultiArray() = "" 216*cdf0e10cSrcweirEnd Function 217*cdf0e10cSrcweir 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir' Searches for a Value in multidimensial Array by querying all Searchindices of the passed dimension 220*cdf0e10cSrcweir' and delivers the Index where it is found. 221*cdf0e10cSrcweirFunction GetIndexInMultiArray(SearchList(), SearchValue, SearchIndex as Integer) as Integer 222*cdf0e10cSrcweirDim i as integer 223*cdf0e10cSrcweirDim MaxIndex as Integer 224*cdf0e10cSrcweirDim CurFieldValue 225*cdf0e10cSrcweir MaxIndex = Ubound(SearchList(),1) 226*cdf0e10cSrcweir For i = Lbound(SearchList()) to MaxIndex 227*cdf0e10cSrcweir CurFieldValue = SearchList(i,SearchIndex) 228*cdf0e10cSrcweir If CurFieldValue = SearchValue Then 229*cdf0e10cSrcweir GetIndexInMultiArray() = i 230*cdf0e10cSrcweir Exit Function 231*cdf0e10cSrcweir End if 232*cdf0e10cSrcweir Next 233*cdf0e10cSrcweir GetIndexInMultiArray() = -1 234*cdf0e10cSrcweirEnd Function 235*cdf0e10cSrcweir 236*cdf0e10cSrcweir 237*cdf0e10cSrcweir' Searches for a Value in multidimensial Array by querying all Searchindices of the passed dimension 238*cdf0e10cSrcweir' and delivers the Index where the Searchvalue is found as a part string 239*cdf0e10cSrcweirFunction GetIndexForPartStringinMultiArray(SearchList(), SearchValue, SearchIndex as Integer) as Integer 240*cdf0e10cSrcweirDim i as integer 241*cdf0e10cSrcweirDim MaxIndex as Integer 242*cdf0e10cSrcweirDim CurFieldValue 243*cdf0e10cSrcweir MaxIndex = Ubound(SearchList(),1) 244*cdf0e10cSrcweir For i = Lbound(SearchList()) to MaxIndex 245*cdf0e10cSrcweir CurFieldValue = SearchList(i,SearchIndex) 246*cdf0e10cSrcweir If Instr(CurFieldValue, SearchValue) > 0 Then 247*cdf0e10cSrcweir GetIndexForPartStringinMultiArray() = i 248*cdf0e10cSrcweir Exit Function 249*cdf0e10cSrcweir End if 250*cdf0e10cSrcweir Next 251*cdf0e10cSrcweir GetIndexForPartStringinMultiArray = -1 252*cdf0e10cSrcweirEnd Function 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir 255*cdf0e10cSrcweirFunction ArrayfromMultiArray(MultiArray as String, iDim as Integer) 256*cdf0e10cSrcweirDim MaxIndex as Integer 257*cdf0e10cSrcweirDim i as Integer 258*cdf0e10cSrcweir MaxIndex = Ubound(MultiArray()) 259*cdf0e10cSrcweir Dim ResultArray(MaxIndex) as String 260*cdf0e10cSrcweir For i = 0 To MaxIndex 261*cdf0e10cSrcweir ResultArray(i) = MultiArray(i,iDim) 262*cdf0e10cSrcweir Next i 263*cdf0e10cSrcweir ArrayfromMultiArray() = ResultArray() 264*cdf0e10cSrcweirEnd Function 265*cdf0e10cSrcweir 266*cdf0e10cSrcweir 267*cdf0e10cSrcweir' Replaces the string "OldReplace" through the String "NewReplace" in the String 268*cdf0e10cSrcweir' 'BigString' 269*cdf0e10cSrcweirFunction ReplaceString(ByVal Bigstring, NewReplace, OldReplace as String) as String 270*cdf0e10cSrcweir ReplaceString=join(split(BigString,OldReplace),NewReplace) 271*cdf0e10cSrcweirEnd Function 272*cdf0e10cSrcweir 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir' Retrieves the second value for a next to 'SearchString' in 275*cdf0e10cSrcweir' a two-dimensional string-Array 276*cdf0e10cSrcweirFunction FindSecondValue(SearchString as String, TwoDimList() as String ) as String 277*cdf0e10cSrcweirDim i as Integer 278*cdf0e10cSrcweir For i = 0 To Ubound(TwoDimList,1) 279*cdf0e10cSrcweir If Ucase(SearchString) = Ucase(TwoDimList(i,0)) Then 280*cdf0e10cSrcweir FindSecondValue = TwoDimList(i,1) 281*cdf0e10cSrcweir Exit For 282*cdf0e10cSrcweir End If 283*cdf0e10cSrcweir Next 284*cdf0e10cSrcweirEnd Function 285*cdf0e10cSrcweir 286*cdf0e10cSrcweir 287*cdf0e10cSrcweir' raises a base to a certain power 288*cdf0e10cSrcweirFunction Power(Basis as Double, Exponent as Double) as Double 289*cdf0e10cSrcweir Power = Exp(Exponent*Log(Basis)) 290*cdf0e10cSrcweirEnd Function 291*cdf0e10cSrcweir 292*cdf0e10cSrcweir 293*cdf0e10cSrcweir' rounds a Real to a given Number of Decimals 294*cdf0e10cSrcweirFunction Round(BaseValue as Double, Decimals as Integer) as Double 295*cdf0e10cSrcweirDim Multiplicator as Long 296*cdf0e10cSrcweirDim DblValue#, RoundValue# 297*cdf0e10cSrcweir Multiplicator = Power(10,Decimals) 298*cdf0e10cSrcweir RoundValue = Int(BaseValue * Multiplicator) 299*cdf0e10cSrcweir Round = RoundValue/Multiplicator 300*cdf0e10cSrcweirEnd Function 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir'Retrieves the mere filename out of a whole path 304*cdf0e10cSrcweirFunction FileNameoutofPath(ByVal Path as String, Optional Separator as String) as String 305*cdf0e10cSrcweirDim i as Integer 306*cdf0e10cSrcweirDim SepList() as String 307*cdf0e10cSrcweir If IsMissing(Separator) Then 308*cdf0e10cSrcweir Path = ConvertFromUrl(Path) 309*cdf0e10cSrcweir Separator = GetPathSeparator() 310*cdf0e10cSrcweir End If 311*cdf0e10cSrcweir SepList() = ArrayoutofString(Path, Separator,i) 312*cdf0e10cSrcweir FileNameoutofPath = SepList(i) 313*cdf0e10cSrcweirEnd Function 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir 316*cdf0e10cSrcweirFunction GetFileNameExtension(ByVal FileName as String) 317*cdf0e10cSrcweirDim MaxIndex as Integer 318*cdf0e10cSrcweirDim SepList() as String 319*cdf0e10cSrcweir SepList() = ArrayoutofString(FileName,".", MaxIndex) 320*cdf0e10cSrcweir GetFileNameExtension = SepList(MaxIndex) 321*cdf0e10cSrcweirEnd Function 322*cdf0e10cSrcweir 323*cdf0e10cSrcweir 324*cdf0e10cSrcweirFunction GetFileNameWithoutExtension(ByVal FileName as String, Optional Separator as String) 325*cdf0e10cSrcweirDim MaxIndex as Integer 326*cdf0e10cSrcweirDim SepList() as String 327*cdf0e10cSrcweir If not IsMissing(Separator) Then 328*cdf0e10cSrcweir FileName = FileNameoutofPath(FileName, Separator) 329*cdf0e10cSrcweir End If 330*cdf0e10cSrcweir SepList() = ArrayoutofString(FileName,".", MaxIndex) 331*cdf0e10cSrcweir GetFileNameWithoutExtension = RTrimStr(FileName, "." & SepList(MaxIndex) 332*cdf0e10cSrcweirEnd Function 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir 335*cdf0e10cSrcweirFunction DirectoryNameoutofPath(sPath as String, Separator as String) as String 336*cdf0e10cSrcweirDim LocFileName as String 337*cdf0e10cSrcweir LocFileName = FileNameoutofPath(sPath, Separator) 338*cdf0e10cSrcweir DirectoryNameoutofPath = RTrimStr(sPath, Separator & LocFileName) 339*cdf0e10cSrcweirEnd Function 340*cdf0e10cSrcweir 341*cdf0e10cSrcweir 342*cdf0e10cSrcweirFunction CountCharsinString(BigString, LocChar as String, ByVal StartPos as Integer) as Integer 343*cdf0e10cSrcweirDim LocCount%, LocPos% 344*cdf0e10cSrcweir LocCount = 0 345*cdf0e10cSrcweir Do 346*cdf0e10cSrcweir LocPos = Instr(StartPos,BigString,LocChar) 347*cdf0e10cSrcweir If LocPos <> 0 Then 348*cdf0e10cSrcweir LocCount = LocCount + 1 349*cdf0e10cSrcweir StartPos = LocPos+1 350*cdf0e10cSrcweir End If 351*cdf0e10cSrcweir Loop until LocPos = 0 352*cdf0e10cSrcweir CountCharsInString = LocCount 353*cdf0e10cSrcweirEnd Function 354*cdf0e10cSrcweir 355*cdf0e10cSrcweir 356*cdf0e10cSrcweirFunction BubbleSortList(ByVal SortList(),optional sort2ndValue as Boolean) 357*cdf0e10cSrcweir'This function bubble sorts an array of maximum 2 dimensions. 358*cdf0e10cSrcweir'The default sorting order is the first dimension 359*cdf0e10cSrcweir'Only if sort2ndValue is True the second dimension is the relevant for the sorting order 360*cdf0e10cSrcweir Dim s as Integer 361*cdf0e10cSrcweir Dim t as Integer 362*cdf0e10cSrcweir Dim i as Integer 363*cdf0e10cSrcweir Dim k as Integer 364*cdf0e10cSrcweir Dim dimensions as Integer 365*cdf0e10cSrcweir Dim sortvalue as Integer 366*cdf0e10cSrcweir Dim DisplayDummy 367*cdf0e10cSrcweir dimensions = 2 368*cdf0e10cSrcweir 369*cdf0e10cSrcweirOn Local Error Goto No2ndDim 370*cdf0e10cSrcweir k = Ubound(SortList(),2) 371*cdf0e10cSrcweir No2ndDim: 372*cdf0e10cSrcweir If Err <> 0 Then dimensions = 1 373*cdf0e10cSrcweir 374*cdf0e10cSrcweir i = Ubound(SortList(),1) 375*cdf0e10cSrcweir If ismissing(sort2ndValue) then 376*cdf0e10cSrcweir sortvalue = 0 377*cdf0e10cSrcweir else 378*cdf0e10cSrcweir sortvalue = 1 379*cdf0e10cSrcweir end if 380*cdf0e10cSrcweir 381*cdf0e10cSrcweir For s = 1 to i - 1 382*cdf0e10cSrcweir For t = 0 to i-s 383*cdf0e10cSrcweir Select Case dimensions 384*cdf0e10cSrcweir Case 1 385*cdf0e10cSrcweir If SortList(t) > SortList(t+1) Then 386*cdf0e10cSrcweir DisplayDummy = SortList(t) 387*cdf0e10cSrcweir SortList(t) = SortList(t+1) 388*cdf0e10cSrcweir SortList(t+1) = DisplayDummy 389*cdf0e10cSrcweir End If 390*cdf0e10cSrcweir Case 2 391*cdf0e10cSrcweir If SortList(t,sortvalue) > SortList(t+1,sortvalue) Then 392*cdf0e10cSrcweir For k = 0 to UBound(SortList(),2) 393*cdf0e10cSrcweir DisplayDummy = SortList(t,k) 394*cdf0e10cSrcweir SortList(t,k) = SortList(t+1,k) 395*cdf0e10cSrcweir SortList(t+1,k) = DisplayDummy 396*cdf0e10cSrcweir Next k 397*cdf0e10cSrcweir End If 398*cdf0e10cSrcweir End Select 399*cdf0e10cSrcweir Next t 400*cdf0e10cSrcweir Next s 401*cdf0e10cSrcweir BubbleSortList = SortList() 402*cdf0e10cSrcweirEnd Function 403*cdf0e10cSrcweir 404*cdf0e10cSrcweir 405*cdf0e10cSrcweirFunction GetValueoutofList(SearchValue, BigList(), iDim as Integer, Optional ValueIndex) 406*cdf0e10cSrcweirDim i as Integer 407*cdf0e10cSrcweirDim MaxIndex as Integer 408*cdf0e10cSrcweir MaxIndex = Ubound(BigList(),1) 409*cdf0e10cSrcweir For i = 0 To MaxIndex 410*cdf0e10cSrcweir If BigList(i,0) = SearchValue Then 411*cdf0e10cSrcweir If Not IsMissing(ValueIndex) Then 412*cdf0e10cSrcweir ValueIndex = i 413*cdf0e10cSrcweir End If 414*cdf0e10cSrcweir GetValueOutOfList() = BigList(i,iDim) 415*cdf0e10cSrcweir End If 416*cdf0e10cSrcweir Next i 417*cdf0e10cSrcweirEnd Function 418*cdf0e10cSrcweir 419*cdf0e10cSrcweir 420*cdf0e10cSrcweirFunction AddListtoList(ByVal FirstArray(), ByVal SecondArray(), Optional StartIndex) 421*cdf0e10cSrcweirDim n as Integer 422*cdf0e10cSrcweirDim m as Integer 423*cdf0e10cSrcweirDim MaxIndex as Integer 424*cdf0e10cSrcweir MaxIndex = Ubound(FirstArray()) + Ubound(SecondArray()) + 1 425*cdf0e10cSrcweir If MaxIndex > -1 Then 426*cdf0e10cSrcweir Dim ResultArray(MaxIndex) 427*cdf0e10cSrcweir For m = 0 To Ubound(FirstArray()) 428*cdf0e10cSrcweir ResultArray(m) = FirstArray(m) 429*cdf0e10cSrcweir Next m 430*cdf0e10cSrcweir For n = 0 To Ubound(SecondArray()) 431*cdf0e10cSrcweir ResultArray(m) = SecondArray(n) 432*cdf0e10cSrcweir m = m + 1 433*cdf0e10cSrcweir Next n 434*cdf0e10cSrcweir AddListToList() = ResultArray() 435*cdf0e10cSrcweir Else 436*cdf0e10cSrcweir Dim NullArray() 437*cdf0e10cSrcweir AddListToList() = NullArray() 438*cdf0e10cSrcweir End If 439*cdf0e10cSrcweirEnd Function 440*cdf0e10cSrcweir 441*cdf0e10cSrcweir 442*cdf0e10cSrcweirFunction CheckDouble(DoubleString as String) 443*cdf0e10cSrcweirOn Local Error Goto WRONGDATATYPE 444*cdf0e10cSrcweir CheckDouble() = CDbl(DoubleString) 445*cdf0e10cSrcweirWRONGDATATYPE: 446*cdf0e10cSrcweir If Err <> 0 Then 447*cdf0e10cSrcweir CheckDouble() = 0 448*cdf0e10cSrcweir Resume NoErr: 449*cdf0e10cSrcweir End If 450*cdf0e10cSrcweirNOERR: 451*cdf0e10cSrcweirEnd Function 452*cdf0e10cSrcweir</script:module>