please help with this code...

#include <avr/pgmspace.h>

#define COLUMN 8        // Anzahl der Spalten
#define PLANE 5         // Anzahl der Ebenen
#define PLANETIME 3333  // Anzeigedauer einer Ebene
#define TIMECONST 15    // Multiplikator für Anzeigedauer eines Bildes (33 LEDs)

// LED Muster: Eine Zeile besteht aus den 5 Ebenen mit je 8 LEDs (außer Ebene 5 mit einer LED) und der Anzeigedauer
prog_uchar PROGMEM PatternTable[] = {
B11111111, B11111111, B11111111, B11111111, B1, 5,  // Alle LEDs an
B00000000, B00000000, B00000000, B00000000, B0, 1,  // Alle LEDs aus
B11111111, B11111111, B11111111, B11111111, B1, 5,
B00000000, B00000000, B00000000, B00000000, B0, 10,
// Bei Anzeigedauer 0 endet die Schleife
B00000000, B00000000, B00000000, B00000000, B0, 0
};

// Definition der Pins für Ebenen und Spalten (hängt davon ab, wie man sie verlötet hat)
int LedPin[] = {7, 8, 6, 9, 10, 11, 12, 5};
int PlanePin[] = {18, 17, 16, 15, 14};

void setup()
{
	int pin;
	// Pins als OUTPUT initialiseren
	for (pin=0; pin<COLUMN; pin++) {
		pinMode( LedPin[pin], OUTPUT );
	}

	for (pin=0; pin<PLANE; pin++) {
		pinMode( PlanePin[pin], OUTPUT );
	}
}

void loop()
{
	byte PatternBuf[PLANE]; // speichert eine Zeile aus LED Muster
	int PatternIdx;
	byte DisplayTime;
	unsigned long EndTime;
	int plane;
	int patbufidx;
	int ledpin;
	
	// Index in LED Muster setzen
	PatternIdx = 0;
	// Wiederholen solange Anzeigedauer > 0
	do {
		// Zeile aus LED Muster lesen
		memcpy_P( PatternBuf, PatternTable+PatternIdx, PLANE );
		PatternIdx += PLANE;
		// Anzeigedauer lesen
		DisplayTime = pgm_read_byte_near( PatternTable + PatternIdx++ ); 
		// Anzeigedauer für Bild berechnen
		EndTime = millis() + ((unsigned long) DisplayTime) * TIMECONST;
		
		// LEDs der Ebenen immer wieder aufbauen, solange Anzeigedauer für Bild noch nicht erreicht ist
		while ( millis() < EndTime ) {
			patbufidx = 0; // Am Anfang der Zeile beginnen
			// Schleife über Ebenen
			for (plane=0; plane<PLANE; plane++) {
				// vorherige Ebene ausschalten
				if (plane==0) {
				  digitalWrite( PlanePin[PLANE-1], HIGH );
				} else {
				  digitalWrite( PlanePin[plane-1], HIGH );
				}
		
				// Spalten der aktuelle Ebene setzen

				// Ebene 5 gesondert behandeln, da nur eine LED
 				if (plane==PLANE-1) {
				    digitalWrite( LedPin[0], PatternBuf[plane] );
                                } else {
				    // Einzelne Spalten setzen
                                   for (ledpin=0; ledpin<COLUMN; ledpin++) {
				      // Bitoperation zur Ermittlung der einzelnen Bitwerte
				      // Beispiel:
				      // LED Zeile & ledpin (left shift (<<) schiebt ledpin um 1 nach rechts)
				      // B01010000 & B10000000 = 0 (LED leuchtet nicht)
				      // B01010000 & B01000000 = 1 (LED leuchtet)
				      // B01010000 & B00100000 = 0 (LED leuchtet nicht)
 				      digitalWrite( LedPin[ledpin], PatternBuf[plane] & (1 << ledpin) );
				    } 
                                }
		
				// aktuelle Ebene aktivieren
				digitalWrite( PlanePin[plane], LOW );
				// Anzeigedauer für Ebene
				delayMicroseconds( PLANETIME );
			}
		}
	} while (DisplayTime > 0);
}

CAN SOMEONE PLEASE TELL ME HOW TO ADD A FADING EFFECT TO THIS CODE..

CAN SOMEONE PLEASE TELL ME HOW TO ADD A FADING EFFECT TO THIS CODE..

Jeez, my ears hurt. Can you stop shouting?

int LedPin[] = {7, 8, 6, 9, 10, 11, 12, 5};

Now, which of these pins support fading an LED?

Your code defines a set of LEDs that are on or off at any given time. If you want all the LEDs to be on at the same brightness, you'd need to modify the table to add another field, defining the level, then read that level in loop, and use analogWrite() instead of digitalWrite().

If you want each LED to have a different brightness, you need to use ctrl-a, ctrl-x, and start over.