Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1668to1672
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel in UF-Textbox eingeben - Formel in Tabelle

Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 11:10:27
Peter
Hallo ihr Excelspezialisten,
ich suche seit geraumer Zeit eine Lösung.
Ich möchte in eine UF Textbox2 eine Formel eingeben - z. B. =Summe(C54+D54)
Wie kann ich die Formel in die Tabelle einfügen?
~f
If Left(TextBox2.Text, 1) = "=" Then
WS1.Cells(xZeile, 2).FormulaLocal = "=" & TextBox2
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
End If
~f
Diese Anweisung funktioniert nicht.
~f
If Left(TextBox2.Text, 1) = "=" Then
WS1.Cells(xZeile, 2).Formula = TextBox2
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
End If~f
Diese Anweisung fügt zwar die Formel ein - wird aber in Tabelle nicht als Formel angenommen.
Besten Dank für eure Hilfe.
Gruss
Peter

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 11:24:06
Beverly
Hi Peter,
versuche es mal nach diesem Prinzip:
    Range("A5").Formula = "="""""
Range("A5").FormulaLocal = TextBox1.Value


AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 11:28:57
Peter
Hallo Karin,
besten Dank es hat wunderbar geklappt.
Werde es nun in die andere Textbox einbauen.
Gruss
Peter
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 11:53:41
Daniel
Hi
1. wenn der Text mit "=" beginnt, brauchst du nicht noch mal ein "=" davorsetzen, sonst hast du ja "=="
2. es kann vorteilhaft sein, zuerst das Zahlenformat der Zelle auf "General" zu setzen.
sollte das Zahlenformat der Zelle "Text" sein, wird die Prüfung nach Zahl/Datum/Formel nicht durchgeführt, sondern der ankommende Inhalt so wie er ist als Text übernommen, egal was es ist.
die Nachträgliche Änderung des Zahlenformats hat dann keinen Einfluss mehr.
daher besser erst das Zahlenformat ändern, dann die Formel einfügen.
3. wie ich dir schon geschrieben habe:
wenn du die Formel in deutscher Schreibweise eingeben willst, musst du .FormulaLocal verwenden.
bei .Formula müsstest du die Formel in amerikanischer Schreibweise angeben .
(englische Funktionsnamen, SUM statt SUMME; Komma als Parametertrennzeichen; Punkt als Dezimalzeichen bei Zahlen)
Gruß Daniel
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 12:09:11
Peter
Hallo Daniel,
besten Dank für Deine sehr ausführliche Beschreibung.
Werde ich testen.
Wünsche noch einen schönen Tag.
Gruss
Peter
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 12:46:09
Peter
Hallo Daniel,
ich habe den Code umgeschrieben.
Jede einzelne Anweisung mit dem entsprechenden Wert in der Textbox2 funktioniert.
Wenn ich jedoch mit If - elseif - end if arbeite geht es nicht.
Anweisung nachstehend.
~f
If TextBox2 "" And (TextBox2.Text) = Format(TextBox2, "0") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
WS1.Cells(xZeile, 2) = (TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "0" 'Formatiert als Standard
ElseIf TextBox2 "" And IsNumeric(TextBox2.Text) Then 'funktioniert als Währung
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00 $"
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Text)
ElseIf TextBox2 "" And IsNumeric(TextBox2.Text) Then 'funktioniert als Zahl mit 2 Stellen nach Komma
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00"
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Value)
ElseIf TextBox2 "" And IsDate(TextBox2.Text) Then 'funktioniert mit Datum
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
WS1.Cells(xZeile, 2).NumberFormat = "DD.MM.YYYY" 'Formatiert als Datum
WS1.Cells(xZeile, 2) = CDate(TextBox2.Text)
ElseIf Left(TextBox2, 1) = "=" Then 'funktioniert Formel
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
WS1.Cells(xZeile, 2).Formula = "="""""
WS1.Cells(xZeile, 2).FormulaLocal = TextBox2.Value
End If
~f
Wie kann man das ändern, dass er den entsprechenden Wert zur Prüfung erkennt?
Besten Dank
Gruss
Peter
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 13:12:00
Daniel
HI
ist jetzt schwer zu sagen.
ich würde dir zunächst einmal empfehlen, nicht mit AND zu arbeiten, sondern mit mehren Stufen, so dass du z.B. nicht jedesmal abfragen musst, ob die TextBox leer ist
eben so würde ich, wenn du die Zelle sowieso erstmal mit dem Zahlenformat "General" formatieren willst, dies noch vor den ganzen IFs machen, damit du es nur 1x programmieren musst (wobei das eigentlich nicht notwendig ist, wenn du hinterher sowieso ein spezielles Zahlenformat anwendest).
WS1.Cells(xZeile, 2).NumberFormat = "General"
if Textbox2  "" Then
If Textbox2 ... Then
ab hier dann die weiteren Prüfungen
end if
end if

