Note that there's an overload of the draw function that takes the range of vertices to draw from a VertexBuffer. That allows you to change what's drawn without touching the vertex buffer; remember that they are stored in VRAM and that modifying them is an expensive operation (data goes back and forth between system RAM and VRAM, the graphics pipeline may be flushed, etc).