'************************************** ' Name: Swap Fang(A comprehensive swap) ' Description:This is a comprehensive sw ' ap function it swaps up to four variable ' s, or object. Handles duel swap for type ' differences, it sues right to left unles ' s it is specified to perform a fang whic ' h is like a tooth in a triangle elliptic ' al when among three in a swap (order dif ' ference by two separate single swaps ver ' ses a shift like swap on two or more ite ' ms, a fang is only for three, an argumen ' t shift is two to four when swapping). ' By: Nicholas Forystek ' ' ' Inputs:None ' ' Returns:None ' 'Assumes:None ' 'Side Effects:None '************************************** Public Sub SwapFang(ByRef var1, ByRef var2, Optional ByRef var3 = Empty, Optional ByRef var4 = Empty, Optional ByRef fang = Empty) Dim var5 'the variant variable to use for the swapping Dim var6 'for objects cause we might swap two pairs, var1 & var2 variant, then var3 and 4 objects If ((Not (TypeName(fang) = "Empty")) And (TypeName(fang) = "Boolean") And (Not (TypeName(var1) = "Boolean"))) Then If fang Then If (Not (TypeName(var4) = "Empty")) Then If IsObject(var1) Then Set var6 = var2 Set var2 = var1 Set var1 = var6 Set var6 = var3 Set var3 = var1 Set var1 = var6 Set var6 = var4 Set var4 = var1 Set var1 = var6 Else var5 = var2 var2 = var1 var1 = var5 var5 = var3 var3 = var1 var1 = var5 var5 = var4 var4 = var1 var1 = var5 End If Else If IsObject(var1) Then Set var6 = var2 Set var2 = var1 Set var1 = var6 Set var6 = var3 Set var3 = var1 Set var1 = var6 Set var6 = var4 Set var4 = var1 Set var1 = var6 Else var5 = var2 var2 = var1 var1 = var5 var5 = var3 var3 = var1 var1 = var5 var5 = var4 var4 = var1 var1 = var5 End If End If Else If ((Not (TypeName(var4) = "Empty")) And ((TypeName(fang) = "Boolean") And _ ((Not (TypeName(var3) = "Boolean") And (TypeName(var3) = TypeName(var4)))))) Or _ ((Not (TypeName(var4) <> TypeName(var3))) And ((TypeName(fang) = "Boolean") And _ ((Not (TypeName(var3) = "Boolean") And (TypeName(var3) = TypeName(var4)))))) Then If fang Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var6 Set var6 = var3 Set var3 = var1 Set var1 = var6 Else var5 = var1 var1 = var2 var2 = var5 var5 = var3 var3 = var1 var1 = var5 End If Else If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If End If ElseIf (Not (TypeName(var4) <> TypeName(var3))) And ((TypeName(fang) = "Boolean") And _ ((Not (TypeName(var3) = "Boolean") And (TypeName(var3) = TypeName(var4))))) Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If ElseIf ((TypeName(var3) = TypeName(var4)) And _ (Not (TypeName(var2) = TypeName(var3)))) And _ ((TypeName(var1) = TypeName(var2))) Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var6 Set var6 = var3 Set var3 = var4 Set var4 = var6 Else var5 = var1 var1 = var2 var2 = var5 var5 = var3 var3 = var4 var4 = var5 End If End If End If ElseIf (TypeName(var1) = TypeName(var2)) And (TypeName(fang) = "Empty") Then If (TypeName(var3) = TypeName(var4)) And (Not (TypeName(var2) = TypeName(var3))) Then 'duce swap If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var6 Set var6 = var3 Set var3 = var4 Set var4 = var6 Else var5 = var1 var1 = var2 var2 = var5 var5 = var3 var3 = var4 var4 = var5 End If Else If (Not (TypeName(var4) = "Empty")) And (TypeName(fang) = "Boolean") And (Not (TypeName(var1) = "Boolean")) Then If fang Then If IsObject(var1) Then Set var6 = var2 Set var2 = var1 Set var1 = var6 Set var6 = var3 Set var3 = var1 Set var1 = var6 Set var6 = var4 Set var4 = var1 Set var1 = var6 Else var5 = var2 var2 = var1 var1 = var5 var5 = var3 var3 = var1 var1 = var5 var5 = var4 var4 = var1 var1 = var5 End If Else If (Not (TypeName(var4) = "Empty")) Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var4 Set var4 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var4 var4 = var5 End If Else If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If End If End If ElseIf (TypeName(var1) = TypeName(var3)) And (TypeName(var4) = "Empty") Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If Else If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var4 Set var4 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var4 var4 = var5 End If End If End If ElseIf TypeName(var2) = TypeName(var3) And (Not (TypeName(var4) = "Empty")) And (TypeName(fang) = "Empty") Then 'four swap If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If ElseIf (Not (TypeName(var3) = "Empty")) And (TypeName(var4) = "Empty") And (TypeName(fang) = "Empty") Then 'three swap If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var3 Set var3 = var6 Else var5 = var1 var1 = var2 var2 = var3 var3 = var5 End If ElseIf (TypeName(var3) = "Empty") And (TypeName(var4) = "Empty") And (TypeName(fang) = "Empty") Then If IsObject(var1) Then Set var6 = var1 Set var1 = var2 Set var2 = var6 Else var5 = var1 var1 = var2 var2 = var5 End If End If End Sub