FormulaLocal -> Array angebbar?
#1
Question 
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 :)
Top
#2
Hallo Julia,

was sollen die Formel eigentlich machen? Was ist das denn für eine Range-Angabe?
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Top
#3
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
Top
#4
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(.....)
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Top
#5
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.
Top
#6
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Top
#7
danke Steffl! Muss es nicht so lauten?
->
Code:
Worksheets("Tabelle1").Range("A1:B40").FormulaArray = "=" & Worksheets("Tabelle2").Range("C1").Value & "Tabelle2!$A1:$B40"
Top
#8
Hallo Julia,

ja, muss es.
Gruß Stefan
Win 10 / Office 2016
Top
#9
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?
Top
#10
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.
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste