PDA

View Full Version : Instring Replace: Error



YellowLabPro
07-25-2007, 05:36 PM
My nightmare will not end w/ these fractional values:banghead:
Here is a new one: Error- Compile error. Expected Variable or Procedure, not Module
Grrrrrrrrrrrrrrggggggggggggghhhhhhhh!!!!

BTW: It errors on the first Replace on the first InStr line.


With Wsf
For Each c In Range("M4:M" & LRowF)
If InStr(c.Value, "39098") > 0 Then c.Formula = Replace(c.Value, "39098", "1/16")
If InStr(c.Value, "39090") > 0 Then c.Formula = Replace(c.Value, "39090", "1/8")
If InStr(c.Value, "39149") > 0 Then c.Formula = Replace(c.Value, "39149", "3/8")
If InStr(c.Value, "39086") > 0 Then c.Formula = Replace(c.Value, "39086", "1/4")
If InStr(c.Value, "39084") > 0 Then c.Formula = Replace(c.Value, "39084", "1/2")
If InStr(c.Value, "39210") > 0 Then c.Formula = Replace(c.Value, "39210", "5/8")
If InStr(c.Value, "39145") > 0 Then c.Formula = Replace(c.Value, "39145", "3/4")
If InStr(c.Value, "39271") > 0 Then c.Formula = Replace(c.Value, "39271", "7/8")
Exit For
Next c
End With

malik641
07-25-2007, 06:51 PM
Hey Doug,

Some things about your code:

What's Wsf? And you don't use it in the code you gave at all within the With statement. I'm assuming it's a worksheet object and if so, then when you say Range("M4:M" & LRowf) you should have a dot (.) in front of "Range" --> ".Range(...)"

You shouldn't have the Exit For statement in there. Your code will not loop at all because the Exit For statement is not enclosed by a separate condition.

I'm not sure I would use c.Value inside the Instr() function because it is expecting a string and c.Value is returning a Variant [check out VBA help on that] (I'm pretty sure it will behave ok, but I don't like to use variants if I don't have to). I would force it to convert to a string like so:
Instr(1, CStr(c.Value), "String2")
The same applies for the Replace function, it expects 2 string values. This could be the cause of your error...

Why are you using .Formula rather than .Value when you are not inserting a formula?

YellowLabPro
07-25-2007, 07:08 PM
Hi Joseph,
I tried IM you a little while ago to say whats up.
Thanks for the response. I did not include the entire code, only a block.
I found the one error, there was another procedure in the same Project titled "Replace" and this was causing the first issue. But there are few others now.
Here is my full block. Wsf is the worksheet name, I used a variable to declare it.
This is still a subset of my full code. I have pulled this out for testing. This works in a different Project where there seems to be no other code that might cause a conflict.
I did remove the Exit For, found that what you had brought up to be that exact case.


