1: don't really uderstand the text problem you are having, but maybe go one more step unbound:
dim strSQL as string
strSQL = "SELECT tblModelInfo.ForeignKey, tblModelInfo.PartNum " _
& "FROM tblModelInfo " _
& "WHERE (((tblModelInfo.ForeignKey)= " & [forms]![frmAddModMInfo]![ForeignKey] & ")) " _
& "ORDER BY tblModelInfo.PartNum;"
myCombo.rowsource = strSQL
or if FK is string
= '" & [forms]![frmAddModMInfo]![ForeignKey] & "')) "
then assuming (in design view) myCombo has
.boundcolumn: 2 ...i guess you want PN since you already know FK (why select FK at all??)
...you should see your PN text
dim intIx as integer
intIx = myCombo.listindex
NB in designview most list/combo things are 1-based, but in code they are 0-based. code for .listindex returns 0,1,2,3,4....
3: (i know you didn't ask 3)
maybe counting thru the combo is the way to go, but you've done an ORDER BY so take care that things match up the way you expect.
with designview .boundcolumn = 2 (the PN) you can get PN directly
SELECT aa, bb, cc FROM PNdetail WHERE PN = " & myCombo & ";"
another poss to consider if you don't have too much data in the PN detail:
since you are already querying to fill the combo and you expect only a few (you say 10) records, why not stuff the other PN data you want into the combo with the same query:
strSQL = "SELECT tblModelInfo.ForeignKey, tblModelInfo.PartNum, aa, bb, cc " _ ...etc as before
.columnwidths = 0cm;3cm;0cm;0cm;0cm
now you already have the PN data hidden away in the combo
aaBox = myCombo.column(2) '0-based index in code)
bbBox = myCombo.column(3) 'etc...
you shouldn't see any difference in a local JET db, but if you were talking to a server you save a trip to the server to get the PN details (at the expense of a bigger download. the saved trip is often worth more than the bigger download - depends on how much PN-detail data there is, plus network congestion vs server congestion considerations)
currently using SS 2008R2