As @paxdiablo said, there is no problem in having a function call a sub and in so doing pass on its arguments on to the sub. But, you seem to want to bypass explicity passing the arguments from the function to the sub without having them listed explicitly as parameters to the sub. You can't do this with ordinary local variables in the sub, but you can do it with global variables.
In VBA these are called either Public or Module Level variables and are declared outside of any sub or function. For example:
Dim Table As Range
Dim FieldNames As Range 'module level variables
Function BuildpgSQL(tbl As Range, fldnames As Range)
Set Table = tbl
Set FieldNames = fldnames
'do stuff
End Function
Sub AnotherSub()
MsgBox "Table = " & Table.Address & ", & FieldNames =" & FieldNames.Address
End Sub
Sub test()
BuildpgSQL Range("A1"), Range("A2:B2")
AnotherSub
End Sub
When test is run and invokes AnotherSub, the latter sub is able to correctly report the ranges that had been passed to the function.
I declared the two variables outside of any sub or function definition. Then -- any change that any sub/function in the module makes to those variables can be read by any other sub/function in the module. This makes those variables global variables in the module. These are often useful in VBA, but should be used sparingly since they tend to make your code less modular and hence more difficult to debug.
You can also use Public variables to get another type of global variable. They would also be defined outside of any module/sub but with the keyword Public rather than Dim. This would allow the variables to be accessible anywhere in the project, including other modules. Here is a nice article discussing scope in VBA.
Finally, note that I used both global variables and similarly named argument parameters to the function. This was to better match your specific question. In practice, it would make more sense to get rid of the middleman and eliminate those function parameters. Whatever code calls the function can first set the public variables (if they are not already set) and then invoke the function.