This is getting stranger by the minute. Check this out: (Original function broken into two separate functions)
1) Each control gets its own function Control Source. Same errors in both columns when app runs.

2) GainLoss control made to be Unbound. Current Position formats appropriately.


3) Situation reversed, Position control made to be Unbound and GainLoss column
formats properly with its Control Source set to its function.


4) Original function broken into two independent functions.
Common Dim's global to form's code sheet.
Code:
Public Function Position()
If Nz(Me.InvstID) Then
TotalBasis = DSum("[Basis]", "Ledgers", "InvstID = " & Me.InvstID)
SharesOwned = DSum("[Shares]", "Ledgers", "InvstID = " & Me.InvstID)
' Current Position, based on current value provided by Yahoo Finance
If SharesOwned > 0 Then
Position = (Me.SharePrice * SharesOwned) - TotalBasis
Me.tbCurGainLoss = Null
Else
Position = Null
End If
Else
Position = Null
End If
End Function
Public Function GainLoss()
Dim TotalSale As Currency
If Nz(Me.InvstID) Then
TotalBasis = DSum("[Basis]", "Ledgers", "InvstID = " & Me.InvstID)
TotalSale = DSum("[NetSales]", "Ledgers", "InvstID = " & Me.InvstID)
SharesOwned = DSum("[Shares]", "Ledgers", "InvstID = " & Me.InvstID)
' Current Gain or Loss, based on recorded sale
If SharesOwned = 0 Then
GainLoss = TotalSale - TotalBasis
Me.tbCurPosition = Null
Else
GainLoss = Null
End If
Else
GainLoss = Null
End If
End Function