Maybe you have a better way to do it?

local player = script.Parent.Parent.Parent

local XP = player:WaitForChild("XP")

XP.Changed:connect(function()
	if XP.Value < 200 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, XP.Value,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 200 XP"
		return;
	elseif XP.Value < 201 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, 0,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 400 XP"
	end
	if XP.Value < 400 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, (XP.Value-200),0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 400 XP"
		return;
	elseif XP.Value < 401 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, 0,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 800 XP"
	end
	if XP.Value < 800 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, (XP.Value-600),0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 800 XP"
		return;
	elseif XP.Value < 801 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, 0,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 1,600 XP"
	end
	if XP.Value < 1600 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, (XP.Value-1400),0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 1,600 XP"
		return;
	elseif XP.Value < 1601 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, 0,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 3,200 XP"
	end
	if XP.Value < 3200 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, (XP.Value-3000),0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 3,200 XP"
		return;
	elseif XP.Value < 3201 then
		script.Parent.Frame.Frame.Frame:TweenSize(UDim2.new(0, 0,0, 10),"Out","Quad",.5)
		script.Parent.Frame.TextLabel.Text = XP.Value.." / 6,400 XP"
	end
end)