Formel in Zelle eintragen

16/01/2008 - 10:08 von Alex | Report spam
Liebe Community

Um eine Auswertung eines Ticketsystems zu erstellen muss ich wissen, wie
viele Arbeitsstunden zwischen dem öffnen und schliessen des Tickets
vergingen. Da habe ich dieser Diskussionsgruppe bereits eine super Lösung
gefunden.

Nun wollte ich diese Formel automatisieren und für jeden Ticketeintrag in
meiner Excelliste automatisch diese Zeitspanne ausrechnen.

Dafür habe ich folgenden Code erstellt:
Tabelle2.Range("M" & i + 1) = "=WENN(REST(G" & i + 1 &
";GANZZAHL(G" & i + 1 & "))<REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 &
"));(NETWORKDAYS(F" & i + 1 & ";G" & i + 1 &
";Resultat!A22:A32)-1)*8+(24-REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 &
"))-REST(G" & i + 1 & ";GANZZAHL(G" & i + 1 & ")));(NETWORKDAYS(F" & i + 1 &
";G" & i + 1 & ";Resultat!A22:A32)-1)*8+REST(G" & i + 1 & ";GANZZAHL(G" & i +
1 & "))-REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 & ")))"

Zur Erklàrung:
-i ist ein Counter, welcher pro Abfrage hochgeht. So kann Zeile für Zeile
die Werte in der Spalte F (Startzeit) und die in der Spalte G (Endzeit)
ausgelesen und verglichen werden.

Ich habe hier im Forum eine àhnliche Frage gefunden. Allerdings wird das
Problem dann mit dem Direktfenster gelöst und auf dieses habe ich im
laufenden Betrieb (wenn das Makro làuft) keinen Zugriff.
Wenn ich eine Direktzuweisung mache, z.B. als String, dann ergibt das beim
Debuggen einen angezeigten Dezimalstellen-Wert (z.B. 2.987855653). Wenn ich
sage Range.Fromula = "den ganzen Code", dann gibt er mir einen Anwendungs-
oder objektdefinierten Fehler aus.

Das Problem könnte noch sein, dass ich mit gemischtem Befehlssatz arbeiten
muss, da unser System die "einfachen" Befehle wie z.B. SUMME, etc. in Deutsch
kennt. Die Analyse-Funktionen aber auf Englisch installiert ist. Daher muss
ich mit NETWORKINGDAYS arbeiten.

Wenn ich die Formel im Excel direkt eingebe (natürlich ohne den Counter i,
aber der sollte ja kein Problem sein), dann geht es ohne Probleme. Nur mit
VBA scheint dies nicht zu klappen.

Herzilchen Dank für Eure Hilfe jetzt schon

Gruess
Alex
 

Lesen sie die antworten

#1 Melanie Breden
16/01/2008 - 10:21 | Warnen spam
Hallo Alex,

"Alex" schrieb:
Nun wollte ich diese Formel automatisieren und für jeden Ticketeintrag in
meiner Excelliste automatisch diese Zeitspanne ausrechnen.

Dafür habe ich folgenden Code erstellt:
Tabelle2.Range("M" & i + 1) = "=WENN(REST(G" & i + 1 &
";GANZZAHL(G" & i + 1 & "))<REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 &
"));(NETWORKDAYS(F" & i + 1 & ";G" & i + 1 &
";Resultat!A22:A32)-1)*8+(24-REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 &
"))-REST(G" & i + 1 & ";GANZZAHL(G" & i + 1 & ")));(NETWORKDAYS(F" & i + 1 &
";G" & i + 1 & ";Resultat!A22:A32)-1)*8+REST(G" & i + 1 & ";GANZZAHL(G" & i +
1 & "))-REST(F" & i + 1 & ";GANZZAHL(F" & i + 1 & ")))"

Wenn ich eine Direktzuweisung mache, z.B. als String, dann ergibt das beim
Debuggen einen angezeigten Dezimalstellen-Wert (z.B. 2.987855653). Wenn ich
sage Range.Fromula = "den ganzen Code", dann gibt er mir einen Anwendungs-
oder objektdefinierten Fehler aus.



vielleicht hilft es dir erst mal weiter, wenn du den Formelstring in englischer Schreibweise kennst.

Markiere dazu die Formelzelle im Tabellenblatt, wechsel zum VBA Editor
und schreibe in das Direktfenster folgende Anweisung und bestàtige mit der 'Enter' Taste:

?Activecell.Formula


Mit freundlichen Grüssen
Melanie Breden

- Microsoft MVP für Excel -
www.melanie-breden.de
Das Excel-VBA Codebook 2007 http://tinyurl.com/2nwvod

Ähnliche fragen