Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
ich weiß genau was Du möchtest - und zwar vom ersten Wort an. Und ich weiß aber auch, dass Dein Wunsch grober Unfug ist. Ich kann Dir das programmieren (und andere sicher auch) - aber für Unfug hab ich keine Lust - zumindest so lange, wie Du a) nicht sagst, weshalb die vorgeschlagene Lösung für Dich nicht in Frage kommt und b) Deinen Ton änderst.
Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:1 Nutzer sagt Danke an {Boris} für diesen Beitrag 28
• schauan
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Deinen Elan, uns mal zu erklären, warum die Verwendung einer Hilfszelle zur Eingabe nicht möglich ist, geht eigentlich gegen Null.
Lösungsansatz: Schreibe erst mal die Formel in die Zelle D34. Den Code dazu kannst Du aufzeichnen und später verwenden.
Du musst dann prüfen, ob ein handgeschriebener Wert durch die Formel ersetzt werden soll. Da Dein Benutzer jederzeit etwas reinschreiben kann, egal, wie die anderen Bedingungen aussehen, wird nach einer erneuten Berechnung wohl eine Entscheidung des Benutzers erforderlich sein, ob der eingetragene Wert durch die Formel ersetzt werden soll. Um eine Automatik zu erreichen, müsstest Du voraussichtlich das Calculate-Ereignis nutzen. Oder Du tust auf Eingaben in allen Bezugszellen der für die Berechnung verwendeten Formeln prüfen (durch das Change-Ereignis). Allerdings könnte zuweilen Dein handgeschriebener Wert dann wohl schneller wieder weg sein als Du denkst - insbesondere beim Calculate-Ereignis. Oder Du baust dort eine Sicherheitsabfrage ein, wo der Benutzer per MsgBox eingreifen kann.
Solltest Du keine Formel in D34 wünschen, kannst Du auch 1) die Formel als "Nebenrechnung" in eine andere Zelle platzieren und per VBA dann zwischen dem handgeschriebenen Wert und dem Formelergebnis wechseln 2) die Formel im VBA verwenden - geht bei vielen / einfacheren Berechnungen mit Application.Evaluate("Formel") (Ersatzweise auch mit [Formel] ) 3) die Berechnung im VBA mit If usw. nachbilden
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Niko
Registriert seit: 12.04.2014
Version(en): Office 365
(21.04.2024, 21:57)Niko schrieb: Alles andere ist milde ausgedrückt nicht hilfreich. Hier mal ein nicht hilfreicher Ansatz, wie schon von anderen genannt. Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | D | E | F | 1 | | | | Formel | Eingabe | | 2 | 5 | 7 | | 35 | 33 | 33 | 3 | 5 | 7 | | 35 | | 35 |
Zelle | Formel | D2 | =A2*B2 | F2 | =WENN(E2="";D2;E2) | D3 | =A3*B3 | F3 | =WENN(E3="";D3;E3) |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 | Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg |
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:1 Nutzer sagt Danke an shift-del für diesen Beitrag 28
• {Boris}
Registriert seit: 12.03.2016
Version(en): Excel 2003
21.04.2024, 23:27
(Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2024, 23:32 von Gast 123.)
Hallo es ist kein Problem eine VBA Lösung zu finden, aber die Logik der Auswertung darf sich nicht selbst "ins Knie schiessen"! Ich habe deinen Code mal so erweitert, das bei Union auch die Zellle rngE27 ausgewertet wird. Die Mitarbeiter Eingabe. Die IF Then Auswertung habe ich geändert, s. unten. Am Anfang wird jetzt zuerst immer der Wert 39,00 in D34 gesetzt. Wenn aber in den Zellen D42 oder E42 Werte stehen, werden diese Werte IMMER nach D34 übertragen! Logisch! Ob das richtig oder falsch ist kann ich nicht beurteilen, ich habe diese Datei ja nicht aufgebaut. Beim testen schrieb ich einmal versehentlich einen Wert in Zelle E42, als sie zufällig nicht gesperrt war. Der bleibt dann ewig drin stehen, weil das Makro diese Zelle auf Protected setzt, nicht von Hand änderbar. Der Text "Name" steht in der Zelle D27, Eingabe in E27. Und in Zelle D40, DropDown Liste in E40. Warum ist oben KEINE DropDown Liste?? Nur unten?? Ich weiss nicht ob dir der geänderte VBA Code weiterhilft. Leider funktionieren einige Formeln bei mir nicht richtig. Ich habe nur eine alte Excel 2003 Version, musste die Datei mit LibreOffice konvertieren. Da huddelt es manchmal. mfg Gast 123 Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet, pass As String Dim rngD42 As Range, rngE42 As Range, rngD34 As Range, rngE40 As Range, rngE27 As Range ' Set the worksheet Set ws = ThisWorkbook.Sheets("Startseite") ' Set password pass = "ask2019" ' Check if the changed cell is within the specified range Set rngD42 = ws.Range("D42") '** Formel Set rngE42 = ws.Range("E42") '** Formelergebnis Set rngD34 = ws.Range("D34") 'Arbeitszeit wöchentlich Set rngE40 = ws.Range("E40") '** -Name Eingabe Set rngE27 = ws.Range("E27") 'Name Eingabe ganz oben If Not Intersect(Target, Union(rngE27, rngD42, rngE42, rngE40)) Is Nothing Then
' Unprotect the worksheet ws.Unprotect pass On Error GoTo ende Application.EnableEvents = False ' Check conditions and update D34 accordingly rngD34.Value = "39" If rngD42 <> "" Then rngD34.Value = rngD42.Value If rngE42 <> "" Then rngD34.Value = rngE42.Value If rngE40 <> "" Then rngE27.Value = rngE40.Value ' Protect the worksheet ende: Application.EnableEvents = True ws.Protect pass End If End Sub
Nachtrag bei der Auswertung bitte beachten welche IF Then Anweisung den Vorrang hat! Es ist schon ein Unterschied ob man rngD42 oder rngE42 zuerst auswertet!!
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• Niko
Registriert seit: 25.11.2018
Version(en): 2016 Plus
Möchte mich bei dir Bedanken. Es ist die IF Auswertung an der ich gescheitert war, nun sehe ich auch den unterschied. Es ist sehr nah an das was ich erreichen möchte. Nochmals vielen Dank . Was die Kommentare von so manchen angeht, kann ich nur sagen das diese unangemessen und ungeeignet sind, um eine anderen Benutzer zu unterstützen...schade. Ein Dankeschön, auch an “schauan“ das er sich am Ende doch das ganze angesehen hat und sehr gute denk stützen gegeben hat, allerdings vermisse den Code dafür . Nichtdestodrotz diese haben mich Gedanklich weitergeholfen. Am Ende möchte ich trotzdem alle Danken die mir, Ihre Zeit und Geduld gegeben haben. Wünsche noch einen angenehmen Wochenanfang.
Registriert seit: 28.08.2022
Version(en): 365
Hi Niko, ich habe mir jetzt lange überlegt, ob ich überhaupt antworten soll. Dein striktes Ablehnen von Formelvorschlägen ohne jede weitere Begründung zeugt von ziemlicher Beratungsresistenz. Nicht ohne Grund raten dir praktische alle Helfer zu dieser Lösung. Ich übrigens auch!!! Aber so ein Ungetüm von umständlichen Code kann ich mir nicht ansehen. Statt ständig die Ausgangszelen zu Prüfen, reicht es doch D34 zu überwachen. Wenn der Benutzer etwas reinschreibt bleibt dies stehen. Wird der Inhalt gelöscht, so wird automatisch die Formel reingeschrieben. Fertig. Code: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("D34")) Is Nothing Then With Range("D34") If .Value = "" Then On Error Resume Next Application.EnableEvents = False .FormulaLocal = "=WENN(D42="""";39;WENN(E42<>"""";E42;39))" Application.EnableEvents = True On Error GoTo 0 End If End With End If End Sub
Theoretisch könnte man die Formel auch irgendwo aufs Blatt schreiben (dann am besten mit $-Zeichen die Zellen absolut setzen) und in die Zelle kopieren, dann könnte man die Formel ohne VBA-Kenntnisse jederzeit leicht anpassen. Und nochmals: Der Weg über eine Hilfszelle für die Händische Eingabe, ist der Weg auf dem so eine Problemstellung am Besten gelöst wird.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Folgende(r) 2 Nutzer sagen Danke an HKindler für diesen Beitrag:2 Nutzer sagen Danke an HKindler für diesen Beitrag 28
• Rudi'S, Niko
Registriert seit: 25.11.2018
Version(en): 2016 Plus
Hallo Helmut, danke für deine Zeit und Mühe, auch wenn dies nicht bei mir funktionieren mag.
Danke auch für deine Meinung. Ich bin jedoch der Ansicht, dass wir alle unterschiedliche Kenntnisse und Perspektiven haben, die es zu respektieren gilt. Es tut mir leid, wenn es Missverständnisse gab. Ich bin offen für konstruktive Kritik und Feedback, jedoch schätze ich einen respektvollen Umgang miteinander. Glaube das ich in mein alter (65) dies unterscheiden zu können.
Bin immer bereit zu lernen und mich zu verbessern. Wenn es konkrete Vorschläge gibt, bin ich gerne bereit, sie anzuhören, anzunehmen und darüber zu diskutieren. Habe nach einem Lösungsvorschlag in dieser Richtung gefragt und nicht in einer Formel (mir ist bewusst, dass es ein unterschied sein mag) weil es da wo ich es letztendlich einbinden möchte, den Unterschied machen wird. Danke nochmals für Zeit und Mühe.
Registriert seit: 28.08.2022
Version(en): 365
Hi Niko, (22.04.2024, 16:21)Niko schrieb: danke für deine Zeit und Mühe, auch wenn dies nicht bei mir funktionieren mag. Was genau funktioniert nicht? Ich habe meine Code an deiner Beispieldatei getestet und bei mir funktioniert er.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 25.11.2018
Version(en): 2016 Plus
Hallo, danke nochmals und vorab für die Rückantwort. Anbei die Datei mit den vorgegeben code.
EAuGFB_TEST.xlsm (Größe: 20,11 KB / Downloads: 2)
Wenn ich die werte ändere in E und D42, erscheinen diese nicht in D34. Wenn es bei dir funktioniert, mache ich wahrscheinlich irgendwo ein Fehler ohne ihn nachverfolgen zu können. Thx again
Registriert seit: 28.08.2022
Version(en): 365
22.04.2024, 18:38
(Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2024, 19:01 von HKindler.)
Hi, Drücke bitte nach dem Einfügen des Codes einmalig die Entf-Taste während Zelle D34 selektiert ist. Damit wird nämlich die Formel dort eingetragen. Und nur dann kann die Zelle auf Eingaben in D42 und E42 reagieren. Sobald du irgendwas in D34 eingibst, wird dies übernommen. Wenn wieder die Formel gelten soll, dann musst du D34 löschen. PS: habe deine Datei nicht runter geladen, da ich gerade keinen Zugriff auf Excel habe. Übrigens: wenn man solche VBA-Spielereien nutzen will, sollte man wenigstens einen vorgegebenen Code verstehen können, sonst wirst du damit nicht glücklich werden.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
|