Tween Camera when Camera Subject changes

I am trying to find a way to tween the client camera when CameraSubject changes.
Does any one know a way to go about doing this?
Should I be using view port frames instead?

My current local script is

local camera = game.Workspace.Camera
local BaseTable = game.Workspace.Bases:GetChildren()
local function ChangeView(ViewNo) 
	camera.CameraSubject = BaseTable[ViewNo] 
end

--[[Below is part of script that detects when a gui
is pressed and calls the ChangeView function 
]] 

Every thing works fine. Just that, how would I go about with Tweening the camera. As in like erm, which part of the script should I insert it in?

Edit: The thing is, it just instantly goes to view the next part.

I think you should first tween the camera to the object then change the CameraSubject.

I will keep that in mind. Just another question, what CameraType should I use? I am currently using Follow while doing this.

Moving camera to somewhere requires you to use Scriptable type or else it’d stuck in one place. (If only you’re planning to tween the camera’s CFrame yes)