Sub FormatFrac()
Dim Wsf As Worksheet, Wsv As Worksheet
'Dim i As Integer
Dim LRowF As Long, LRowV As Long
'Dim Item As Variant, Num As Variant
Dim FF As String, VB As String
Dim c As Range
FF = "PCCombined_FF"
VB = "PCCombined_VB"
Set Wsf = Worksheets(FF)
Set Wsv = Worksheets(VB)
LRowF = Wsf.Cells(Rows.Count, 1).End(xlUp).Row
LRowV = Wsv.Cells(Rows.Count, 1).End(xlUp).Row
'For i = 4 To LRowF
' For Each Num In Array(39098, 39090, 39149, 39086, 39084, 39145, 39210, 39271) 'Corresponding Dates- :39098= 1/16: :39090= 1/8: :39149= 3/8: :39086= 1/4: :39084= 1/2: :39210= 5/8: :39145= 3/4: :39271= 7/8:
' If (Cells(i, "M").Value = Num) Then
' Cells(i, "M").NumberFormat = "# ?/?"
' 'If Cells(i, "M").NumberFormat = "# ?/?" Then
' 'Cells(i, "M").Interior.Color = vbYellow
' Exit For
' End If
'
' Next Num
'Next i
With Wsf
For Each c In Range("M4:M" & LRowF)
If InStr(c.Value, "39098") > 0 Then c.Formula = Replace(c.Value, "39098", "1/16")
If InStr(c.Value, "39090") > 0 Then c.Formula = Replace(c.Value, "39090", "1/8")
If InStr(c.Value, "39149") > 0 Then c.Formula = Replace(c.Value, "39149", "3/8")
If InStr(c.Value, "39086") > 0 Then c.Formula = Replace(c.Value, "39086", "1/4")
If InStr(c.Value, "39084") > 0 Then c.Formula = Replace(c.Value, "39084", "1/2")
If InStr(c.Value, "39210") > 0 Then c.Formula = Replace(c.Value, "39210", "5/8")
If InStr(c.Value, "39145") > 0 Then c.Formula = Replace(c.Value, "39145", "3/4")
If InStr(c.Value, "39271") > 0 Then c.Formula = Replace(c.Value, "39271", "7/8")
'Exit For
Next c
End With
'[Wsv].Activate
'With Wsv
' For Each c In Range("M4:M" & LRowV)
'If InStr(c.Value, "39098") > 0 Then c.Formula = Replace(c.Value, "39098", "1/16")
'If InStr(c.Value, "39090") > 0 Then c.Formula = Replace(c.Value, "39090", "1/8")
'If InStr(c.Value, "39149") > 0 Then c.Formula = Replace(c.Value, "39149", "3/8")
'If InStr(c.Value, "39086") > 0 Then c.Formula = Replace(c.Value, "39086", "1/4")
'If InStr(c.Value, "39084") > 0 Then c.Formula = Replace(c.Value, "39084", "1/2")
'If InStr(c.Value, "39210") > 0 Then c.Formula = Replace(c.Value, "39210", "5/8")
'If InStr(c.Value, "39145") > 0 Then c.Formula = Replace(c.Value, "39145", "3/4")
'If InStr(c.Value, "39271") > 0 Then c.Formula = Replace(c.Value, "39271", "7/8")
''Exit For
'Next c
'End With
End Sub

YellowLabPro
07-25-2007, 07:14 PM
The point about the variant- If I am not mistaken here, I do not want it to convert to a string; if converting them to a string makes them text.
What is happening is I have some fractional values, 1/16, 1/8, 1/2 etc... I need to convert these values which are generated by a formula in col. M to values, which are still numeric.
Once I do convert them to values, they change to a serial number date..... Grrrhhhhh
So the only way to get them back to a fractional value is to do an InStr replace.

YellowLabPro
07-25-2007, 07:17 PM
My new error:
Compile error:
Wrong number of arguments or invalid property assignment.

As I said, this code works outside of this project whilst housed in another project.

malik641
07-25-2007, 07:48 PM
Yeah I've missed you a few times with IMing myself. No biggie, I'm going to bed early tonight anyhow...probably after this post (or maybe a few more...just to satisfy my VBAX fix ;))


Ok. For the quick fix you're trying to do (I assume you have saved over what you could have salvaged and start over), try replacing that For Next with:
For Each c In .Range("M4:M" & LRowF)
Select Case CStr(c.Value) ' Convert to String just to be sure
Case "39098"
c.Value = (1 / 16)
Case "39090"
c.Value = (1 / 8)
Case "39149"
c.Value = (3 / 8)
Case "39086"
c.Value = (1 / 4)
Case "39084"
c.Value = (1 / 2)
Case "39210"
c.Value = (5 / 8)
Case "39145"
c.Value = (3 / 4)
Case "39271"
c.Value = (7 / 8)
End Select
Next c

See if that works for you. You didn't need the Replace function to begin with. The preceding If statement verifies the condition to meet with the Instr() function, which you also didn't really need because the values you were using were exact date serial values. You would normally use the Instr() function to see if there is text contained within a string. The return value of Instr() is the character position where the match was found. In your case, you were using exact values, so you can use the Select Case method, which is more efficient for this situation since you are eliminating unnecessary checks with multiple If statements (with this code, once it finds a match, it will perform the underlying code beneath it and then move on to the next c variable, rather than checking the other conditions that follow up to the Next c statement).

Also, never choose a keyword from either VBA (i.e. Replace) or any object model currently available (i.e. Excel.object) for your Variables, Module names, Procedure names, etc. You can get into a lot of trouble and aggravation that way, as you've already been through ;)

YellowLabPro
07-25-2007, 07:56 PM
I will give this a go.
I did not know Replace was a keyword.... there should be a little guy w/ wings on his shoulders and Newbie halo above waving his magic wand warning of guys of such dangers....
Love this little guy.... >>:reading:

malik641
07-25-2007, 08:08 PM
I will give this a go.
I did not know Replace was a keyword.... there should be a little guy w/ wings on his shoulders and Newbie halo above waving his magic wand warning of guys of such dangers.... :wizard: :grinhalo:

- OR -

:clever: :grinhalo:


Love this little guy.... >>:reading: Me too. That's how most people find me. During lunch break at work, at home, at school. I'm usually reading a technical book or online at the forums. Most of it had to do with school. But since the summer started (end of May) I look like this with my VB.NET, SQL, and Excel books :)
And I do manage to squeeze in some exercise as well :yes

rory
07-26-2007, 01:52 AM
PS If you are using Replace you don't need the InStr check anyway - if the text isn't there, Replace just won't replace anything.
Also, considering how I guess those values got there, I think you could use:
For Each c In ActiveSheet.Range("M4:M" & LRowF)
Select Case CStr(c.Value) ' Convert to String just to be sure
Case "39098", "39090", "39149", "39086", "39084", "39210", "39145", "39271"
c.Value = Evaluate(Format$(c.Value, "m/dd"))
End Select
Next c

Regards,
Rory

malik641
07-26-2007, 05:03 AM
c.Value = Evaluate(Format$(c.Value, "m/dd"))
That's real clever rory :yes Nice code.

YellowLabPro
07-26-2007, 05:04 AM
Ok Guys-
First- Thanks for all the help, Joseph and Rory!

Second- My initial post was regarding the compile error- looking for a variable or procedure, not a module. I want to post back what I found the problem to be gratus of Malik641 and Xld-

The problem was I had a Subroutine named "Sub Replace ()" . But the sub name was not the module name, no, it was a Sub name in the same PROJECT and this caused the conflict. Now the error message makes sense, but last night after a long day at the keyboard it was like reading Latin (Sorry Bob- have not mastered that yet either.... but it is on the list!) So my sub was trying to call another Sub! Ok- so I have this worked out now. Both Xld and Malik have cautioned me about this now and I BELIEVE them, really it was never about doubt, I really did not know that "Replace" was a keyword, nor to the extent of its reach when a keyword is used in a Sub name.

Third- Now regarding Malik and Rory's advice for improving my code. I would like to reply to them independently to keep points straight, as not to cross posts confusing items.

I will post to Malik first.

Cheers,

Doug

rory
07-26-2007, 05:05 AM
Thanks! :)

YellowLabPro
07-26-2007, 05:20 AM
1.
What's Wsf? And you don't use it in the code you gave at all within the With statement. I'm assuming it's a worksheet object and if so, then when you say Range("M4:M" & LRowf) you should have a dot (.) in front of "Range" --> ".Range(...)"

This was given to me by a boardmember. It seems to make sense not to need a .Range because it is in a Loop. This works as is. But I will try it w/ a .Range for confirmation purposes.
With Wsf
For Each c In Range("M4:M" & LRowF)

2.
You shouldn't have the Exit For statement in there. Your code will not loop at all because the Exit For statement is not enclosed by a separate condition.

Yes I found this to be the case and removed it, I only found this out because Xld showed me how to use the Locals Window.
I will be researching the use of Exit For, I do not know how this works... meaning I do know that it is an early exit, but not how it should be used....

3.

I'm not sure I would use c.Value inside the Instr() function because it is expecting a string and c.Value is returning a Variant [check out VBA help on that] (I'm pretty sure it will behave ok, but I don't like to use variants if I don't have to). I would force it to convert to a string like so:




VBA:
Instr(1, CStr(c.Value), "String2")

