+ Reply to Thread
Results 1 to 32 of 32

How to Speed Up the File Processing i.e Formulas Vs VBA ?

Hybrid View

  1. #1
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Forum,

    I have made a WorkBook which has a lot of Formulas such as SUMPRODUCT & INDIRECT and there are several such sheets..

    Now this File has become extremely slow and for every change it goes into Calculation Mode, now how do I change the approach and get the desired result and still make it faster.

    If I make these Formulas into VBA will that make the File faster?

    I can also adapt to an approach where the Formulas are still written in Formulas but in the VBA Mode and then convert it to Values.

    Need advise on an urgent basis..

    Warm Regards
    e4excel

  2. #2
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    The INDIRECT is slowing things down. Also OFFSET or anyother volatile function.
    _
    ...How to Cross-post politely...
    ..Wrap code by selecting the code and clicking the # or read this. Thank you.

  3. #3
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Thanks for the Inputs Mike...

    How do I get the FUNCTIONALITY of having the Drop-Downs and other Formulas which are predominantly using the OFFSET function and also the INDIRECT function in certain cases..

    Is there an Alternative of doing the same thing in VBA and then expediting the Processing..

    Please see the Formula and the Coding for the Formatting PART...
    Sub ColAFormatting()    'Title :- Sr. No
    Dim ColARng As Range
    Dim ColB As Long
    
    With ActiveSheet
            ColB = .Cells(.Rows.Count, "B").End(xlUp).Row
            Set ColARng = .Range("A2:A" & CStr(ColB))
    
    End With
    
    'ColARng.Formula = "=IF($B2="""","""",ROWS($B$2:$B2))"
    Const ColA_SrNo As String = "=IF($B2="""","""",ROWS($B$2:$B2))"
    
        With Range("A2:A" & ColB)
        
            .Formula = Replace(ColA_SrNo, "<row>", ColB)
            .Value = .Value
            
        End With
    
        With ColARng.Font
            .Name = "Book Antiqua"
            .Size = 12
            .Bold = True
            .Color = -16777024
            .TintAndShade = 0
        End With
        
        HorizontalCenterAlignment ColARng
        ColARng.NumberFormat = "General"
        
    End Sub
    Will this help if I convert the Formulas into Values , in this example I have not mentioned any OFFSET & INDIRECT Formulas but I have a lot of Defined Names using them..

    So using them via the VBA mode will it speed up the process..

    Warm Regards
    e4excel

  4. #4
    Forum Expert snb's Avatar
    Join Date
    05-09-2010
    Location
    VBA
    MS-Off Ver
    Redhat
    Posts
    5,649

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Like ?

    Sub tst()
     Cells(2, 2).Value = 2
     Cells(2, 2).AutoFill Cells(2, 2).Resize(Columns(2).SpecialCells(2).Count), xlLinearTrend
    End Sub



  5. #5
    Forum Contributor arlu1201's Avatar
    Join Date
    09-09-2011
    Location
    Bangalore, India
    MS-Off Ver
    Excel 2003 & 2007
    Posts
    19,166

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    If the calculations are slowing you down, you can change it to Manual. Anytime you need the calculations to be performed, you can press F9.

  6. #6
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Thanks Arlu, I was not aware of this feature however, is there a way that by changing the approach here and there still get the work getting done a little faster..

    The earlier VBA code was just an example but I would like to know writing the same formulas through VBA do they save on the memory by any chance..

    As I have a lot of SUMPRODUCTS, INDIRECT , OFFSET & MULTILOOKUP INDEX ARRAY FUNCTIONS..

    Warm Regards
    e4excel

  7. #7
    Forum Contributor arlu1201's Avatar
    Join Date
    09-09-2011
    Location
    Bangalore, India
    MS-Off Ver
    Excel 2003 & 2007
    Posts
    19,166

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    I havent encountered a problem like this...but its worth giving a try. And you can compare based on time taken to execute.

    If it works out good for you, its gr8. Let me know if you need any help in converting any part of your file to VBA.

  8. #8
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    VBA can be faster than formulas, depending on the formula and how well written the code is, of course.

    This article,
    http://blogs.office.com/b/microsoft-...practices.aspx ,
    Talks about what to do and not do in regards to VBA. And this article,
    http://fastexcel.wordpress.com/2011/...a-udfs-part-1/ ,
    talks about UDF specifically and ways to improve performance. Also, you want to avoid creating a volitile UDF so that it only calculates when related data is updated. Keep reading this series in this blog (I think he's up to part 6), it will really help you understand UDF best practices.

  9. #9
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    There are non-volatile alternatives to OFFSET.

    =OFFSET(A1,0,0,COUNTA(A:A),1)

    can be replaced with
    =INDEX(A:A,1,1):INDEX(A:A,COUNTA(A:A),1)

    for example, but there is no generic replacement.

  10. #10
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Quote Originally Posted by mikerickson View Post
    There are non-volatile alternatives to OFFSET.

    =OFFSET(A1,0,0,COUNTA(A:A),1)

    can be replaced with
    =INDEX(A:A,1,1):INDEX(A:A,COUNTA(A:A),1)

    for example, but there is no generic replacement.
    Thanks for all the inputs ..

    I think I am not able to convey correctly what I mean, being fairly new in VBA I use a Formula Approach even while writing codes in VBA...

    Me learning VBA is definitely a long process however , if I were to replace every formula written in VBA using the Application,WorkSheetFunctions Approach and then converting it into values is it going to help? to make it faster..

    The OFFSET is used in the Dynamic Dropdowns, I have never tired the INDEX though I would be more than happy to try that out..

    Since there a lot of Unequal Columns I tend to use the ENtire Columns or ELse Indirect("A"&Counta(B:B))..

    So how do i use it sparingly..

    Warm Regards
    e4excel

  11. #11
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    INDEX() will return a reference, so

    =Index(A:A,Counta(B:B))

    will return the same reference as

    =Indirect("A"&Counta(B:B)

    but is not a volatile function. Indirect will calculate every time there is a change in the worksheet. Since you are converting a string to a cell reference, there is no way for Excel to know what cells may affect the value, without calculating it. So, it has to calculate every time there is a change. Index, on the other hand, does not deal with strings, and so only needs to calculate when the cells referenced inside the parentheses change.


    As for your question about converting all functions to UDFs that use the Application.WorksheetFunctions, I cannot see how this would improve speed. You are calling the same function, but adding in the need to send the cell information to the VBE before running the function. This would only slow it down, I expect.

  12. #12
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Thanks WHizbang,

    I have changed the OFFSET formula to an INDEX Function formula as shown in your post but with a slight Modification as my list also contains the forced blank values such as "" so the Modified code is as below:

    =INDEX('Un-Sorted Cities'!$F:$F,1,1):INDEX('Un-Sorted Cities'!$F:$F,1048576-COUNTBLANK('Sorted Cities'!$F:$F)-1,1)
    Is there a way of improving this further to make it more faster...No in this case I had to use the Total No of Cells - COUNTBLANK(COLUMN) - 1 ...

    Total No of Cells - 1048576 ----- ???
    COUNTBLANK(COLUMN)..

    Warm Regards
    e4excel

  13. #13
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Counta will count a cell that evaluates to "". If the cell has a formula at all, it will count it. So there is no need for countblanks. You would only need that if, for some reason, you had truly empty cells mixed in with your range.

  14. #14
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Whizbang,

    I m getting a list created Automatically by virtue of Formulas and therefore the Formula is dragged down, where there are no values or if error then I am forcing blanks with a pair of double quotes..

    However, I need the same list to be used in a Drop-Down and therefore there are Mixed Blanks i.e Some which are Forced by the Formula and some which are Actual After the Formula Ends..

    So how do I counter the same...?

    I have changed all the formulas to Index and will now refrain using the OFFSET or rather use it sparingly...

    Please advise....Inspite of following the advice to the Tee I am still facing the Problems..'

    I wanted to ask if there are some Merged Cells which are Colored with Bigger Fonts as Column Headings and they are Merged to create Groups..

    Can this be one of the reasons to make the File Slow..

    If I have Linked Formulas in each Sheet referencing with VLOOKUPS + MATCH Functions then will it be better to break the several sheets into seperate Files..

    If I have made separate sheets which contain the data for the Drop-Down Lists then will be faster to access the Data from Different Files..

    I am actually at my Wits End now?

    Warm Regards
    e4excel

  15. #15
    Forum Expert royUK's Avatar
    Join Date
    11-18-2003
    Location
    Derbyshire,UK
    MS-Off Ver
    Xp; 2007; 2010
    Posts
    26,200

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    I usually find a PivotTable can reolace SUMPRODUCT, but it depends on the data layout
    Hope that helps.

    RoyUK
    --------
    For Excel Tips & Solutions, free examples and tutorials why not check out my web site

    Free DataBaseForm example

  16. #16
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Would you be able to post a workbook so that we can look at the structure and give more accurate and helpful advice? Remember to clean out any sensitive data.

  17. #17
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Whizbang,

    I think that will be better but I will have to remove the sensitive information and therefore will take some time but definitely will have to upload the workbook..

    But does simply merging cells and having lot of colors can make the file slow.

    Warm Regards
    e4excel

  18. #18
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Forum and Whizbang,

    Really pressed for time so will take time to upload the Workbook as need to strip the Confidential Information from the same...

    But if I break the Sheets into Individual Files, Can it Save Time.?

    Please respond asap..!

    Warm Regards
    e4excel

  19. #19
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    I do not think that font colors and cell merging can cause slowness. These are static values. Merging cells can cause errors when you try to do calculations on them, but if the merged cells are just labels and do not interfere with any formula calculations, they will not slow your workbook.

    I also do not believe splitting the workbook up will help, though I am not certain of this at all. The only way to know for sure would be to test it out. I imagine, though, that at least some of your functions will stop working. INDIRECT(), for instance, does not work on a closed workbook. Neither does VLOOKUP. SO I imagine that there would be a bit of work involved before the split workbooks would work properly and you could know for certain whether or not it is faster split.

    I imagine your problem is due to array formulas, or formulas like SUMPRODUCT. Sometimes these formulas are necessary and you just have to take the speed hit, but a lot of times it just needs a redesign of your data, and maybe a helper column or two, to speed things back up.

    Without a sample workbook I cannot say anything more than general statements.

  20. #20
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Thanks for the valuable inputs Whizbang, unfortunately I am unable to attach the WorkBook at the present moment however I will be doing that for sure over the weekend or during Dwali Holidays..

    I wish I could do the re-designing with the Helper Columns but really pressed for time..to even re-work on the thing..

    You are right, have got Multilookup Array Formulas and also SUmproduct Formulas..
    have eliminated the INDIRECT usage to the minimum and so the chances of the speed staying constant is remote...

    If I were to do the calculation on the press of a button for different sheets with VBA and then convert the same values which are arrived with the Formulas into Plain values..

    Can that save time?

    believe me I hate doing this again without attaching the file but really am in bad shape..

    Warm regards
    e4excel

  21. #21
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Sure. Working with hard values is always faster than formulas. The problem then becomes updating it. If you keep a "Formula" workbook and a "Values" workbook, and generate the "Values" from the "Formulas" I imagine this should be workable. Just label the "Values" workbook with a date and time for the values so there won't be any confusion. Also, don't edit any values in the "Values" workbook, as this would invalidate it, of course.

  22. #22
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Whizbang,

    The idea of doing this is slightly different than saving it as just values..
    There are several sheets linked to each other and then they are not required to always show formulas so what I am thinking is I can either keep a Command Button and then have them updated Automatically an immediately turn them into values now this is after I click the button or else if i keep it on change in one or two sheets is that again going to make the sheet slower..

    Like one Sheet is the inventory and has some vital plot information and the other is the Booking details where all of the information is achieved through INDEX from this sheet and then some of the information is typed manually now there are certain sheets which are linked to 2 or more sheets ...

    So doing this linking continuously via VBA and then again converting into values be a time-saver?

    Warm regards
    e4excel.

  23. #23
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    It would stop the slowness for every time there is a change. But it wouldn't necessarily mean your code would run faster. It would just keep the speed of the workbook up between times when you run your code to update the workbook.

  24. #24
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    If you have many SUMPRODUCT's, whole column references can slow thing up.
    (i.e. C:C rather than C1:C100)

  25. #25
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    =SUMPRODUCT(--($D:$D=MATCH(L$1,$L$1:$N$1,0)),($F:$F))
    Is there a way of improving the formula if i have several types of such formulas..

    The range keeps on increasing so cant keep on changing it each time so either can use the Entire Column or AFAIK its just INDIRECT..

    How can I replace the entire Columns then without affectung the speed and also maintaining the feature of not explicitly mentioning the Range.

    Warm Regards
    e4excel

  26. #26
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    To do a dynamic range, i.e. allow for growth while keeping the smallest possible range, use this formula:

    =A1:Index(A:A,Counta(A:A))

    Since Index returns a reference, you can use it on either side of the colon, to signify the start or end of a range. The above formula will give you the entire contents of the A column (limited to used cells) without resorting to Offset or Indirect. Also, even though this uses the entire column, it is not the same as using the entire column in an array formula or Sumproduct formula. Counting an entire column is MUCH quicker than processing that same column in an array formula.

    Use the above dynamic range as a named formula so that your array/sumproduct formulas will look like this:

    =Sumproduct(--(Name="Test"), --(Amount > 5000))

    Rather than

    =Sumproduct(--(A1:Index(A:A,Counta(A:A)) = "Test"), --(B1:Index(B:B,Counta(A:A)) > 5000))


    Also, using named ranges will allow Excel to calculate the size of the range only once, rather than every for every cell that uses your sumproduct formula.

    See this article for using Index to make dynamic named ranged:
    http://www.excelhero.com/blog/2011/0...ing-index.html
    Last edited by Whizbang; 10-21-2011 at 02:29 PM.

  27. #27
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    I just reread the thread and realized that using Index for dynamic formulas has already been discussed.

    So, perhaps I should stress this point from my last post:
    Quote Originally Posted by Whizbang
    Also, using named ranges will allow Excel to calculate the size of the range only once, rather than every for every cell that uses your sumproduct formula.
    Named ranges are great. They allow you to use a formula to calculate a value, and then use that same value or reference throughout the workbook. As I stated above, using named ranges prevents Excel from calculating the value or reference for every iteration of a formula. If you have copied a formula down a column, and that formula has duplicate calculations, then you need to pull those calculations out and into either a single cell or into a named range. Doing so will allow Excel to do that calculation only once, and speed up your workbook considerably.

  28. #28
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Actually, I believe that Names, in and of themselves do not speed formula exicution.

    If =myValue is in A1 and =myValue+1 is in A2, the name myValue is calculated twice, once for A1 and once for A2.

    Otherwise, names with relative referencing would not calculate correctly.
    (e.g. Name: myValue RefersTo = COUNTA(Sheet1!$B1:$D1) (note the relative row referencing))

  29. #29
    Forum Expert Whizbang's Avatar
    Join Date
    08-05-2009
    Location
    Greenville, NH
    MS-Off Ver
    2010
    Posts
    1,395

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Hmm.. That is interesting. I never noticed that. Perhaps I have always used fixed references and never thought of the opportunity of relative references in named values. I didn't think that the cell that is calling the named range would in any way affect the named range value.

    I can see that being very useful.

    Thanks.
    Last edited by Whizbang; 10-21-2011 at 04:33 PM.

  30. #30
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    As a test of the calculation of named values, I wrote this UDF, which will return 0 if trigger ="start" or will incriment every time it is calculated otherwise.
    Function myFtn(trigger As String) As Double
        Static value As Long
        If trigger = "start" Then
            value = 0
        Else
            value = value + 1
        End If
        myFtn = value
    End Function
    Then I defined a name
    Name: myNamedFunction RefersTo: =myFtn(Sheet1!$A$1)

    Then I put =myNamedFunction in B3 and B4.

    When I put "start" in A1, both cells showed 0.
    When I then put "x" in A1, B3 showed 2 and B4 showed 1
    When I put "y" in A1, B3 and B4 became 3 and 4 respectivly.

    Apparently myNamedFunction re-cacluates each time a cell calls it.

    Clearing B3:B4,
    I put =myNamedFunction+myNamedFunction in a cell.
    "start" 0
    "x" 3
    "y" 7

    So a Name is called each time it occurs in a formula, not just once a cell.

    Use of a named range won't speed up a worksheet, but using dynamic ranges will.
    Implimenting those dynamic ranges with a Name is about the only way to go if you want to be able to edit the cell in the future.

  31. #31
    Registered User
    Join Date
    11-03-2008
    Location
    India
    MS-Off Ver
    Excel 2010
    Posts
    2,521

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    Dear Whizbang AND MikeRickson,

    This thread has been so far very informative and revolutionary as I was always using the INDIRECT function and now on I can always try the INDEX function to get the Exclusive Range...

    Now I was trying to get the Range for the Sumproduct and i changed the code to this but it still gives an VALUE ERROR..

    
    =SUMPRODUCT(--(PhaseRng=MATCH(L$1,$L$1:$N$1,0)),(SQFTRng))
    
    where the PhaseRng is to be D3:D210 and then the Formula is to be used in the CELL - L2
    
    PhaseRng = =INDEX(Inventory!$D:$D,3,1):INDEX(Inventory!$D:$D,COUNTA(Inventory!$D:$D),1)
    
    SQFTRng = =INDEX(Inventory!$G:$G,3,1):INDEX(Inventory!$G:$G,COUNTA(Inventory!$G:$G),1)
    Is it because the Starting Range is D3 and the Used Range is L2..

    Warm Regards
    e4excel

  32. #32
    Forum Expert mikerickson's Avatar
    Join Date
    03-30-2007
    Location
    Davis CA
    MS-Off Ver
    Excel 2011
    Posts
    6,229

    Re: How to Speed Up the File Processing i.e Formulas Vs VBA ?

    A few things.
    1) If there are intermediate empty cells below D3 (eg D5 blank, D6 filled), using COUNTA will give odd results. A fix for that is either not having blank cells or to use MATCH(9E+318, D:D) to get the row number of the last cell in D that holds a number. MATCH("zzzzzzz",D:D) is used for text entries.

    2) If D1 or D2 is blank, COUNTA needs to be adjusted.

    3) To insure that both ranges have the same number of rows, use the same argument for the row.
    e.g. SQFTRng = =INDEX(Inventory!$G:$G,3,1):INDEX(Inventory!$G:$G,COUNTA(Inventory!$D:$D),1)

    4) Merged cells can mess things up.

    Other than those observations, I don't know enough about the data and expected results to give advise.

    OHHHH, I just noticed MATCH(L$1,$L$1:$N$1,0) will always return 1.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1