First, the function you have uses a cursor/while loop and it's going to be relatively slow. See the following for a couple of tips how to do it another way while avoiding some common pitfalls...
http://www.sqlservercentral.com/articles/Test+Data/61572/
Second, to make the column a parameter would require the use of Dynamic SQL. That requires an EXEC in one form or another and only extended stored procedures can be executed with EXEC from within a function. In English, what you ask cannot be done in a function.
--Jeff Moden
Change is inevitable... Change for the better is not.