VBA tags courtesy of www.thecodenet.com (http://www.thecodenet.com/)


Though it might be a variant, is .Value not the actual value that is contained in a Cell in the Worksheet? From the way I understood the code it was looking in the cell at the value.... c.Value.

Now are you saying that CStr is narrowing the parameter to a string value only?

Is alpha and numerical terms considered strings or is a numeric term considered a value?

4.
The same applies for the Replace function, it expects 2 string values. This could be the cause of your error...
As I posted in my previous thread, this is not the cause- it was a Sub Name conflict.

5.
Why are you using .Formula rather than .Value when you are not inserting a formula?
Cannot give an intelligent/correct answer- The c.Formula seemed appropriate because of the nature of the Replace function, that since it was a function, it would be a Formula.

YellowLabPro
07-26-2007, 05:24 AM
BTW:
Here is my working code:

Sub FormatFrac()
Dim Wsf As Worksheet, Wsv As Worksheet
Dim i As Integer
Dim LRowF As Long, LRowV As Long
Dim Item As Variant, Num As Variant
Dim FF As String, VB As String
Dim c As Range
FF = "PCCombined_FF"
VB = "PCCombined_VB"
Set Wsf = Worksheets(FF)
Set Wsv = Worksheets(VB)
LRowF = Wsf.Cells(Rows.Count, 1).End(xlUp).Row
LRowV = Wsv.Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To LRowF
For Each Num In Array(39098, 39090, 39157, 39086, 39218, 39149, 39279, 39084, 39341, 39210, 39145, 39271, 39335, 39398)
'Corresponding Num- 39098 39090 39157 39086 39218 39149 39279 39084 39341 39210 39145 39271 39335 39398
' 1/16 1/8 3/16 1/4 5/16 3/8 7/16 1/2 9/16 5/8 3/4 7/8 9/10 11/12
If (Cells(i, "M").Value = Num) Then
Cells(i, "M").NumberFormat = "# ??/??"
Exit For
End If
Next Num
Next i
With Wsf
For Each c In .Range("M4:M" & LRowF)
'For Each c In Intersect(Wsf.Columns(13), Wsf.UsedRange)
If InStr(c.Value, "39098") > 0 Then c.Formula = Replace(c.Value, "39098", "1/16")
If InStr(c.Value, "39090") > 0 Then c.Formula = Replace(c.Value, "39090", "1/8")
If InStr(c.Value, "39157") > 0 Then c.Formula = Replace(c.Value, "39157", "3/16")
If InStr(c.Value, "39086") > 0 Then c.Formula = Replace(c.Value, "39086", "1/4")
If InStr(c.Value, "39218") > 0 Then c.Formula = Replace(c.Value, "39218", "5/16")
If InStr(c.Value, "39149") > 0 Then c.Formula = Replace(c.Value, "39149", "3/8")
If InStr(c.Value, "39279") > 0 Then c.Formula = Replace(c.Value, "39279", "7/16")
If InStr(c.Value, "39084") > 0 Then c.Formula = Replace(c.Value, "39084", "1/2")
If InStr(c.Value, "39341") > 0 Then c.Formula = Replace(c.Value, "39341", "9/16")
If InStr(c.Value, "39210") > 0 Then c.Formula = Replace(c.Value, "39210", "5/8")
If InStr(c.Value, "39145") > 0 Then c.Formula = Replace(c.Value, "39145", "3/4")
If InStr(c.Value, "39271") > 0 Then c.Formula = Replace(c.Value, "39271", "7/8")
If InStr(c.Value, "39335") > 0 Then c.Formula = Replace(c.Value, "39335", "9/10")
If InStr(c.Value, "39398") > 0 Then c.Formula = Replace(c.Value, "39398", "11/12")
Next c
End With

[Wsv].Activate
With Wsv
For Each c In .Range("M4:M" & LRowV)
'For Each c In Intersect(Wsf.Columns(13), Wsf.UsedRange)
If InStr(c.Value, "39098") > 0 Then c.Formula = Replace(c.Value, "39098", "1/16")
If InStr(c.Value, "39090") > 0 Then c.Formula = Replace(c.Value, "39090", "1/8")
If InStr(c.Value, "39157") > 0 Then c.Formula = Replace(c.Value, "39157", "3/16")
If InStr(c.Value, "39086") > 0 Then c.Formula = Replace(c.Value, "39086", "1/4")
If InStr(c.Value, "39218") > 0 Then c.Formula = Replace(c.Value, "39218", "5/16")
If InStr(c.Value, "39149") > 0 Then c.Formula = Replace(c.Value, "39149", "3/8")
If InStr(c.Value, "39279") > 0 Then c.Formula = Replace(c.Value, "39279", "7/16")
If InStr(c.Value, "39084") > 0 Then c.Formula = Replace(c.Value, "39084", "1/2")
If InStr(c.Value, "39341") > 0 Then c.Formula = Replace(c.Value, "39341", "9/16")
If InStr(c.Value, "39210") > 0 Then c.Formula = Replace(c.Value, "39210", "5/8")
If InStr(c.Value, "39145") > 0 Then c.Formula = Replace(c.Value, "39145", "3/4")
If InStr(c.Value, "39271") > 0 Then c.Formula = Replace(c.Value, "39271", "7/8")
If InStr(c.Value, "39335") > 0 Then c.Formula = Replace(c.Value, "39335", "9/10")
If InStr(c.Value, "39398") > 0 Then c.Formula = Replace(c.Value, "39398", "11/12")
Next c
End With
[Wsf].Activate
[a1].Select
[D4].Select

rory
07-26-2007, 05:59 AM
I think this would achieve the same thing:
Sub FormatFrac()
Dim Wsf As Worksheet, Wsv As Worksheet
Dim i As Integer
Dim LRowF As Long, LRowV As Long
Dim Item As Variant, Num As Variant
Dim FF As String, VB As String
Dim c As Range
Dim varNums()
FF = "PCCombined_FF"
VB = "PCCombined_VB"
Set Wsf = Worksheets(FF)
Set Wsv = Worksheets(VB)
LRowF = Wsf.Cells(Rows.Count, 1).End(xlUp).Row
LRowV = Wsv.Cells(Rows.Count, 1).End(xlUp).Row
varNums = Array(39098, 39090, 39157, 39086, 39218, 39149, 39279, 39084, 39341, 39210, 39145, 39271, 39335, 39398)
' 1/16 1/8 3/16 1/4 5/16 3/8 7/16 1/2 9/16 5/8 3/4 7/8 9/10 11/12
With Wsf
For i = 4 To LRowF
If UBound(Filter(varNums, .Cells(i, "M").Value)) >= 0 Then
.Cells(i, "M").Value = Evaluate(Format$(.Cells(i, "M").Value, "m/dd"))
.Cells(i, "M").NumberFormat = "# ??/??"
End If
Next i
End With
With Wsv
For Each c In .Range("M4:M" & LRowV)
If Len(c.Value) > 0 Then
If UBound(Filter(varNums, c.Value)) >= 0 Then
c.Value = Evaluate(Format$(c.Value, "m/dd"))
c.NumberFormat = "# ??/??"
End If
End If
Next c
End With
[D4].Select
End Sub


Regards,
Rory

YellowLabPro
07-26-2007, 06:09 AM
Thanks Rory!
I am going to hold off from changing my code just yet. I want to step through this so that I may understand better. My goal is to learn how to code.
As I work through this and solve for the points Malik and you have raised, I will replace my code w/ yours..... this will help me most. I am fortunately/unfortunately a very linear thinking person. So it helps for me to solve for each along the way.

But please note, very anxious to use the suggestions you have given.

Best,

Doug

rory
07-26-2007, 06:12 AM
Doug,
No worries - let us know if you have any questions.
Re your .Range versus Range issue, the Range(...) syntax works on the activesheet, whatever that may be; .Range(...) works on the sheet you specified, regardless of which sheet is active. Same applies to .Cells versus Cells
HTH
Rory

rory
07-26-2007, 06:13 AM
PS In your code, you seemed to loop through the same range twice for the first sheet, so I changed that to do all checks in one pass through.

YellowLabPro
07-26-2007, 06:48 AM
Thanks Rory,
Waiting for Malik's answers and will continue from there.
The .Range point- nice good to know this.
The double loop, there are two sheets, Wsf and Wsv- that is the reason for the second loop. I did however find that I do not have the array in the second loop.

malik641
07-26-2007, 06:57 AM
I am in the process of responding to your bigger post above (post #13). It's just that there's an auditor here today and I don't want him seeing me on the web too much :)

Will post asap

rory
07-26-2007, 07:01 AM
In your posted code, you had 3 loops, the first two through the same range.

malik641
07-26-2007, 07:22 AM
Please excuse me if I repeat anything rory already said (I know I did about the .Range, but that's all I know of :))

1.
This was given to me by a boardmember. It seems to make sense not to need a .Range because it is in a Loop. This works as is. But I will try it w/ a .Range for confirmation purposes.
With Wsf
For Each c In Range("M4:M" & LRowF) When you use 'Range()', you are referring to the ActiveSheet. Which means that if you have 2 workbooks open (one contains the code and the other doesn't) and you run the code, whichever worksheet is activated will be the one the code refers to. So if you want to evaluate Sheet1 in Book1 (and the code is in Book1), but you run the code in Book2 -> Sheet1, the code will look at Range("M4:M" & LRowF) in Book2-->Sheet1.

So if you are looking to refer to the Wsf worksheet I would advise you use the dot in front of Range() to be sure that you are referring to the correct worksheet.



2.
I will be researching the use of Exit For, I do not know how this works... meaning I do know that it is an early exit, but not how it should be used.... Consider the following code:
Sub TestExitFor()
Dim i As Long
For i = 1 To 10
Debug.Print i

If i = 8 Then Exit For
Next
End Sub
Even though the loop is given the instruction to exit after i=10 and it loops for the last (tenth) time, the code will exit the loop when i=8. It’s just a extra condition, like a ‘just in case’ so you can exit the loop if you have to. The same goes for Exit Do in a Do loop.




3.
Though it might be a variant, is .Value not the actual value that is contained in a Cell in the Worksheet? From the way I understood the code it was looking in the cell at the value.... c.Value. .Value will give you the real value of a resulting formula or constant. What I mean by real is if you have a number format such as Number with 2 decimal places and you put 1/16 in that cell, the cell will show 0.06 but Range(“A1”).Value will return 0.0625. A range with a date in it will return a Date value in code, which shows why the Range.Value in the help files says it returns a Variant, it depends on the cell being read. Now, if you said Range(“A1”).Text for the previous example the code would return “0.06”, which is what you see in the cell.



Now are you saying that CStr is narrowing the parameter to a string value only?

Is alpha and numerical terms considered strings or is a numeric term considered a value?
CStr() will convert an expression to a string. In the VBA help files, click the question mark to bring up the Help docker window and type in Cstr and press search, then click on ‘Returns for Cstr’ to see what CStr() will convert which different types into. I used this since the Replace() and Instr() functions require string variables passed to them.

4.
As I posted in my previous thread, this is not the cause- it was a Sub Name conflict.
That makes perfect sense, too. I just didn’t think you may have done that. Next time before running your code, in the VBE, click Debug?Compile VBA Project and if you do this again, the error will be caught during compiling, before the code is executed. Consider doing this for all your code that you write.



5.
Cannot give an intelligent/correct answer- The c.Formula seemed appropriate because of the nature of the Replace function, that since it was a function, it would be a Formula.
I see what you mean now. For future reference you would normally use .Formula to enter a formula for single or multiple cells. As an example, to fill A1:A10 try this:
Range("A1:A10").Formula = "=B1+4" For A1 the formula is =B1+4, for A2 the formula is =B2+4, for A3 the formula is =B3+4, and so on.

I hope this give you some good pointers for future coding :)

YellowLabPro
07-26-2007, 07:28 AM
No worries buddy,
Just letting Rory know I will proceed once I zap you for every ounce of your brainpower.... :-)
Take your time.
I am still fighting w/ VBA over these stupid fractions!

YellowLabPro
07-26-2007, 08:15 AM
Thanks Joseph--
Big Big Help.

1. So bridging the two answers that you and Rory gave- I see now that the . (dot) associates the With to the object. In my case the Wsf just became superflous and had no real association w/ the range named.

2. The debug.print loop was great help- I put that into a module and ran it as provided, then I ' out the If i = 8 and ran it w/ the Exit For and see that it jumped out after the first iteration.
Charlize gave me the Array and used the Exit For, I see now that as soon as this has executed there is no need to loop again, so he ensured that the loop ended... very cool

3. Here is the big one. The explanation is MONEY! That really helps layout what is going on.... It is still the curse of my coding issues today, but shines some light. Xld has been trying to help me on this in a different thread-http://www.vbaexpress.com/forum/showthread.php?t=13968

Thanks Joseph- makes thick mud a little more gooey... :-)

malik641
07-26-2007, 08:27 AM
Doug,

Glad to help :)
What do you mean 'the explanation is MONEY'?

Also, check out johnske's article about With...End With statements (http://vbaexpress.com/forum/showthread.php?t=12125).

YellowLabPro
07-26-2007, 09:06 AM
MONEY! Money in the Bank, Slam Dunk, Home Run, Cha-Ching....

malik641
07-26-2007, 10:20 AM
Gotcha :thumb