weiterhin musst du auch beachten, dass das IsNumeric sehr allgemein prüft, dh auch ein Datumstext wie "1.1.2019" wird mit IsNumeric ein WAHR ergeben.
dh wenn du Datumswerte erkennen willst, musst du auf die Reihenfolge der Bedingungsprüfungen achten und zuerst auf Datumswerte prüfen und danach auf Zahlen.
also als ganzes etwa so, zusätzlich noch zwei Methoden, um den Code zu kürzen
(Textboxtext in Variable, WITH-Klammer um nicht jedesmal die Zelle hinschreiben zu müssen)
Dim txt As String
txt = TextBox2.Text
With WS1.Cells(xZeile, 2)
.NumberFormat = "general"
If txt  "" Then
If IsDate(txt) Then
.NumberFormat = "DD.MM.YYYY"
.Value = CDate(txt)
ElseIf IsNumeric(txt) Then
.NumberFormat = "#,##0.00 $"
.Value = CDbl(txt)
ElseIf Left(txt, 1) = "=" Then
.FormulaLocal = txt
Else
.Value = txt
End If
End With
Gruß Daniel
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 13:18:23
Daniel
wobei meiner Ansicht nach folgendes reichen sollte, da Excel auch vieles Automatisch regelt.
lediglich das Währungsformat müsste explizit angegeben werden, wenn eine Kommazahl vorhanden ist
with WS1.Cells(xZeile, 2)
.NumberFormat = "General"
.FormulaLocal = Textbox2.Text
if isnumeric(Textbox2.Text) and Instr(Textbox2.Text, ",") Then
.Numberformat = "#.##0,00 $"
end if
end with
Gruß Daniel
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 13:32:59
Peter
Hallo Daniel,
besten Dank für Deine Hilfe. Ich habe Deinen ersten Vorschlag eingebaut. Es fehlte das zweite "End If". Habe ich eingefügt.
Zahl = 12 wird übertragen
Datum = 12.01.2019 wird übertragen
Währung = 12,50 € wird übertragen - aber in Listbox nicht angezeigt als Währung
Zahl = 20,00 wird übertragen als Währung mit € in Listbox wird 20 angezeigt
Text = Test wird übertragen
Formel wird einwandfrei übertragen
Es liegt also nur noch ein Fehler in der Diffenzierung von Währung und Zahl mit Stellen nach Komma vor.
Bezüglich der Anzeige in der UF muss ich sicherlich noch entsprechende Wert eintragen.
Ich gehe davon aus, dass Du das noch lösen kannst.
Gruss
Peter
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 13:43:38
Peter
Hallo Daniel,
Deinen zweiten Vorschlag habe ich getestet:
Text i.O.
Zahl 1 i.O
Formel wird nicht übertragen Ergebnis Zahl 15 ?
Zahl mit 2 Stellen oder Währung mit zwei Stellen und € wird beidemal als 15,33000 € angezeigt.
Dein erster Vorschlag ist deutlich besser.
Gruss
Peter
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 14:29:10
Daniel
nimm das, was für dich am besten funktioniert.
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 16:36:57
Peter
Hallo Daniel,
kann ich Deiner letzten Mitteilung nach erkennen, dass Du keine Lust mehr hast oder ich hoffe täusche mich. Es geht nur noch um die Unterscheidung
Zahl oder Währung
Siehst Du da ein Problem?
Würde mich sehr freuen, wenn Du das nochmals ansehen könntest.
Gruss
Peter
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 16:49:12
Daniel
HI
wie unterscheiden sich denn Zahl und Währung, wenn du sie eingibst?
sind ja im Prinzip beides Zahlen.
oder du gibst bei Zahlen das Währungssymbol mit ein.
dann kannst du prüfen, ob dieses an der entsprechenden Stelle in der Eingabe vorhanden ist und dann entsprechend reagieren.
Gruß Daniel
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 16:53:13
Peter
Hallo Daniel,
ich gebe folgendes bezüglich Zahlen ein:
1. Zahl ohne Stellen nach Komma - z. B. "2"
2. Zahl mit Stellen nach Komma - z. B. "2,11"
3. Zahl als Währung - z. B. "2,11 €"
Gruss
Peter
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 17:11:43
Daniel
dann musst du prüfen, welches das rechte Zeichen in der TextBox ist und wenn es sich um ein Währungssymbol handelt, entsprechend reagieren.
die Prüfung kannst du so machen:
if Textbox1.Like "*[€$]" Then

wobei du zwischen den eckigen Klammern alle zulässigen Währungsymbole auflisten solltest (sieht dann nochmal anders aus, wenn du keine Währungsymbole, sondern die Kürzen aus drei Zeichen verwenden möchtest)
bei der Umwandlung in eine Zahl solltest du darauf achten, dass nur beim Euro-Symbol (bzw dem Währungsymbol deiner Ländereinstellung) der Text von IsNumeric als Zahl erkannt wird und mit CDbl in eine solche gewandelt werden kann.
bei anderen Währungsymbolen wird der Inhalt wie normaler Text behandelt, dh du müsstest dann das Währungsymbol voher abtrennen.
Gruß Daniel
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 17:46:49
Peter
Hallo Daniel,
ich war in der Zwischenzeit nicht untätig.
Folgender Code funktioniert einwandfrei:
~f
If TextBox2 "" And Not IsNumeric(TextBox2.Text) Then
WS1.Cells(xZeile, 2) = (TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
ElseIf TextBox2 "" And (TextBox2.Text) = Format(TextBox2, "0") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = (TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "0" 'Formatiert als Standard
ElseIf TextBox2 "" And (TextBox2.Text) = Format(TextBox2, "#,##0.00") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Text) 'cdbl überträgt als Zahl
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00" 'Formatiert als Standard
ElseIf TextBox2 "" And (TextBox2.Text) = Format(TextBox2, "#,##0.00 €") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Text) 'cdbl überträgt als Zahl
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00 $" 'Formatiert als Standard
End If
If TextBox2 "" And Left(TextBox2, 1) = "=" Then 'funktioniert Formel
WS1.Cells(xZ~eile, 2).Formula = "="""""
WS1.Cells(xZeile, 2).FormulaLocal = TextBox2.Value
End If
~f
Was sich nicht einbinden lässt ist die letzte Anwendung bezüglich der Formel.
Falls Du hier keine Verbesserung bzw. stabileren Lauf erkennst, würde ich meinen, dass das Problem gelöst ist.
Ich möchte mich nochmals für Deine Geduld und Deine Hilfe recht herzlich bedanken.
Gruss
Peter
Anzeige
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
17.01.2019 22:26:01
Daniel
Hi
sorry aber kannst du mir bitte erklären, was diese Programmzeile soll?
WS1.Cells(xZ~eile, 2).Formula = "="""""
warum prüfst du immer noch in jedem IF, ob die Textbox leer ist?
es reicht doch, diese Prüfung einmal an den Anfang zu stellen, dann brauchst du das im weitern jedes mal mit abbprüfen.
das problem ist halt, dass es nicht sinnvoll scheint, dir zu helfen wenn du das was man dir zeigt nicht umsetzt.
Gruß Daniel
AW: Formel in UF-Textbox eingeben - Formel in Tabelle
18.01.2019 12:58:16
Peter
Hallo Daniel,
ich habe zuerst einmal geprüft, ob der Code funktioniert, ich hatte nicht die Absicht Deine Vorschläge nicht umzusetzen. Nun habe ich die von Dir angegebenen Verbesserungen umgesetzt.
~f
Dim txt2 As String
txt2 = TextBox2.Text
With WS1.Cells(xZeile, 2)
.NumberFormat = "general"
If txt2 "" Then
If IsDate(txt2) Then
WS1.Cells(xZeile, 2) = CDate(txt2)
WS1.Cells(xZeile, 2).NumberFormat = "DD.MM.YYYY" 'Formatiert als Datum
ElseIf Not IsNumeric(txt2) Then
WS1.Cells(xZeile, 2) = (txt2)
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
ElseIf (txt2) = Format(TextBox2, "0") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = (txt2)
WS1.Cells(xZeile, 2).NumberFormat = "0" 'Formatiert als Standard
ElseIf (txt2) = Format(TextBox2, "#,##0.00") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = CDbl(txt2) 'cdbl überträgt als Zahl
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00" 'Formatiert als Standard
ElseIf (txt2) = Format(TextBox2, "#,##0.00 €") Then 'funktioniert als Standardzahl
WS1.Cells(xZeile, 2) = CDbl(txt2) 'cdbl überträgt als Zahl
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00 $" 'Formatiert als Standard
End If
If Left(txt2, 1) = "=" Then 'funktioniert Formel
WS1.Cells(xZeile, 2).FormulaLocal = TextBox2.Value 'überträgt die eingegebene Formel
End If
End If
End With
~f
Es funktioniert einwandfrei. Nochmals besten Dank für Deine Hilfe.
Wünsche Dir ein schönes Wochenende.
Gruss
Peter
Anzeige

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige