Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Formel in eine Zelle einbinden


Betrifft: Formel in eine Zelle einbinden von: Flo
Geschrieben am: 12.09.2019 14:48:24

Hallo!
Ich habe heute damit begonnen meinen Kollegen bisschen Arbeit abzunehmen mit Hilfe von VBA, ich habe Programmiererfahrung, mit VBA hab ich mich leider erst seit Heute auseinandergesetzt und mit großer Hilfe dieses Forums konnte ich die meisten Sachen selbst zusammenbasteln, jedoch stehe ich jetzt vor folgendem Problem:

Ich möchte eine Formel in die derzeit ausgewählte Zelle einbinden, in dieser Formel werden werte aus einer anderen Tabelle (in der gleichen Datei) verwendet. Aus welcher Tabelle die Werte genommen werden entscheidet der User selbst indem er den Namen der Tabelle in einer Userform eingibt.

ActiveCell.Formula = "=SUM([Tbl!G42] * [Tbl!B42] * [Tbl!C42] + [Tbl!G43] * [Tbl!B43] * [Tbl!C43] + [Tbl!G44] * [Tbl!B44] * [Tbl!C44] + [Tbl!G45] * [Tbl!B45] * [Tbl!C45] + [Tbl!G46] * [Tbl!B46] * [Tbl!C46] + [Tbl!G47] * [Tbl!B47] * [Tbl!C47] + [Tbl!G48] * [Tbl!B48] * [Tbl!C48] + [Tbl!G49] * [Tbl!B49] * [Tbl!C49] + [Tbl!G50] * [Tbl!B50] * [Tbl!C50] + [Tbl!G51] * [Tbl!B51] * [Tbl!C51]"

Tbl ist hier die Variable in der der Tabellenname aus der Userform gespeichert wird.
Tbl habe ich Public als String definiert, Tbl als MsgBox auszugeben zeigt den String ganz normal an.
Die Fehlermeldung lautet "Laufzeitfehler 1004: Anwendungs- oder Objektdefinierter Fehler."

Ich bedanke mich im vorraus für eure Bemühungen, dieses Forum ist echt toll! :)

Grüße Flo

  

Betrifft: AW: Formel in eine Zelle einbinden von: 1712704.html
Geschrieben am: 12.09.2019 15:30:24

Hallo Flo,

Du kannst eine Variable aus VBA nicht direkt in einer Formel nutzen, sondern musst deren Inhalt übergeben, so nach dem Schema:

ActiveCell.Formula = "=SUM([" & Tbl & "!G42] * " & _
                          "[" & Tbl & "!B42] * " & _
                          ...
                          [" & Tbl & "!C51]" 

Gruess Hansueli
  

Betrifft: AW: Formel in eine Zelle einbinden von: 1712707.html
Geschrieben am: 12.09.2019 15:33:13

HI
1. lässt sich die Formel einfacher mit =SumProduct(Tbl!B42:B51,Tbl!C42:C51,Tbl!G42:G51) darstellen

2. fehlt in deiner Formel am Ende ein ")"

3. wenn du festen Text und Variable kombinieren willst, darft du die Variable nicht einfach in den Text schreiben, denn dort wird sie nicht erkannt. Variablen dürfen nicht innerhalb von Anführungszeichen stehen.

um Text mit Variablen zu kombinieren, gibt es zwei Möglichkeiten:
a) du beendest den Teiltext und verkettest mit &, dann bindest du den weitern Text an:

"=Sum(" & Tbl & "!G42...")
b) du schreibst zunächst einmal die ganze Formel in eine eigene Variable und ersetzt dann die Zeichenfolge der Variable durch den Variablenwert:
dim Tbl as string
dim FO as string
Tbl = "Tabelle1"
FO = "=SUM([Tbl!G42] * [Tbl!B42] * [Tbl!C42] + ..)"
FO = Replace(FO, "Tbl", Tbl)
ActiveCell.Formula = FO

wobei ich Varianete b) bevorzuge, weil die bei längeren Formeln übersichtlicher ist.

desweitern wundere ich mich etwas über die [], die braucht es in Formeln eigentlich nicht.

außerdem solltest du beachten, dass du in der Formel den Tabellenblattnamen noch in Hochkommas setzen musst, wenn der Tabellenblattname ein Leerzeichen oder sonstige Sonderzeichen enthält.:
'Tabelle 1'!G42

Beiträge aus dem Excel-Forum zum Thema "Formel in eine Zelle einbinden"