Well...

I'm a huge fan of John Walkenback's Power Programming With VBA series. You can find a link to that book (among others) here: http://www.excelguru.ca/content.php?213-Books

If you really want to learn though, you need more than just a book. You can't get better learning that working on your own projects on a forum, and by trying to answer others questions as you start to get more comfortable. With the basics from a book and challenging yourself with real world problems your knowledge will expand very quickly.

Personally, I learned VBA by recording macros first, then found a forum and began asking a LOT of questions, then got John's 2002 Power Programming book, then started trying to give back in forums. Each time I hit a forum my knowled increased exponentially.