Den Vip-Professionals, die mich dazu motiviert haben, trotz meiner 16-stündigen Arbeitstage noch den ATARI-Ferrari anzuwerfen und den Teil 7 unseres Programmierkurses abzuliefern, meinen besten Dank. Meinem Lektor Marcelo stehen mit Sicherheit die Haare zu Berge, wenn er an seine vielfachen Motivationstelefonate, die er mit meiner Frau führte, denken muß. Doch leider bin ich eben nur ein Freizeitschreiber, der auch mal ans Geld verdienen denken muß und seinem ständigen Arbeitgeber pflichtgemäß zur Verfügung stehen sollte. Doch jetzt habt Ihr ihn ja, den Teil 7!
Wie im letzten Teil angekündigt, wollen wir uns heute mit der Programmierung eines Templates, also einer Anwendung unter der VIP-Schale beschäftigen. Vielen Leserbriefen konnte ich entnehmen, daß Vip sehr oft in kleineren Unternehmen eingesetzt wird, um Rechnungen. Tabellen und Kassenbücher zu erstellen. Ich möchte Ihnen anhand des Templates Rechnung.WKS aufzeigen, wie elegant und dennoch einfach man mit VIP eine Automatisierung solcher Rechnungsschreibungen vornehmen kann.
Die Idee für Rechnung.WKS kam aus einer Leseranfrage. Eine KFZ-Werkstatt fakturiert ihre Reparatur- und Kleinteilerechnungen mit einer VIP-Lösung. Die dabei auftretenden Probleme mit den nicht zu eliminierenden Nullen bei einer Rechenanweisung und der zu geringe Automatismus in der Anwendung waren Anlaß zu einer Weiterentwicklung.
Unser Template soll folgende Eigenschaften aufweisen:
A.) menügesteuerte Bedienerführung
B.) menügesteuerte Eingabesteuerung
C.) Archivierungsmöglichkeit mit Wiedervorlage
D.) Schnittstelle zur Textverarbeitung
E.) Endlosdruck auf Rechnungsformularen
F.) Schnittstelle zu einer offenen Postenliste (erweiterbar)
G.) einfache Bedienbarkeit
Jeder Vip-Spezialist hat bei der Programmierung eines Templates seineeigene Vorgehensweise. Ich plane zunächst immer den räumlichen Aufbau meines Templates (Abb.2).
Die Bereiche: Macros, Druckerausgabe, Rechnungsdateneingabe und Menüauswahl finden ihren festen Bereich. Anwender, die bereits mehr als zehn solcher Templates entwickelt haben, wissen es zu schätzen, jedem Template einen sogenannten Lageplan der Bereiche beizulegen.
Bei unserer Anwendung soll gewährleistet sein, daß jeder Anfänger so zurecht kommt, als wäre die Anwendung Rechnung.WKS ein Front-End-Programm. Der Anwender soll mit der Vip-spezifischen Menüleistensteuerung und den Befehlen nicht konfrontiert werden. Die Menüsteuerung muß sehr durchsichtig aufgebaut und dokumentiert werden.
Das Erstellen eines Menüplanes für die Anwendung ist immer Ausgangspunkt für die ersten Macroschritte in unserem Template. Die Abbildung 3 zeigt den Menübaum, der in Rechnung.WKS seine Anwendung findet.
Ich habe mich lange gefragt, ob es sinnvoll sei. ein doch recht langes Programmlisting in der Zeitschrift abzudrucken. Viele Leserzuschriften haben mich ermuntert, es doch zu wagen. Immerhin vergehen so ziemlich 2-3 Stunden, bis die Spaltenbreiten eingestellt, die Bereiche benannt, die Druckersequenzen angepaßt und die Nerven am Ende sind.
Ob der Lerneffekt auch wirklich als solcher wie eine Bombe einschlägt, mag nunmal dahingestellt sein. Ich habe mich zu Zeiten meines Pocketcomputers PC1500A immer riesig gefreut, wenn alles ohne ERROR-Meldung funktioniert hat. Das einfache Sharp-Basic, später auch etwas Maschinensprache, habe ich ja auch nur durch Abtipperei in das seltsame Spatzenhirn (mein eigenes) transferieren können.
Mein teuerstes Listing ist übrigens auf einem Flughafen in Amsterdam entstanden. Ich war damals so eifrig, daß ich die letzte Maschine versäumt habe und eine Nacht in einem der teuersten Hotels verbringen durfte. Zum Glück gibt es bis heute noch keinen portablen Mega-ST! Für die Geldhaber und Ökonomen unter uns gibt es das Programm Rechnung.WKS auch auf der Monatsdisk von MAXON.
Viele Leser unter Ihnen, die mit unserem Programmierkurs erst so richtig neugierig auf Vip-Professional gemacht wurden, wird die systematische Abtipperei und das Nachvollziehen einzelner Macrosequenzen sehr hilfreich sein. Sie lernen unter anderem auch das Eliminieren von Zelleninhalten mit dem Wert Null. Textformatierungen, Input-Deklarationen, Menüsteuerungen und Menüaufforderungen, Schnittstellen-und File-Export-Funktionen, globale Arbeitsblattsteuerungen und, und, und. Also nur Mut, es kann überhaupt nichts schiefgehen.
Wenn die Vip-Zellen schön abgetippt wurden, geht es an die Bereichsbenennung unserer Macronamen.
Die Sequenz:
/RNC(NAME)~(Bereich)~
ist Ihnen ja recht bekannt.
Die zu benennenden Bereiche im Template Rechnung.WKS sehen Sie in Abbildung 4.
CALC AC49 DATUM V2
INPUT B22..D61 MENUA AC9
MENUB AC14 MENUC AC92
MENUD AC104 MENUE AC112
MENUF AC122 NEU AC18
OUTANSCHRIFT O10 OUTBETREFF O20
OUTDATA O27..R51 OUTDATUM R20
OUTNUMMER Q20 OUTPUT O1..R60
OUTTEXT1 O21 OUTTEXT2 O22
PREISINDM R27 PREISSUMM T27..T51
PROTOKOLL B28..B30 RGANSCHRIFT B22..B26
RGBETREFF B28 RGDATA B37..D61
RGDATUM B30 RGNUMMER B29
RGPOSANZ C37..C61 RGPOSEPREIS D37..DG1
RGPOSTEXT B37..BS1 RGTEXT1 B32
RGTEXT2 B33 SUMINPUT F37..F61
SUMME F64 SUMOUTPUT R27..R51
NERBIN U3..U10 WERBOUT O53
\0 AC3 \A AC111
\D AC91 \E AC43
\I AC121 \M AC8
\N AC13 \S AC103
Abbildung 4: Zu benennende Bereiche in Rechnung.WKS
Die Spaltenbreiten habe ich nach meinen Bedürfnissen auf folgende Einstellungen gebracht:
A=16,B=35,C=7,D=10,
E-G=9,H=14,I-K=9,L=2,
M-AZ=9
Ein kleiner Macro kann hier ja auch schon nützlich sein: /WCS.
Bei der Auflistung der Zelleninhalte werden zusätzlich einige Attribute genannt, die folgende Bedeutung haben:
AC11: U(D1) = Zelle AC11
wurde ungeschützt auf Datum1 formatiert.
BC11: U (F2) = Zelle BC11
wurde ungeschützt auf 2 Nachkommastellen formatiert. Also bitte unbedingt daran denken.
Bevor Sie mit der Eingabe beginnen, sollten Sie unbedingt prüfen ob Sie eine VIP-Version 1.1> US (englische Menüs), GEM oder TEXT besitzen. Andernfalls sind die Macros nicht lauffähig.
Im nächsten und vorläufig auch letzten Teil des VIP-Programmierkurses werde ich die Kombination von Arbeitsblättern sowie den Export von Zellenbereichen, das Druckaufbereiten und einige Leserfragen abschließend besprechen.
Bis bald. HDS
Macrolisting-Anfang: 1.Zelle AA1 letzte Zelle: AD127
Zelle: Eingaben
AA1: 'Macros
AB1: 'Name
AC1: 'Syntax
AA2: \-
AB2: \-
AC2: \-
AD2: \-
AE2: \-
AA3: 'Start
AB3: '\0
AC3: '/WTC{HOME}
AC4: '/WGRM
AC5: '/XG\M~
AA8: 'Menü A
AB8: '\M
AC8: '/XMMENUA-
AC9: 'NEU
AD9: 'EDIT
AE9: 'ARCHIV
AF9: 'DRÜCK
AG9: 'SERVICE
AH9: 'INSTAL
AI9: 'HALT
AJ9: 'QUIT
AC10: 'Neue Rechnung erstellen
AD10: 'Rechnungsdaten edieren
AE10: 'Rechnung archivieren (PRN/WKS)
AF10: 'Rechnung drucken
AG10: 'Template Sichern etc.
AH10: 'Steuersatz,Werbetexte und Datum installieren
AI10: 'Menü verlassen
AJ10: 'Arbeit beenden.
AC11: '/XG\N~
AD11: '/XG\E~
AR11: '/XG\A~
AF11: '/XG\D~
AG11: '/XG\S~
AH11: '/XG\I~
AI11: '/xq~
AJ11: '/fr
AA13: 'Menu B
AB13: '\N
AC13: '/XMMENUB~
AA14: 'neu
AC14: 'Neu
AD14: 'Quit
AC15: 'Neue Rechnung erstellen
AD15: 'zurück
AC16: '/XGNEU~
AD16: '/XG\M~
AA18: 'Rechnung
ABI8: 'NEU
AC18: '{Home}/wgra/wtc/rerganschrift~
AC19: '/rergposanz~
AC20: '/rergposepreis~
AC21: '/rergpostext-
AC22: '/reRGTEXT1~
AC23: '/reRGTEXT2~
AC24: '/cDATUM~RGDATUM~/cSUMME~D33~/wwc/wtc
AC25: '{HOME}{GOTO}A22~{RIGHT}/WTB
AC26: '/XLAnrede eingeben: ~B22~{GOTO}B23~
AC27: '/XLVorname/Name eingeben: ~B23~{GOTO}B24~
AC28: '/XLz.Hd. (Zusatz) eingeben: ~B24~{GOTO}B25~
AC29: '/XLStraße eingeben: ~B25~{Goto}B26~
AC30: '/XLPostleitzahl/Ort eingeben: ~B26~
AC31: '{Goto}b28~{Edit}{?}~
AC32: '{Goto}b29~{Edit}{?}~
AC33: '{Goto}b30~/ruB30~{Edit}{?}~
AC34: '/rpB30~
AC35: '{Goto}b32~
AC36: '/XLRechnungstext 1 eingeben: ~B32~
AC37: '{Goto}b33~
AC38: '/XLRechnungstext 2 eingeben: ~B33~
AC39: '{Down}{Down}{Down}{Down}/wtb
AC40: '/riRGDATA~
AC41: '/wgrm/XG\M~
AA43: 'Edit
AB43: '\E
AC43: '/wgra/wwc/wtc
AC44: '/cDATUM~RGDATUM~/cSUMME~D33~
AC45: '{HOME}{GOTO}A22~{RIGHT}/WTB
AC46: '/wgrm/xq~
AA48: 'Subroutine
AA49: 'CALC
AB49: 'CALC
AC49: '/wgrm/crganschr
AC50: 'ift~outanschrift~/crgbetreff~outbetreff~
AC54: '/crgnummer~outnummer~/crgdatum~outdatum~/c
AC58: 'rgtext1~outtext1~/crgtext2~outtext2~/crg
AC62: 'data~outdata~/cPREISSUMM~PREISINDM~{Calc}
AA64: 'Null
AC64: '/XIr27=0~/rer27~
AA65: 'loeschen
AC65: '/XIr28=0~/rer28~
AC66: '/XIr29=0~/rer29~
AC67: '/XIr30=0~/rer30~
AC68: '/XIr31=0~/rer31~
AC69: '/XIr32=0~/rer32~
AC70: '/XIr33=0~/rer33~
AC71: '/XIr34=0~/rer34~
AC72: '/XIr35=0~/rer35~
AC73: '/XIr36=0~/rer36~
AC74: '/XIr37=0~/rer37~
AC75: '/XIr38=0~/rer38~
AC76: '/XIr39=0~/rer39~
AC77: '/XIr40=0~/rer40~
AC78: '/XIr41=0~/rer41~
AC79: '/XIr42=0~/rer42~
AC80: '/XIr43=0~/rer43~
AC81: '/XIr44=0~/rer44~
AC82: '/XIr45=0~/rer45~
AC83: '/XIr46=0~/rer46~
AC84: '/XIr47=0~/rer47~
AC85: '/XIr48=0~/rer48~
AC86: '/XIr49=0~/rer49~
AC87: '/XIr50=0~/rer50~
AC88: '/XIr51=0~/rer51~
AC89: '/wgra/xr-*
AA91: 'Druck
AB91: '\D
AC91: '/XMmenuc~
AC92: 'Druck
AD92: 'Seite
AE92: 'Zeile
AF92: 'Anfang
AG92: 'Quit
AC93: 'Rechnung drucken
AD93: 'Seitenvorschub
AE93: 'Zeilenvorschub
AF93: 'Blattanfang setzen !
AG93: 'Menü verlassen
AC94: '/xcCALC~
AD94: '/pppq/xg\D~
AE94: '/ppl/xg\D~
AF94: '/ppaq/xg\D~
AG94: '/xg\M~
AC95: '/wtc{Goto}b70~/cprotokoll~~
AC96: '/ppcaroutput~oml4~mr80~mt0~mb6~
AC97: 's\027\018-
AC98: 'p72~qagq{home}
AC99: '/xg\D~
AA103: 'Service
AB103: '\S
AC103: '/XMmenud~
AC104: 'Ersetzen
AD104: 'Sichern A
AE104: 'Sichern B
AF104: 'Pfad neu
AG104: 'Quit
AC105: 'Arbeitsblatt sichern und ersetzen
AD105: 'auf A:\ sichern (neu)
AE105: 'auf B:\ sichern (neu)
AF105: 'Neues Directory einstellen
AG105: 'Menü verlassen
AC106: '{Home}
AD106: '{Home}
AE106: '{Home}
AF106: '/fd{?}~/xg\S~
AG106: '/xq~
AC107: '/wtc/fs~r
AD107: '/wtc/fdA:\~/fs~r
AE107: '/wtc/fdB:\~/fs~r
AA111: 'Archiv
ABI11: '\A
AC111: '/XMmenuE~
AC112: 'Sichern (WKS)
AD112: 'Archivieren (PRN)
AE112: 'Wiedervorlage
AF112: 'Quit
AC113: 'Rechnung zur Wiedervorlage WKS sichern
AD113: 'Rechnung im ASCII.PRN-Format absp.
AE113: 'Rechnung laden (WKS)
AF113: 'Menü verlassen
AC114: '/xcCALC~/WTC{GOTO}B29~
AD114: '/xcCALC~/WTC{GOTO}B29~
AE114: '/WTC{GOTO}B22~
AC115: '/fxv{?}~
AD115: '/pf{?}~
AE115: '/wtc
AC116: 'input~
AD116: 'routput~
AE116: '{Goto}b22~
AC117: '/XG\M~
AD117: 'oouqagq
AE117: '/fcce{?}~
AD118: '/XG\M~
AA121: 'Inst
ABI21: '\I
AC121: '/XMmenuF~
AC122: 'Zeigen
AD122: 'Sichern
AE122: 'zurück
AC123: 'Statuswerte zeigen
AD123: 'Update
AE123: 'Menü verlassen
AC124: '{Home}/wtc{Goto}v1~/
AD124: '/cWERBIN~WERBOUT~
AE124: '/xg\M~
AC125: 'riv1.v10~
AD125: '{Goto}werbout~/
AC126: '/xg\I~
AD126: 'rjo53.o64~
AD127: '/xg\S~
Das Macro-Listing
Blatt Listing Anfang: 1.Zelle B1 letzte Zelle: B79
Zelle: Eingabe
B1: ^Rechnungsschreibung
H1: 'CALC
I1: 'AC49
L1: 'I
M1: 'Zeilen
N1: 1
T1: 'I
U1: 'Parameter:
V1: U 0.14
W1: '% Mehrwertsteuersatz
B2: ^unter
H2: 'DATUM
I2: 'V2
L2: 'I
N2: 2
T2: 'I
V2: U(D1) @INT(@TODAY)
W2: ' Datum
B3: ^VIP-PROFESSIONAL
H3: 'INPUT
13: 'B22..D61
L3: 'I
N3: 3
T3: 'I
V3: U 'Fahren Sie unseren Renault Alpine
W3: '— 1.Zeile Werbetext
B4: ^bitte Taste [ALT] und [Buchstabe]
H4: 'MENUA
I4: 'AC9
L4: 'I
M4: 'Absender
N4: 4
T4: 'I
V4: U 'V6 Turbo doch einmal Probe !
W4: '- 2.Zeile Werbetext
B5: \- H5: 'MENUB
I5: 'AC14
L5: 'I
N5: 5
T5: 'I
V5: U 'Bei 250 km/h zeigt sich die
W5: '- 3.Zeile Werbetext
B6: U 'M = MENUE
H6: 'MENUC
I6: 'AC92
L6: 'I
N6: 6
T6: 'I
V6: U 'hervorragende Strassenlage
W6: '- 4.Zeile Werbetext
B7: U 'N = - Neue Rechnung erstellen
H7: 'MENUD
I7: 'AC104
L7: 'I
N7: 7
T7: 'I
W7: '- 5.Zeile Werbetext
B8: U 'E = - Neue Rechnung edieren
H8: 'MENUE
I8: 'AC112
L8: 'I
N8: 8
T8: 'I
W8: '- 6.Zeile Werbetext
B9: U 'A = - archivieren (WKS + PRN)
H9: 'MENUF
I9: 'AC122
L9: 'I
N9: 9
T9: 'I
W9: '- 7.Zeile Werbetext
B10: U 'D = - Druck (direkt)
H10: 'NEU
I10: 'AC18
L10: 'I
M10: 'Anschrift
N10: 10
O10: U 'Herr T10: 'I
W10: '- 8.Zeile Werbetext
B11: U 'S = - Service (Template)
H11: 'OUTANSCHRIFT
I11: 'O10
L11: 'I
N11: 11
O11: U 'Anton Testkunde
T11: 'I
U11: \-
V11: \-
W11: \-
X11: \-
Y11: \-
B12: U 'H = Halt
H12: 'OUTBETREFF
I12: 'O20
L12: 'I
N12: 12
012: U 'z.Hd. Repararurabwicklung
T12: 'I
B13: U 'Q = - Quit (ENDE)
H13: 'OUTDATA
I13: 'O27..R51
L13: 'I
N13: 13
O13: U 'Ingersheimer Str. 12
T13: 'I
B14: U 'I = INSTALLATION
H14: 'OUTDATUM
I14: 'R20
L14: 'I
N14: 14
O14: U 'D-7140 Ludwigsburg
T14: 'I
B15: \- H15: 'OUTNUMMER
I15: 'Q20
L15: 'I
N15: 15
H16: 'OUTPUT
I16: 'O1..R60
L16: 'I
N16: 16
H17: 'OUTTEXT1
I17: 'O21
L17: 'I
N17: 17
H18: 'OUTTEXT2
I18: 'O22
L18: 'I
N18: 18
H19: 'PREISINDM
I19: 'R27
L19: 'I
N19: 19
H20: 'PREISSUMM
120: 'T27..T51
L20: 'I
M20: 'BETREFF
N20: 20
O20: U 'R E C H N U N G
P20: 'Nummer:
Q20: U "10/880201
R20: (D1) @INT(@TODAY)
A21: \- B21: \- C21: 'I
H21: 'PROTOKOLL
I21: 'B28..B30
L21: 'I
M21: 'Text 1
N21: 21
O21: U 'Reparatur Unfallschaden am
A22: 'Anrede_________>
B22: U 'Herr
C22: 'I
H22: 'RGANSCHRIFT
I22: 'B22..B26
L22: 'I
M22: 'Text 2
N22: 22
O22: U 'Renault Alpine A310 V6 GT
A23: 'Name/Vorname___>
B23: U 'Anton Testkunde
C23: 'I
H23: 'RGBETREFF
I23: 'B28
L23: 'I
N23: 23
O23: \-
P23: \-
Q23: \-
R23: \-
A24: 'Zusatz_________>
B24: U 'z.Hd. Reparaturabwicklung
C24: 'I
H24: 'RGDATA
I24: 'B37..D61
L24: 'I
N24: 24
O24: 'Positionsbeschreibungen
P24: 'Anzahl
Q24: ' Preis a
R24: ' Preis in DM
A25: 'Strasse________>
B25: U ' Ingersheimer Str. 12
C25: 'I
H25: 'RGDATUM
I25: 'B30
L25: 'I
N25: 25
O25: \-
P25: \-
Q25: \-
R25: \-
A26: 'PLZ/ORT_______>
B26: U 'D-7140 Ludwigsburg
C26: 'I
H26: 'RGNUMMER
I26: 'B29
L26: 'I
N26: 26
A27: \- B27: \- C27: 'I
H27: 'RGPOSANZ
I27: 'C37..C61
L27: 'I
M27: "1.Pos
N27: 27
O27: U 'Kotfluegel ausbessern
P27: U 1
Q27: U(F2) 850
R27: (F2) @ROUND((+Q27*P27),2)
T27: (F2) @ROUND((+S27*PREISINDM),2)
A28: 'Betreff________>
B28: U 'R E C H N U N G
C28: 'I
H28: 'RGPOSEPREIS
I28: 'D37..D61
L28: 'I
N28: 28
O28: U(F2) 'Scheinwerfereinsatz
P28: U 1
Q28: U(F2) 120
R28: (F2) @ROUND((+Q28*P28),2)
T28: (F2) @ROUND((+S28*R28),2)
A29: 'Nummer_________>
B29: U "10/880201
C29: 'I
H29: 'RGPOSTEXT
I29: 'B37..B61
L29: 'I
N29: 29
O29: U 'Kleinteile
P29: U 5
Q29: U(F2) 28
R29: (F2) @ROUND((+Q29*P29),2)
T29: (F2) @ROUND((+S29*R29),2)
A30: 'Datum__________>
B30: (D1) @INT(@TODAY)
C30: 'I
H30: 'RGTEXT1
I30: 'B32
L30: 'I
N30: 30
T30: (F2) @ROUND((+S30*R30),2)
A31: \- B31: \- C31: 'I
H31: 'RGTEXT2
I31: 'B33
L31: 'I
N31: 31
T31: (F2) @ROUND((+S31*R31) , 2)
A32: 'TEXT 1__________>
B32: U 'Reparatur Unfallschaden am
C32: 'I
D32: 'Netto-sum
H32: 'SUMINPUT
I32: 'F37..F61
L32: 'I
N32: 32
O32: U 'Bitte nutzen Sie die Vorteile eines
T32: (F2) @ROUND((+S32*R32),2)
A33: 'TEXT 2___________>
B33: U 'Renault Alpine A310 V6 GT
C33: 'I
D33: (F2) @SUM($SUMINPUT)
H33: 'SUMME
I33: 'F64
L33: 'I
N33: 33
O33: U 'kontinuierlichen Fahrzeug-Checks.
T33: (F2) @ROUND((+S33*R33),2)
A34: \-
B34: \-
C34: \-
D34: \-
E34: 'I
H34: 'SUMOUTPUT
I34: 'R27..R51
L34: 'I
N34: 34
O34: U 'Sicherheit geht bei uns vor !
T34: (F2) @ROUND((+S34*R34),2)
A35: "POSITION
B35: 'TEXT
C35: 'ANZAHL
D35: 'Einz.PREIS
E35: 'I
H35: 'WERBIN
I35: 'V3..V10
L35: 'I
N35: 35
T35: (F2) @ROUND((+S35*R35),2)
A36: \-
B36: \-
C36: \-
D36: \-
E36: 'I
H36: 'WERBOUT
I36: 'O53
L36: 'I
M36: "10.Pos
N36: 36
T36: (F2) @ROUND((+S36*R36),2)
A37: 1
B37: U 'Kotfluegel ausbessern
C37: U 1
D37: U(F2) 850
E37: 'I
F37: @ROUND((+D37*C37),2)
H37: '\0
I37: 'AC3
L37: 'I
N37: 37
T37: (F2) @ROUND((+S37*R37),2)
A38: 2
B38: U(F2) 'Scheinwerfereinsatz
C38: U 1 D38: U(F2) 120
E38: 'I F38: @ROUND((+D38*C38),2)
H38: '\A
138: 'AC111
L38: 'I
N38: 38
T38: (F2) @ROUND((+S38*R38), 2)
A39: 3
B39: U 'Kleinteile
C39: U 5
D39: U(F2) 28
E39: 'I
F39: @ROUND((+D39*C39),2)
H39: '\D
I39: 'AC91
L39: 'I
N39: 39
T39: (F2) @ROUND((+S39*R39) , 2)
A40: 4
E40: 'I
F40: @ROUND((+D40*C40),2)
H40: '\E
I40: 'AC43
L40: 'I
N40: 40
T40: (F2) @ROUND((+S40*R40),2)
A41: 5
E41: 'I
F41: @ROUND((+D41*C41),2)
H41: '\I
I41: 'AC121
L41: 'I
N41: 41
T41: (F2) @ROUND((+S41*R41),2)
A42: 6
B42: U 'Bitte nutzen Sie die Vorteile eines
E42: 'I
F42: @ROUND((+D42*C42),2)
H42: '\M
I42: 'AC8
L42: 'I
N42: 42
T42: (F2) @ROUND((+S42*R42),2)
A43: 7
B43: U 'kontinuierlichen Fahrzeug-Checks.
E43: 'I
F43: @ROUND((+D43*C43),2)
H43: '\N
I43: 'AC13
L43: 'I
N43: 43
T43: (F2) @ROUND((+S43*R43),2)
A44: 8
B44: U 'Sicherheit geht bei uns vor !
E44: 'I
F44: @ROUND((+D44*C44),2)
H44: '\S
I44: 'AC103
L44: 'I
N44: 44
T44: (F2) @ROUND((+S44*R44),2)
A45: 9
E45: 'I
F45: @ROUND((+D45*C45),2)
L45: 'I
N45: 45
T45: (F2) @ROUND((+S45*R45),2)
A46: 10
E46: 'I
F46: @ROUND((+D46*C46),2)
L46: 'I
M46: "20.Pos
N46: 46
T46: (F2) @ROUND((+S46*R46),2)
A47: 11
E47: 'I
F47: @ROUND((+D47*C47),2)
L47: 'I
N47: 47
T47: (F2) @ROUND((+S47*R47),2)
A48: 12
E48: 'I
F48: @ROUND((+D48*C48),2)
L48: 'I
N48: 48
T48: (F2) @ROUND((+S48*R48),2)
A49: 13
E49: 'I
F49: @ROUND((+D49*C49),2)
L49: 'I
N49: 49
T49: (F2) @ROUND((+S49*R49),2)
A50: 14
E50: 'I
F50: @ROUND((+D50*C50),2)
L50: 'I
N50: 50
T50: (F2) @ROUND((+S50*R50),2)
A51: 15
E51: 'I
F51: @ROUND((+D51*C51),2)
L51: 'I
M51: "25.Pos
N51: 51
T51: (F2) @ROUND((+S51*R51),2)
A52: 16
E52: 'I
F52: @ROUND((+D52*C52),2)
L52: 'I
N52: 52
O52: \-
P52: \-
Q52: \-
R52: \-
A53: 17
E53: 'I
F53: @ROUND((+D53*C53),2)
L53: 'I
M53: 'Werbung
N53: 53
053: U 'Fahren Sie unseren Renault Alpine
Q53: "Netto DM
R53: (F2) GSUM(Q27..R51)
A54: 18
E54: 'I
F54: @ROUND((+D54*C54),2)
L54: 'I
N54: 54
O54: U 'V6 Turbo doch einmal Probe ! Bei
Q54: \-
R54: (F2) \-
A55: 19
E55: 'I
F55: @ROUND((+D55*C55),2)
L55: 'I N55: 55
O55: U '250 km/h zeigt sich die
P55: (P2) +$V$1
Q55: ' Mwst.
R55: (F2) @ROUND((+R53*P55),2)
A56: 20
E56: 'I
F56: @ROUND((+D56*C56),2)
L56: 'I
N56: 56
O56: U 'hervorragende Strassenlage
Q56: \-
R56: (F2) \-
A57: 21
E57: 'I
F57: @ROUND((+D57*C57),2)
L57: 'I
N57: 57
Q57: 'Gesamt DM
R57: (F2)+R53+R55
A58: 22
E58: 'I
F58: @ROUND((+D58*C58),2)
L58: 'I
N58: 58
A59: 23
E59: 'I
F59: @ROUND((+D59*C59) , 2)
L59: 'I
N59: 59
A60: 24
E60: 'I
F60: @ROUND((+D60*C60),2)
L60: 'I
N60: 60
A61: 25
E61: 'I
F61: @ROUND((+D61*C61),2)
L61: 'I
N61: 61
A62: \-
B62: \-
C62: \-
D62: \-
E62: 'I
L62: 'I
N62: 62
L63: 'I
N63: 63
F64: (F2) @SUM($SUMINPUT)
L64: 'I
N64: 64
L65: 'I
N65: 65
B70: U 'R E C H N U N G
B71: U "10/880200
B72: U(D1) @INT(@TODAY)
B76: ^ist in Druck
B79: ^bitte warten
Das Blatt-Listing