Can I get some help with my code?

Hi, I have been trying to get this code for my 7 segment display to run but it will just show a zero..
What am I doing wrong?

int A = 15;
int B = 14;
int C = 4;
int D = 3;
int E = 2;
int F = 16;
int G = 17;
int Dot = 18;
int But = 12;

int Num = 0;
int Val = 0;

void setup()
{
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(Dot, OUTPUT);
pinMode(But, INPUT);
}

void loop()
{
Num = Val;

Val = 1;
delay(500);
Val = 2;
delay(500);
Val = 3;
delay(500);
Val = 4;
delay(500);
Val = 5;
delay(500);
Val = 6;
delay(500);
Val = 7;
delay(500);
Val = 8;
delay(500);
Val = 9;
delay(500);
Val = 0;
delay(500);

if(Num == 0)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}

if(Num == 1)
{
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}

if(Num == 2)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}

if(Num == 3)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}

if(Num == 4)
{
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

if(Num == 5)
{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

if(Num == 6)
{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

if(Num == 7)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}

if(Num == 8)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

if(Num == 9)
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

}

You're always displaying just the last value of "Val" set, which is zero.

 Val = 1;
  delay(500);
  Val = 2;
  delay(500);
  Val = 3;
  delay(500);
  Val = 4;
  delay(500);
  Val = 5;
  delay(500);
  Val = 6;
  delay(500);
  Val = 7;
  delay(500);
  Val = 8;
  delay(500);
  Val = 9;
  delay(500);
  Val = 0;
  delay(500);

is just a very slow way of saying "Val = 0;"

is just a very slow way of saying "Val = 0;"

Okay, how can I fix this?

Well, I'd factor all the display code into a function, with a single parameter "Num", and call that every half-second with a different value.

void Display (int Num)
{
  if(Num == 0)
  {
    digitalWrite(A, HIGH);
    digitalWrite(B, HIGH);
bla-blah

I'd maybe also change the "if"s for a switch, but that's not really necessary.

Wow, thank you.

You may want to tae a look a post 7 here http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1283987316