Hallo,
vielen Dank für Deine Hilfe, ich habe die Application.ConvertFormula() ausgetestet, ich habe sowohl eine Formel in einer Zelle als auch eine Formel einer Variable im Makro umgewandelt. Beides scheint mir jedoch bei der weiteren Verwendung der Formel nicht das Richtige zu sein, resp. auch sehr kompliziert zu werden, ich schildere das Problem nachfolgend:
Ausgangslage, Formel mit relativen Bezügen (Werte z.T. aus ComboBox:
strPA1 = "=VLOOKUP(C[-1]," & Blatt1 & "!R[99999]C[" & VergleichsspalteBis & "]:R[0]C[" & Keyspalte & "]," & Spaltenindex & ", 0)"
Wert, der durch diese Formel in Zelle B1 übertragen wird: =SVERWEIS(A:A;Tabelle1!A1:C100000;2; 0)
Diese Formel ist korrekt, aber sie müsste absolut sein, da ich sie noch in andere Zellen kopieren müsste. Auch das Umwandeln der Formel der Zelle B1 mittels Application.ConvertFormula() funktioniert. Da ich aber die obgenannte Formel auch in Zelle C1 übertrage (nur mit anderem Tabellenblatt), ist der absolute Bezug nach der Konvertierung falsch (da Wert vor Konvertierung in Zelle in Spalte C und nicht in B steht).
Im nächsten Schritt habe ich deshalb versucht, mit der Application.ConvertFormula() bereits im Makro drin die relative Formel in eine absolute zu konvertieren. Dies funktioniert zwar "mechanisch", jedoch sind anschliessend die Bezüge falsch (dies geschieht m.E. durch den ungeeigneten Syntax der Formel und die Übernahme der Werte für die Variablen aus der Combobox):
=SVERWEIS($XFD:$XFD;Tabelle1!$B$30:$XFD$100029;2; 0)
Ich denke, die einfachste und beste Lösung ist eine Formel in folgender Form mit Variablen (aus der Combobox) und absoluten Bezügen, allerdings bekomme ich den Syntax nicht hin:
Variablen:azeile, bspalte, czeile, dspalte, Tabelle1, ezeile, fspalte, gzeile, hspalte (alles Zahlen,ausser der Wert der Variable für Tabelle1). Wenn der User in der Combobox die Spalte 1 auswählt, will er Spalte A, wenn er die Zeile 1 auswählt, will er die Zeile 1.
=SVERWEIS(Range(Cells(azeile, bspalte), Cells(czeile, dspalte);Tabelle1!Range(Cells(ezeile, fspalte), Cells(gzeile, hspalte));y;0)
Wo müsste ich denn in der Formel die $ setzen? Oder sind hier die eckigen Klammern gefragt? Muss ich die Variablen in [" & Variable & "] setzen?
Es wäre wirklich super, wenn mir jemand beim Syntax weiterhelfen könnte, auch ein Beispiel, aus dem ich den korrekten Syntax ableiten könnte, wäre sehr willkommen.
Viele Grüsse,
Jörg
|