You can change any card using code similar to this.
Dim crd As CDI.IndexCard3D.Card = iC3D1.IndexCards[3] 'this will grab the 4th card in the list of cards crd.ImagePath = "c:\....\myimage.jpg" iC3D1.Invalidate()
The crd object contains everything about the card you are modifying including Text, BackImage etc.
This can happen if you try to retrieve a card that is past the last card loaded. If you only had two cards and you tried to read the 3rd one this error would occur.
If you are not using the CacheLoading option you also need to call
iC3D1.IndexCards.LoadTexturesToMemory()
before trying to overwritte a card with a different image. The reason is, the cards have not been written to video memory yet. If you try to replace the card, it tries to update the video memory of where the card should be, but since we didn't load it yet it will cause an error.