Maybe you have forgotten to set it to be a global object?
About the layout switching, it would help if you post a screenshot of your game/project so i could be more specific with the help.
If its a 4 way layout switching, like some platformers, ie, up, down, left and right, i'd say using an Array that tracks in which cell you are now and then move to the layout according to the player's position is the best way. if your game is like that and you need an example, say so and i'll provide a Capx.
Generally speaking, if you have a multiple, varied number of rooms entrances per layout (More than 4 for each direction) you can't escape having to at least designate which gate leads to which layout.
The easiest way i can think of is to have a family of "gates", have an instance variable for that family that's called "Layout" and manually go through each of the gates and set its instance variable to the Layout name it links to. (You will only have to do it once, and upon every new gate you create)
Then a simple event of When overlapping "Gates" go to Layout str(Gates.Layout) will launch the linked layout. that event will be valid throughout the entire project, so long as you remember to put every gate into that family and to indicate its variable/linked layout.
I have created an example. overlap a gate and press the up button to move to that room/layout
I also made it so that the player will get positioned to the doorway that leads to the layout he came from.