Anzeige
Archiv - Navigation
1784to1788
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
Textbox in Userform überschreibt Formel
13.10.2020 14:03:54
Luca
Hallo zusammen,
ich programmiere aktuell eine UserForm mit der ich neue Projekte anlegen und bestehende bearbeiten möchte.
Teil dieser Daten sind Meilensteine bzw. Phasen (Projektklärung, Konstruktion, Beschaffung, Montage etc.) die sich abhängig von einem Startdatum und der per Dropdown Menu ausgewählten zu bauenden Maschine berechnen. Die dazu gehörigen Informationen wie lang die einzelnen Phasen dauern sind im Namensmanager hinterlegt und werden über die INDIREKT Funktion abgerufen.
Da die Datei aufgrund der Menge an Daten unübersichtlich und vor allem in der Diskussion mit mehreren Teilnehmern schwer zu nutzen ist habe ich die UserForm angelegt, um alle Informationen auf einen Blick zu haben und diese auch einfach bearbeiten zu können. Generell funktioniert die UserForm gut leider aber werden beim Speichern die Formeln überschrieben.
Anbei einmal meine Speicherroutine:
'Speichern Schaltfläche Ereignisroutine
Private Sub CommandButton3_Click()
Dim lZeile As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Wir müssen prüfen, ob die ID Spalte auch gefüllt ist!!
If Trim(CStr(TextBox1.Text)) = "" Then
'Meldung ausgeben
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen der Speicherroutine
Exit Sub
End If
'Ausbauoption: Prüfen, ob die ID in Tabelle1 Spalte 2 schon vorhanden ist!
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 8 'Start in Zeile 8, darüber lediglich Überschriften etc.
'Schleife solange etwas in der zweiten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 2).Value)) Then
'Eintrag gefunden, TextBoxen in die Zellen schreiben
Tabelle1.Cells(lZeile, 2).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 3).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 12).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 13).Value = Format(TextBox11.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 14).Value = Format(TextBox12.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 15).Value = Format(TextBox13.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 16).Value = Format(TextBox14.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 17).Value = Format(TextBox15.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 18).Value = Format(TextBox16.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 19).Value = Format(TextBox17.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 20).Value = Format(TextBox18.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 21).Value = Format(TextBox19.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 22).Value = Format(TextBox20.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 23).Value = Format(TextBox21.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 24).Value = Format(TextBox22.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 25).Value = Format(TextBox23.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 26).Value = Format(TextBox24.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 27).Value = Format(TextBox25.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 32).Value = Format(TextBox26.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 33).Value = Format(TextBox27.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 34).Value = Format(TextBox28.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 35).Value = Format(TextBox29.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 28).Value = Format(TextBox30.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 29).Value = Format(TextBox31.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 30).Value = Format(TextBox32.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 31).Value = Format(TextBox33.Value, "dd.mm.yyyy")
Tabelle1.Cells(lZeile, 36).Value = TextBox34.Text
'Die ListBox muss nun neu geladen werden
'allerdings nur, wenn sich die Projektnummer (ID) geändert hat
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub
Gibt es eine Möglichkeit das überschriben der Formeln zu verhindern?
Vielen Dank schon einmal im Voraus!
Viele Grüße
Luca

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox in Userform überschreibt Formel
13.10.2020 14:09:59
Daniel
Hi
du weist doch, in welchen Zellen Formeln stehen und in welchen nicht.
Zellen mit Formeln dürfen nicht überschrieben werden, also einfach die Programmzeilen, in denen das passiert, löschen.
Wenn in den TextBoxen formelergbenisse angezeigt werden, dann kann man die in der Userform sowieso nicht ändern.
Gruß Daniel
AW: Textbox in Userform überschreibt Formel
13.10.2020 14:42:49
Luca
Hi Daniel,
vielen Dank für deine Antwort!
Das stimmt natürlich, vielleicht hätte ich dazu sagen sollen, dass die Daten vorerst immer erstmal auf diesen Formeln bestehen. Aber es kommt auch vor, dass sich Projektphasen verschieben. Diese Verschiebungen würde ich dann gerne über die UserForm anpassen bzw. ein Datum manuell einfügen
Anzeige
AW: Textbox in Userform überschreibt Formel
13.10.2020 15:01:20
Daniel
kommt jetzt darauf an.
als erstes solltest du überprüfen, ob TextBoxinhalt und Zellwert unterschiedlich sind (Text/Zahl beachten!) und nur dann zurückschreiben, wenn die Werte sich unterscheiden.
dann wäre die Frage, ob wirklich die Formeln überschrieben werden sollen ober ob es nicht sinnvoller wäre, dann auf die Hintergrundtabelle aus der die Daten kommen, zuzugreifen und dort die Änderungen einzupflegen.
Ist natürlich dann aufwendiger, die richtige Stelle zu finden.
Gruß Daniel

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige