Camera Switch only works in Start()

I have declared these two GameObject varibles at the beginning of my script.
and then at start i call them and they work. but later on in the script at a diffrent function it gives me an error

"The variable Camera2 of ‘script name’ has not been assigned.

why would it work in the start function but not in another?

public GameObject Camera1;
public GameObject Camera2;

void Start(){ //works here
		Camera1.camera.active = true;
		Camera2.camera.active = false;		
	}

void UserNotFound() //does not working here
	{
		UnityEngine.Debug.Log ("Did Not Find User");
		Camera2.camera.active = true;
		Camera1.camera.active = false;

	}

This script is working fine:

using UnityEngine;
using System.Collections;

    public class demo : MonoBehaviour {
    
    	public Camera a;
    	public Camera  b;
    	// Use this for initialization
    	IEnumerator Start () {
    		a.enabled= false;
    		b.enabled = true;
    		yield return new WaitForSeconds (2f);
    		newcam ();
    	}
    	// Update is called once per frame
    	void newcam () {
    	a.enabled = true;
    	b.enabled = false;
    	}
    }

here is my script… maybe im totaly messing something up. When it goes to UserNotFound() thats when i want the camera to switch to Camera2. but it just gives me the error about need to assign the Camera2 variable.

using UnityEngine;
//using UnityEditor;
using System.Collections;
using System;
using System.IO;
using System.Text;

public class LoginScreen : MonoBehaviour {
static string username;
static string password;
public string userNameText;
public string passwordText;
public string myStyle = "";
public bool isQuit = false;
public bool isLogin = false;
public bool isTryAgain = false;
public bool createNewAccount = false;
static string fileNameCheck = "Users.dat"; 
static string dir = Application.dataPath + "/Data/"; 
static string path = dir + fileNameCheck; 
string userNameCheck="";
static string line = "";
static string passline="";
static float cameraMainX = 0f;
static float cameraMainY = 0.04525888f;
static float cameraMainZ = -17.89664f;

static float cameraTempX = 14.73204f;
static float cameraTempY = 1.990081f;
private Vector3 newPosition;
public Transform target;
public AudioClip mouseClick;
public AudioClip mouseHover;
public Camera Camera1;
public Camera Camera2;
public bool textFieldIsVisible = true;





	IEnumerator Start(){
		Camera1.enabled = true;
		Camera2.enabled = false;
		yield return new WaitForSeconds (2f);
	}
	
	void Update(){

	}

	void OnGUI(){
		//GUIStyle myStyle = new GUIStyle ();

		//GUI.color = Color.yellow;
		GUI.backgroundColor = Color.white;	
		GUI.skin.textField.fontSize = 35;
		GUI.skin.font = (Font)Resources.Load("Fonts/MagicMedieval", typeof(Font));


		if (textFieldIsVisible == true)
		{
		GUI.contentColor = Color.green;
		userNameText = GUI.TextField(new Rect(520, 515, 545, 45), userNameText, 25);
		GUI.contentColor = Color.black;
		passwordText = GUI.TextField(new Rect(520, 635, 545, 45), passwordText, 25);
		}

	}


	
	void OnMouseEnter(){
		//change text color
		renderer.material.color=Color.yellow;
		audio.PlayOneShot(mouseHover);
	}
	
	void OnMouseExit(){
		//change text color
		renderer.material.color=Color.white;
	}
	
	void OnMouseUp(){
		//is this quit
		if (isQuit==true) {
			//quit the game
			Application.Quit();
		}
		if (isTryAgain == true) {
			UnityEngine.Debug.Log ("Try Again");
		}
		if (createNewAccount == true) {
			this.CreateUser();
		}
		else {
			//user clicks login
			audio.PlayOneShot(mouseClick);
			this.CheckforFile();
		}
	}

	void CheckforFile()
	{
	
		if (Directory.Exists(dir)) //check for dir first
		{
			Console.WriteLine("That path exists already.");			
		}
		else
		{
			// Try to create the directory.
			DirectoryInfo di = Directory.CreateDirectory(dir);
		}
		if (!File.Exists (path)) 
		{   // If file does not exist then create one
			// Create a file to write to. 
			string createText = "User File." + Environment.NewLine;
			
			File.WriteAllText (path, createText);
			this.CheckForUser();

		}
		else
		{
			this.CheckForUser();
		}
		
	}

	void CheckForUser()
	{
		foreach(string line in File.ReadAllLines(path))
		{
			UnityEngine.Debug.Log("Line in File: " + line.Trim());
			UnityEngine.Debug.Log("Entered Username: " + userNameText);
			if(line.Trim() == userNameText) {
				this.FoundUser();
				return;
			}
		}
		//didnt find user
		this.UserNotFound();
	}

		
		
	void FoundUser()
	{
		UnityEngine.Debug.Log ("Found User");
		username = userNameText;
		//now have to check if password is correct
		foreach(string passline in File.ReadAllLines(path))
		{
			if(passline.Trim() == passwordText){
				UnityEngine.Debug.Log ("Password Matches");
				password = passwordText;
				this.LoadUserFile();
				return;
			}
		}
		UnityEngine.Debug.Log ("Password NOT Match");	
	}


	void UserNotFound()
	{
		UnityEngine.Debug.Log ("Did Not Find User");
		textFieldIsVisible = false;
		Camera2.enabled = true;
		Camera1.enabled = false;
		UnityEngine.Debug.Log (Camera1, Camera2);
	}

	void LoadUserFile()
	{

	}

	void CreateUser()
	{
		UnityEngine.Debug.Log ("Create New User");
	}
}