+ Reply to Thread
Results 1 to 28 of 28

Beginner to User Defined Data Types (Custom Type, UDTs)

  1. #1
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Question Beginner to User Defined Data Types (Custom Type, UDTs)

    I've decided to learn custom types (I haven't learnt classes yet so I figured I should learn this first). So far I've read this tutorial http://sourcedaddy.com/ms-excel/crea...ata-types.html

    The problem is that I can't see anything exceptionally useful about user defined types *; so in case I am overlooking something big, I thought I'd ask the experts.

    So how about it? What are the pros and cons that newbies to UDTs should know?






    * (using the example on URL provided) I admit that its neat that you can group related variables together but if you named the variables with similar starting prefixes instead of using a custom type that would achieve almost the same result e.g.
    Please Login or Register  to view this content.
    *******************************************************

    HELP WANTED! (Links to Forum threads)
    Trying to create reusable code for Custom Events at Workbook (not Application) level

    *******************************************************

  2. #2
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Add 1 Pro = Intellisense is applied when writing code with custom types.

    Anything else?

  3. #3
    Forum Guru Kyle123's Avatar
    Join Date
    03-10-2010
    Location
    Leeds
    MS-Off Ver
    365 Win 11
    Posts
    7,238

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    tbh I don't usually bother with UDTs, classes are much more useful. However they can be handy when dealing with data with multiple properties and you can pass them around as parameters:
    Please Login or Register  to view this content.

    More commonly, you'll see them used a lot in APIs

  4. #4
    Forum Guru Izandol's Avatar
    Join Date
    03-29-2012
    Location
    *
    MS-Off Ver
    Excel 20(03|10|13)
    Posts
    2,581

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    if you named the variables with similar starting prefixes instead of using a custom type that would achieve almost the same result
    I do not understand what this means. Naming the variables in such a way does not achieve anything. Further if you do not see a difference between a UDT and naming variables I do not think you will like classes.

  5. #5
    Forum Guru Andy Pope's Avatar
    Join Date
    05-10-2004
    Location
    Essex, UK
    MS-Off Ver
    O365
    Posts
    20,430

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    The is nothing exceptional about UDTs. Just as there is nothing exceptional about arrays for dealing with multiple items

    Please Login or Register  to view this content.
    Having said that both can make dealing with certain data much more straightforward.

    I use them when simply storing information, such as a bunch of parameters. If I need to manipulate values or provide related method/function then obviously I step up to a class object.
    Cheers
    Andy
    www.andypope.info

  6. #6
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Izandol View Post
    I do not understand what this means. Naming the variables in such a way does not achieve anything.
    Naming the variables in such a way achieves better readability of code.

    I've written a better example below.
    I would rather work with Sub Example1 instead of Sub Example2. The "Car_" prefix makes the code easier to read and easier to note which variables are directly related to "Car"
    Sub Example3 (using UDTs) has a slight advantage over Sub Example1 because of the use of Intellisense when writing the code.
    Please Login or Register  to view this content.

    Quote Originally Posted by Izandol View Post
    Further if you do not see a difference between a UDT and naming variables I do not think you will like classes.
    I do see a difference between using UDTs variables and global variables. I don't see any major advantage.

    Actually I have a feeling I will love classes (once I get round to learning them). Certain features of them sound extremely useful.
    Last edited by mc84excel; 11-19-2013 at 08:23 PM. Reason: edit sentence to clarify what I meant

  7. #7
    Forum Guru Izandol's Avatar
    Join Date
    03-29-2012
    Location
    *
    MS-Off Ver
    Excel 20(03|10|13)
    Posts
    2,581

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    If you see the difference then I still do not understand why you say this:
    if you named the variables with similar starting prefixes instead of using a custom type that would achieve almost the same result
    One thing is not the same as the other. A UDT groups variables into one entity - something like, but not as useful as, a class with just member variables. As Kyle said you can then pass one argument to a routine instead of many. Naming variables with a prefix does not achieve anything like this.

  8. #8
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Thanks for the explanation Kyle. +1

    Quote Originally Posted by Kyle123 View Post
    they can be handy when dealing with data with multiple properties and you can pass them around as parameters
    True. On the other hand, I could use global level variables to pass data around instead of using a UDT could I not? As for the data with multiple properties - instead of using a UDT with 5 properties (or whatever they are called in UDTs), I could use 5 global variables.

    Quote Originally Posted by Kyle123 View Post
    tbh I don't usually bother with UDTs, classes are much more useful.
    I'm beginning to think of skipping UDTs and jump straight to classes. From what I've read/heard, they are much more useful!

  9. #9
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Izandol View Post
    A UDT groups variables into one entity - something like, but not as useful as, a class with just member variables.
    I agree that the logical grouping is nice. However see my reply to Kyle. I could use 5 global level variables (with a nice naming prefix ) to pass data instead of a UDT containing 5 variables. Using 5 variables instead of a UDT would mean I wouldn't need to declare the UDT in every sub that requires the variables.


    The biggest disadvantage that I see to UDTs is that they don't hold their data. If I use global level variables, they (usually) hold their data from sub to sub. With a UDT, I would need to set their values every time before I can use them. Please correct me if I am wrong on this point.


    UPDATE: Thanks to demo code provided by Andy Pope, I went back and tested this in a current project. Both assumptions I made in this reply are wrong. My apologies.
    Last edited by mc84excel; 11-19-2013 at 10:44 PM.

  10. #10
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Thanks for the explanation Andy Pope +1
    Quote Originally Posted by Andy Pope View Post
    The is nothing exceptional about UDTs.
    That's what I'm coming to!

    Quote Originally Posted by Andy Pope View Post
    If I need to manipulate values or provide related method/function then obviously I step up to a class object.
    Classes! I must learn Classes!

  11. #11
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    UPDATE:This summary is outdated. See the last post for the latest version.

    I was looking for advantages of UDTs but the more I hear about them, the less I like them.

    Disclaimer: I haven't tested all of the below myself. If any assumptions below are incorrect, please let me know so I can update the thread to help other new users to UDTs


    DISADVANTAGES:
    1. Can't hold values after sub ends (Unlike global variables) (PROVEN FALSE See post #12)
    2. Need to declare the UDT in every sub that makes use of the UDTs elements (PROVEN FALSE See post #12)
    3. Can't declare new instances of a Type (Unlike Redim Preserve on Arrays) (FALSE. See posts #12 & #18)
    4. Speed/Performance impact (TRUE. But.... Minor overhead. Nothing to worry about. See post #18 for demonstration)
    5. Difficult to use in an Add-In? (e.g. http://stackoverflow.com/questions/1...-from-an-addin )
    6. Difficult to pass in Arrays? (e.g. http://www.vbaexpress.com/forum/show...r-Defined-Type)
    7. Difficult to determine whether value assigned to UDT element or not (TRUE. But.... No more than a variable of any other type)
    8. No control over values assigned to elements of a Type (TRUE Use Classes instead)
    9. Can only hold variables, can't process code (TRUE. But... But neither can standard variables)


    ADVANTAGES:
    1. Can logically group variables together
    2. Can have multiple elements passed by one variable (Arrays do too. But it's easier to read Car.Make instead of varArray(5))
    3. Intellisense when writing code
    Last edited by mc84excel; 12-03-2013 at 07:36 PM. Reason: Updated to reflect new information

  12. #12
    Forum Guru Andy Pope's Avatar
    Join Date
    05-10-2004
    Location
    Essex, UK
    MS-Off Ver
    O365
    Posts
    20,430

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Disadvantage 1. UDT can be public just like any other variable. You just need to scope them in the correct place.

    Please Login or Register  to view this content.
    Disadvantage 2. Again depends on your scope definition

    Disadvantage 3. Incorrect, you can redim and redim preserve
    Please Login or Register  to view this content.
    Disadvantage 4. I don't see the use of udt against normal variables having a performance hit. Do you have any evidence of this?

    Disadvantage 5. Don't see why, you need to clarify your statement about why they are hard to use in addin.

    Disadvantage 6. No they are not.

    extends previous code example.
    Please Login or Register  to view this content.
    Disadvantage 7. no more than stanadard variables

  13. #13
    Forum Guru Izandol's Avatar
    Join Date
    03-29-2012
    Location
    *
    MS-Off Ver
    Excel 20(03|10|13)
    Posts
    2,581

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Alas I think you are still confused.

    UDT = User Defined Type

    A UDT is not a variable, although a variable can be declared as a UDT. You should compare a UDT with String, Long, Double and so on and not with variables. A variable that is declared as a UDT can have the same scope as any other variable. It is difficult to answer your points regarding disadvantages since you do not provide a comparison but I may say the following:

    1. & 2. I have just discussed
    3. I do not know what you mean by this statement?
    4. Why have you declared this a disadvantage? What do you think the performance impact to be?
    5. Why is a UDT hard to use in an add-in?
    6. You may pass UDTs in array as any other data type.
    7. I do not think this any more difficult than testing a variable
    8 & 9 I may agree with.

  14. #14
    Forum Guru Kyle123's Avatar
    Join Date
    03-10-2010
    Location
    Leeds
    MS-Off Ver
    365 Win 11
    Posts
    7,238

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by mc84excel View Post
    On the other hand, I could use global level variables to pass data around instead of using a UDT could I not? As for the data with multiple properties - instead of using a UDT with 5 properties (or whatever they are called in UDTs), I could use 5 global variables.
    No, no, and a thousand times no. To take your logic to its natural conclusion, why even have functions at all? You wouldn't need them if everything is a global variable.

    Scope should be kept as small as possible, have a read here about scope http://www.vb6.us/tutorials/variable-scope, then here (http://www.xtremevbtalk.com/showthread.php?t=201646) about why global variables (as opposed to constants) are bad, or at least why they should really only be used as a last resort.

    Quote Originally Posted by mc84excel View Post
    I'm beginning to think of skipping UDTs and jump straight to classes. From what I've read/heard, they are much more useful!
    I think you should cover the basics first and understand good programming practice, without understanding scope, I think public and private members of classes will completely pass you by.

  15. #15
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Kyle123 View Post
    To take your logic to its natural conclusion, why even have functions at all? You wouldn't need them if everything is a global variable..
    I'm afraid I'm having trouble following that logic. Functions return a value (usually as a result of a calculation). Variables can only retain a value.

    Quote Originally Posted by Kyle123 View Post
    Scope should be kept as small as possible, have a read here about scope http://www.vb6.us/tutorials/variable-scope, then here (http://www.xtremevbtalk.com/showthread.php?t=201646) about why global variables (as opposed to constants) are bad, or at least why they should really only be used as a last resort..I think you should cover the basics first and understand good programming practice, without understanding scope, I think public and private members of classes will completely pass you by.
    You don't need to convince me on the coding practice of keeping scopes as small as possible. That is something that I do practice when coding.
    Having said that, I do occasionally use global (well project level ) variables when I need to hold values that will be reused in the same WB session.
    Last edited by mc84excel; 11-19-2013 at 10:41 PM. Reason: Removed example since proven to be incorrect

  16. #16
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Andy Pope View Post
    ...
    Appreciate your detailed myth busting of UDTs disadvantages. +1
    At this rate, I may end up using them after all!

    1. (Tests code provided). :eep: Whoa. It's now working! Now why didn't it work in my current project? Will go back, test and report back.
    2. As above
    3. (dazed) That's incredible. Then what did Chip Pearson mean? See: http://www.cpearson.com/excel/classes.aspx (1/3 down the page - where he describes 3 disadvantages to Type)
    4. I was reading about UDTs having a slight impact on code performance. It involved a test that used LenB in Immediate window to measure the size of variables. But I can't remember where I read it and a quick google can't find it again
    5. This? http://stackoverflow.com/questions/1...-from-an-addin
    6. I have come across a few web pages re UDTs and arrays. Here's one: http://www.vbaexpress.com/forum/show...r-Defined-Type
    7. I concur.

    UPDATE: 1 & 2 tested in current project. Working fine now. (No idea why it played up previously)
    Last edited by mc84excel; 11-19-2013 at 10:40 PM.

  17. #17
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Izandol View Post
    Alas I think you are still confused.
    I think I am too Which is why I started this thread.

    Re the points - I have updated post #11.

  18. #18
    Forum Guru Andy Pope's Avatar
    Join Date
    05-10-2004
    Location
    Essex, UK
    MS-Off Ver
    O365
    Posts
    20,430

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    There will be a hit in memory allocation

    Please Login or Register  to view this content.
    reports
    UDT 20
    KM 4
    MAKE 0
    MODEL 0
    PRICE 8

    KM 4
    MAKE 0
    MODEL 0
    PRICE 8
    I read the following as being unless you dimension prior to run time you will have to ReDim which in itself has a performance hit. Not that you can not do it.
    You must declare all the variables you'll need at design time or you need a dynamic array that is resized with Redim Preserve, an awkward and expensive operation.
    The other 2 points stand. because you are only assigning values you can not control what values are used or perform additional operations on the value.

  19. #19
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Andy Pope View Post
    ...
    Thanks for testing I have updated post #11 to record this.

  20. #20
    Forum Guru Izandol's Avatar
    Join Date
    03-29-2012
    Location
    *
    MS-Off Ver
    Excel 20(03|10|13)
    Posts
    2,581

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Why do you update an earlier post and remove the logic flow of this question? It is like programming with many Goto statements now.

  21. #21
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Talking Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Most of the disadvantages of UDTs (post #11) have now been proven false (Thanks to Andy Pope). At this point, I'm now convinced of the usefulness of UDTs.

    I won't close this thread yet as there are two "disadvantages" that have not been proven either way. (Disadvantage #5 & #6) I'd be interested if anyone can prove/disprove these.

  22. #22
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Izandol View Post
    Why do you update an earlier post and remove the logic flow of this question? It is like programming with many Goto statements now.
    I did consider doing a new post to record an updated list of advantages & disadvantages - removing the points now proven false - but if I did that, it would throw out the current numbering used throughout the replies in this thread. This would be more confusing for the reader then simply updating the same post (post #11) with new information.

    Once disadvantage #5 & 6 have been solved one way or the other, I will do one last post which will summarise the advantages/disadvantages to using UDTs and then close the thread.

  23. #23
    Forum Guru Izandol's Avatar
    Join Date
    03-29-2012
    Location
    *
    MS-Off Ver
    Excel 20(03|10|13)
    Posts
    2,581

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    It would be simple to provide the updated #11 as a new post rather than change the original. I do not know what your actual questions are for points 5 and 6 or maybe I must Goto another forum to figure this out? (perhaps I Resume Next question instead)

  24. #24
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Quote Originally Posted by Izandol View Post
    It would be simple to provide the updated #11 as a new post rather than change the original. I do not know what your actual questions are for points 5 and 6 or maybe I must Goto another forum to figure this out? (perhaps I Resume Next question instead)
    LOL

    (I prefer thinking of the post references as calls to other subs rather than GoTos! )
    Last edited by mc84excel; 11-20-2013 at 10:46 PM.

  25. #25
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    UPDATE:This summary is outdated. See the last post for the latest version.

    Updated summary below. As requested by Izandol.


    DISADVANTAGES:
    1. Can't hold values after sub ends (FALSE)
    2. Need to declare the UDT in every sub that makes use of the UDTs elements (FALSE)
    3. Can't declare new instances of a Type (Unlike Redim Preserve on Arrays) (FALSE)
    4. Speed/Performance impact (TRUE. But.... Minor overhead. Nothing to worry about)
    5. Difficult to use in an Add-In? (e.g. see http://stackoverflow.com/questions/1...-from-an-addin )
    6. Difficult to pass in Arrays? (e.g. see http://www.vbaexpress.com/forum/show...r-Defined-Type)
    7. Difficult to determine whether value assigned to UDT element or not (TRUE. But.... No more than a variable of any other type)
    8. No control over values assigned to elements of a Type (TRUE Use Classes instead)
    9. Can only hold variables, can't process code (TRUE. But... But neither can standard variables)


    ADVANTAGES:
    1. Can logically group variables together
    2. Can have multiple elements passed by one variable (Arrays do too. But it's easier to read Car.Make instead of varArray(5))
    3. Intellisense when writing code
    Last edited by mc84excel; 12-03-2013 at 07:36 PM.

  26. #26
    Forum Guru Kyle123's Avatar
    Join Date
    03-10-2010
    Location
    Leeds
    MS-Off Ver
    365 Win 11
    Posts
    7,238

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    6. False, It's nothing to do with arrays particularly, the message means what it says on the tin, you can't coerce a UDT into a Variant datatype like that, consider:
    Please Login or Register  to view this content.
    The biggest disadvantage here is that you can't put a variable of type UDT into a collection, this is the killer for me.

    Re using arrays, you can always just use an enum to make it more readable and easier to manage:
    Please Login or Register  to view this content.
    To be honest though, I'd normally just use a class since they're easy to manage, can be stuffed in a collection and give you more control

  27. #27
    Forum Guru Kyle123's Avatar
    Join Date
    03-10-2010
    Location
    Leeds
    MS-Off Ver
    365 Win 11
    Posts
    7,238

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Very simple (and lazy) example using classes:

    Class Car:
    Please Login or Register  to view this content.
    Class Cars:
    Please Login or Register  to view this content.
    Normal Module:
    Please Login or Register  to view this content.

  28. #28
    Valued Forum Contributor
    Join Date
    08-29-2012
    Location
    In lockdown
    MS-Off Ver
    Excel 2010 (2003 to 2016 but 2010 for choice)
    Posts
    1,766

    Re: Beginner to User Defined Data Types (Custom Type, UDTs)

    Updated summary below. Only Disadvantage #1 is not proved/disproved.


    ADVANTAGES:
    1. Can logically group variables together
    2. Can have multiple elements passed by one variable (Arrays do too. But it's easier to read Car.Make instead of varArray(5))
    3. Intellisense when writing code


    DISADVANTAGES:
    1. Difficult to use in an Add-In? (e.g. see http://stackoverflow.com/questions/1...-from-an-addin )
    2. Speed/Performance impact (TRUE. But.... Minor overhead. Nothing to worry about)
    3. Difficult to determine whether value assigned to UDT element or not (TRUE. But.... No more than a variable of any other type)
    4. Can only hold variables, can't process code (TRUE. But... But neither can standard variables)
    5. No control over values assigned to elements of a Type (TRUE Use Classes instead)


    MYTHS:
    1. Can't hold values after sub ends (FALSE)
    2. Need to declare the UDT in every sub that makes use of the UDTs elements (FALSE)
    3. Can't declare new instances of a Type (Unlike Redim Preserve on Arrays) (FALSE)
    4. Difficult to pass in Arrays? (FALSE)
    Last edited by mc84excel; 11-24-2013 at 06:23 PM.

+ Reply to Thread

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Is it possible to combine 2 User Defined Types?
    By tom.hogan in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 03-11-2012, 09:08 AM
  2. User-Defined Data Types
    By CrazyFileMaker in forum Excel Programming / VBA / Macros
    Replies: 6
    Last Post: 04-14-2009, 05:23 AM
  3. Editing User Defined Lists - Beginner
    By Julesy9 in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 10-31-2006, 08:23 AM
  4. [SOLVED] Setting up a Custom type, User-defined, Default Chart
    By Kurt in forum Excel Charting & Pivots
    Replies: 0
    Last Post: 12-22-2005, 03:45 PM
  5. [SOLVED] How do I share User-Defined Custom Chart Types in Pivot Charts?
    By jantz_question in forum Excel Charting & Pivots
    Replies: 0
    Last Post: 09-20-2005, 09:05 AM

Tags for this Thread

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