Is this script being run on the server and not the client? The script should be run on the client if you are moving GUI elements.
You are moving the frame inside the StarterGui when you should be moving the frame inside the PlayerGui.
This should be:
local Player = game:GetService("Players").LocalPlayer
local ShopFrame = Player.PlayerGui.ShopScreenGui.ShopFrameGui
When a player joins the game everything inside the StarterGui is replicated to the player’s PlayerGui.
Any changes to the StarterGui are not replicated to the client unless the client joins the game after the change was made. To change a client’s GUI on the server you have to use RemoteEvents.