Yes...ish.
You can't do it directly, as the column names are parsed at a higher level, so you can't directly pass a variable.
But...you can do it if you build up a string:
DECLARE @COLNAME NVARCHAR(MAX)
SET @COLNAME = 'MyColumn'
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = 'SELECT ' + @COLNAME + ' FROM MyTable'
EXEC (@SQL)
This selects the column, but INSERT is the same procedure