Just a thought, could the DoCmd operation be clearing the list box's "selection flags"? You might want to put some breakpoints before and after that line to check the list's status.
If that is the problem, the simplest solution would be to make var_Item a string array, store each checked item in that array in the loop you have (with a counter variable, of course, incremented for each one), then have a second loop that runs if the counter is greater than zero to execute the DoCmd for each item in var_Item.
On the other hand, RuralGuy may have a point; one of the examples for the ItemsSelected property is:
Code:
Sub AllSelectedData()
Dim frm As Form, ctl As Control
Dim varItm As Variant, intI As Integer
Set frm = Forms!Contacts
Set ctl = frm!Names
For Each varItm In ctl.ItemsSelected
For intI = 0 To ctl.ColumnCount - 1
Debug.Print ctl.Column(intI, varItm)
Next intI
Debug.Print
Next varItm
End Sub
--which seems to indicate you might need to make that code something like:
Code:
For Each vItem In Me.MyListbox.ItemsSelected
var_Item = Me.MyListbox.Column(0, vItem)
DoCmd.RunSQL "insert into tbl_InvoiceLink (Invoice_ID, Inv_DP_ID)
values (" & int_NewInvoice & ", " & var_Item & ")"
Next vItem
(I'd avoid variable names like Item that could be reserved VBA words.)