Remove the single quotes.
UpdateQuery = "UPDATE Teo SET " & TextBox2.Text & " = @DEBIT_HEAD WHERE TEO_NUM = @TEO_NUM"
Or use square brackets instead of the single quotes:
UpdateQuery = "UPDATE Teo SET [" & TextBox2.Text & "] = @DEBIT_HEAD WHERE TEO_NUM = @TEO_NUM"
In order to avoid SQL injection one have to prepare the sql statements and inject the values of the input parameters into them. The preparation process ensures the proper escaping of the user iput. It means that the user input values, whichever they are, will be treated as normal strings. Yes, even if they are some sql specific codes.
Here is a tutorial about prepared statements in vb.net.
Your code is almost safe regarding SQL injection, as I see you prepare your statement first. But, as more users kindly pointed-out, your sql statement is still at risk of SQL injection, given the fact, that you are using a customized column name, which a user can assign by using a text box value. Normally, such a situation should be completely avoided. If not, then you can use a form control suitable to be properly customized only by you, the developer. Like a combobox, or a readonly textbox. If this is not possible, then the user input defining the column name must be properly filtered, sanitized and escaped.