While most everyone will take US$$ there are a few exceptions and one of them would be SkyTrain or the bus that utilize automated ticket machines and you will need Cdn cash. The SkyTrain booths do take credit and debit cards, so that would be one way around it, but the bus is strictly cash. Also if you want to buy a day or multi-day pass at one of the vendors, I'm sure they will take US.
Then again, as I've suggested before..........just hit up the ever present ATM's for a some cash.........minimum $20. Other than an ATM user fee you will get a good exchange rate for that day. Then you have some local coin for use when you need it. Or you can go into any bank..........also ever present in Vancouver
and exchange your US money at the rate of the day. Depending on how much money you change it will be a 2 - 4 cent difference from the prevailing posted exchange rate, but no user fee.
The smaller the vendor you try to exhange money with, the more they are going to charge you for exchange. Remember they have to take the US money to their bank and get dinged the 2 - 4 cent exchange fee.
So now forgive me for this next thing..........but I think it is only courteous to use the money of the country you are in rather than put it on the locals to figure it out for you by keeping up with exchange rates and being your bank away from home. That's part of traveling in another country.
JMHO Heather