If you have already had some programming experience (say C++ or Java) VBA shouldn't take more than a week to get a good understanding of.
Agreed. In comparison to something like C++, VBA is fairly primitive. There is very little memory management involved, there is no polymorphism, operator overloading, and a whole other slew of things you won't need to worry about. It's less powerful, but also simpler as a result.
If you want to dig deeper and learn a lot of the mechanics of the language and fully understand how things work I would give yourself at least a year or 2 of working with it on a daily basis.
You learn a lot when need arises. Your questions morph from "Can this be done?" into "
How can this be done?" and you learn to find solutions. Over time, you refine them.
I would suggest creating a toolbox (store it in your personal macros workbook), and write generic VBA-based tools that simplify your Excel usage. I started doing this about 10 years ago, when I first got serious with VBA. Eventually, I found that some of those older tools are still extremely useful, others needed to be made more efficient and/or flexible, and yet others are not even necessary because the functionality is built into Excel.
Don't get stuck at recording and editing macros. Read about programming principles and try to apply it within macros/apps you make. VBA is quite limited in comparison to .NET C# for instance but still most of the work any programmer wants to do using Excel as front end can be achieved with pure VBA.
Also, I would say learn when VBA is not necessary. In other words, do your best not to reinvent the wheel when Excel already does it. Then again, it might be good exercise to create some of the things Excel does: text-to-columns, mail merge, recreating any built-in Excel functions, conditional formatting, consolidation, etc.