Okay, this code works. With the following caveat: There is only one subreport. And I'm using a .RPT file.
Also, in my example, the parameter being prompted for in the subreport is parameter #2. Parameter #1 is the linked field between the main report and the subreport. For example, you could have a main report linked to a subreport by state code, then you could add a parameter in the subreport for zip code and pass that through VB. Not that it's an example that is very practical, but...
Here goes...
Dim Report As CRAXDRT.Report
Dim SubReport As CRAXDRT.Report
Dim App As CRAXDRT.Application
Dim Sections As CRAXDRT.Sections
Dim Section As CRAXDRT.Section
Dim RepObjs As CRAXDRT.ReportObjects
Dim SubReportObj As CRAXDRT.SubreportObject
Dim n As Integer
Dim i As Integer
Set App = New CRAXDRT.Application
Set Report = App.OpenReport(...)
Report.Database.LogOnServer ...
Set Sections = Report.Sections
For n = 1 To Sections.Count
Set Section = Sections.Item

Set RepObjs = Section.ReportObjects
For i = 1 To RepObjs.Count
If RepObjs.Item(i).Kind = crSubreportObject Then
Set SubReportObj = RepObjs.Item(i)
Set SubReport = SubReportObj.OpenSubreport
SubReport.ParameterFields(2).AddCurrentValue "60601"
End If
Next i
Next n
CRViewer1.ReportSource = Report
CRViewer1.ViewReport