I guess that I am the exception here, since everyone else seems to love this book. I thought that the book was not very well put together. Let me give you some concrete examples:
First, I think that it has already been said that this book does not have enough OOP. That is probably true. I have been doing OOP for so long that I didn't miss the omission, but it might be a little frustrating for a novice.
There are also a lot of little things that I noticed. Much of the book seems to be a reprinting of the .NET SDK documentation. Another thing that bothered me quite a bit is that in their tables that list the methods of classes, they didn't list the return values of the methods. This may seem like a little thing, but it meant that I had to go look everything up in the SDK anyway, so after a while I ditched the book and just used the SDK.
Another thing that I noticed was some incorrect terminology. As an example, Mr. Beres refers to the System.IO.Directory class as a "static" class. I knew what he meant, because I am also a Java programmer, but that terminology is not used in VB.NET. That could be very confusing because there is no such thing as a static class in VB.NET. VB used to support static methods, but static in this sense meant something completely different than what Mr. Beres is trying to express. I believe that he meant that the class consists only of Shared methods, not that it is a static class.
Again, I don't mean to nitpick here, because there were some good things, too. I have also written books for a competing publisher, so I know how hard it is to get everything just right (trust me folks, its not as easy as it looks!), and the authors have done an admirable job. It's just that better attention to detail as well as more consideration of the audience could have made this book so much better.