Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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

Formatierung und Eigabebestätigung

Formatierung und Eigabebestätigung
26.03.2016 13:39:32
Michael
Hallo liebe Excel VBA Spezialisten,
ich verzweifele hier leider.
1.Ich habe mit folgendem Befehl eine Textbox formatiert:
Private Sub txtEraMitarbeiter_Change()
FormularMitarbeiter.txtEraMitarbeiter.Value = Format(FormularMitarbeiter.txtEraMitarbeiter. _
Value, "###0.00 %")
End Sub
Werden nun die Daten aus der Excel Datei in die Textbox über folgenden Befehl eingelesen werden die auch richtig angezeigt.
Private Sub ComboEraJahr_Change()
'Daten aus Spalte B und aktueller ZeilenNr in Textbox übertragen
txtEraMitarbeiter.Text = Sheets("ERA").Cells(ComboEraJahr.ListIndex + 1, 8)
txtEraAzubi1.Text = Sheets("ERA").Cells(ComboEraJahr.ListIndex + 1, 9)
txtEraAzubi2.Text = Sheets("ERA").Cells(ComboEraJahr.ListIndex + 1, 10)
txtEraAzubi3.Text = Sheets("ERA").Cells(ComboEraJahr.ListIndex + 1, 11)
txtEraAzubi4.Text = Sheets("ERA").Cells(ComboEraJahr.ListIndex + 1, 12)
End Sub


Gebe ich jetzt eine Wert manuell in die Textbox ein, zeigt er mir anstatt z.B 1%, 100% an.

Lösche ich den Befehl Textbox formatieren und lese den Wert in das Tabellenblatt aus, so nimmt er die Formatierung des Tabellenblatts nicht an. (brauche aber % weil die Berchnung in einer anderen Zelle sonst nicht stimmt).
Ich möchte den eingetragenen Wert von der Textbox in das Tabellenblatt so übertragen, dass der _ Wert als Prozent Formatiert in das Tabellenblatt eingetragen wird. Dieses soll aber vorher abgefragt werden und falls ich abbrechen möchte soll der Wert nicht übertragen werden. Leider weiss ich nicht was ich bei =vbNo Then ..... eintragen soll. Meine Überlegung wie unten klappt leider nicht. Startet zwar neu, aber der Wert wird trotzdem ins Tabellenblatt übermittelt.

Private Sub cmdEra_Click()
'Fragt ab ob Tariferhöhung wirklich übernommen werden soll
If MsgBox("Möchtest du den die Tariferhöhung wirklich übernehmen?", vbYesNo) = vbNo Then
Unload Me
FormularMitarbeiter.Show
End If
'Fügt die eingetragenen Werte in Era  ein und schliesst das Formular
Dim intErsteLeereZeile As Long
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraMitarbeiter.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi1.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi2.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi3.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi4.Value
Unload FormularMitarbeiter
FormularMitarbeiter.Show
End Sub

Würde mich sehr freuen hier eine Lösung zu bekommen. (Ich denke für euch kein Problem)
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung und Eigabebestätigung
28.03.2016 08:21:54
hary
Moin Michael
Nimm statt des Changeereigniss
Exit oder AfterUpdate.
Private Sub txtEraMitarbeiter_Exit(ByVal Cancel As MSForms.ReturnBoolean)
txtEraMitarbeiter = Format(CDbl(txtEraMitarbeiter) / 100, "###0.00 %")
End Sub

Change greift gleich bei der ersten Eingabe und das wir schwierig bei z.B. 12
Zum 2.Problem: setz einen Elsezweig.
Private Sub cmdEra_Click()
Dim intErsteLeereZeile As Long
'Fragt ab ob Tariferhöhung wirklich übernommen werden soll
If MsgBox("Möchtest du den die Tariferhöhung wirklich übernehmen?", vbYesNo) = vbNo Then
Unload Me
FormularMitarbeiter.Show
Else
'Fügt die eingetragenen Werte in Era  ein und schliesst das Formular
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraMitarbeiter.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi1.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi2.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi3.Value
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtEraAzubi4.Value
Unload Me
FormularMitarbeiter.Show
End If
End Sub

Denk daran Textfelder geben nur Text zurueck.
gruss hary

Anzeige
AW: Formatierung und Eigabebestätigung
28.03.2016 14:39:24
Michael
Hallo Harry, erstmal frohe Ostern.
Vielen Dank für deine Hilfe!
Klappt jetz super mit dem einlesen. Neu anlegen und auslesen funktioniert auch. Änderungen speichern auch.
Wenn ich jetz aber einlese und dann in eine Textbox klicke, diese dann ohne einen neuen Wert einzutragen oder den Wert komplett entferne und dann verlasse, bekomme ich die Fehlermeldung Laufzeitfehler 13 "Typen unverträglich und markiert mir das hier.
Private Sub txtEraAzubi1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
txtEraAzubi1 = Format(CDbl(txtEraAzubi1) / 100, "###0.00 %")
End Sub
Geb ich neue Werte ein, kannn ich diese Änderungen auch speichern/hinzufügen
Gruß

Anzeige
AW: Dann pruefen
29.03.2016 06:13:52
hary
Moin Michael
Dann erst pruefen ob leer oder rechte Zeichen ein % ist dann Sub beenden.
Private Sub txtEraAzubi1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txtEraAzubi1 = "" Or Right(txtEraAzubi1, 1) = "%" Then Exit Sub
txtEraAzubi1 = Format(CDbl(txtEraAzubi1) / 100, "###0.00 %")
End Sub

gruss hary

AW: Dann pruefen
29.03.2016 16:18:17
Michael
Hallo Harry, vielen Dank nochmal, klappt jetzt alles!
Bis zum nächsten Problem :-)

AW: Formatierung und Eigabebestätigung
28.03.2016 14:22:06
Michael
Hallo Harry, erstmal frohe Ostern.
Vielen Dank für deine Hilfe!
Klappt jetz super mit dem einlesen. Neu anlegen und auslesen funktioniert auch. Änderungen speichern auch.
Wenn ich jetz aber einlese und dann in eine Textbox klicke, diese dann ohne einen neuen Wert einzutragen oder den Wert komplett entferne und dann verlasse, bekomme ich die Fehlermeldung Laufzeitfehler 13 "Typen unverträglich und markiert mir das hier.
Private Sub txtEraAzubi1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
txtEraAzubi1 = Format(CDbl(txtEraAzubi1) / 100, "###0.00 %")
End Sub
Geb ich neue Werte ein, kannn ich diese Änderungen auch speichern/hinzufügen
Gruß
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige