Clever-Excel-Forum

Normale Version: FormulaLocal -> Array angebbar?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
hey,

eine Formel so mit VBA zu erstellen, als wenn man sie eingetippt hätte, gehet ja so:
Code:
Range("Tabelle1!A1:A40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & "Tabellle2!$D1"

Kann man aber auch direkt ein ganzes Array angeben? So geht es nicht:
Code:
Range("Tabelle1!A1:B40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & Range("Tabellle2!$A1:B40").Value

Klar könnte ich das in 2 Schritten machen, wie bei dem oberen Code, welcher ja funktioniert. Doch bei größeren Arrays wäre es wesentlich einfacher & übersichtlicher, wenn das mit Angabe eines Arrays gehen würde.

Das ist ja auch nicht wirklich passend dazu: https://msdn.microsoft.com/de-de/library...37104.aspx

lieben Dank

Julia :)
Hallo Julia,

was sollen die Formel eigentlich machen? Was ist das denn für eine Range-Angabe?
die Formel soll dann folgendes machen:
Code:
Range("Tabelle1!A1:A40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & "Tabellle2!$A1"
Code:
Range("Tabelle1!B1:B40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & "Tabellle2!$B1"
Also in Tabelle A1 bis A40 soll die Formel welche in Tabelle2C1 steht kombiniert mit Tabelle2!A1-A40 eingfügt werden. Und das gleiche für B1 bis B40. Jedoch hier ist der 2. Teil der Formel dann neben TAblle2!C1 Tabelle2!$B1-B40.

In einer Fomel geht das aber ja leider nicht so:
Code:
Range("Tabelle1!A1:B40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & Range("Tabellle2!$A1:$B1").Value
Hallo Julia,

es gibt die FormulaArray-Eigenschaft. Lies mal hier. Bei deiner Range-Angabe kommt es bei mir zu einem Fehler wenn Sie in einem Tabellenmodul steht, verwende lieber die bessere Variante.
Code:
Worksheets(.....).Range(.....)
Danke, klappt nicht: Typen unverträglich erhalte ich, wenn ich es so mache:


Code:
Range("Tabelle1!A1:B40").FormulaLocal = "=" & Range("Tabelle2!C1").Value & Worksheets("Tabelle2").Range("$A1:$B1").Value
Die Zeile wird gelb markiert.
Hallo,

das mit dem Range hast Du falsch verstanden. Mit der FormulaArray hast Du auch nicht berücksichtigt. Undecided

Code:
Sub prcX()

   Worksheets("Tabelle1").Range("A1:B40").FormulaArray = "=" & Worksheets("Tabelle2").Range("C1").Value & "Tabelle2!$A1:$A40"

End Sub
danke Steffl! Muss es nicht so lauten?
->
Code:
Worksheets("Tabelle1").Range("A1:B40").FormulaArray = "=" & Worksheets("Tabelle2").Range("C1").Value & "Tabelle2!$A1:$B40"
Hallo Julia,

ja, muss es.
wenn ich dann ein Feld editieren möchte, erhalte ich: "Teile einer Matrix können nicht geändert werden". Was ja ungünstig ist. Aber anders geht es wohl nicht, oder?
Hallo Julia,

vielleicht so?

Code:
Sub prcFormel()
   'Worksheets("Tabelle1").Range("A1:B40").FormulaArray = "=" & Worksheets("Tabelle2").Range("C1").Value & "Tabelle2!$A1:$B40"
   Worksheets("Tabelle1").Range("A1:B40").Formula = "=" & Worksheets("Tabelle2").Range("C1").Value & "Tabelle2!A1"
End Sub

Habe eh nicht verstanden, warum Du hier ein Array brauchst.