The problem with using the ControlSource is that it's a two-way street, so anything the user enters into the TextBox once the userform's active, is also reflected in the "Linked" cell (which is the behaviour you describe).
There are may ways around this. Here are just two ideas:
1. If you don't actually need a textbox (i.e. you only want to display data - not edit it) I always find a label is the best bet - using the label's "Caption" property.
a. Put a new label on your userform - make sure it's long enough to take the text from your cell.
b. Use the userform's _initialize event to set the label's caption:
Code:
Private Sub UserForm_Initialize()
Me.Label1.Caption = Sheets("Price_List").Range("G12").Value
End Sub
2. If you really need a textbox (not sure why) then get rid of the ControlSource entry, and set the TextBox's value with the _initialize event - as before:
Code:
Private Sub UserForm_Initialize()
Me.TextBox1.value = Sheets("Price_List").Range("G12").Value
End Sub
.......change the textbox name to suit.
Finally, you could have the userform permanently visible, then reflect any changes using the sheet's _change event.
Standby for that..........