Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1112to1116
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
Fehler beim kompilieren
lisa
Hallo
In meiner Recherche komme ich nicht weiter und bitte Euch um Hilfe
Hier erst mein Projekt welches funktioniert.
Was nicht funktioniert folgt etwas tiefer.
Ich habe eine Userform mit 5 Textboxen und einer Summenbox!
Die Berechnung erfolgt super per Eingabe der Werte in die einzelnen Textboxen 1-5
Zur Info, der Code der Txt1-5 lautet:
Option Explicit
Private Sub txt1_Change()
Call allChange
End Sub

Private Sub txt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Call all_KeyPress(KeyAscii)
End Sub

Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call all_Exit(txt1)
End Sub

Private Sub allChange()
Dim TxtBox  As MSForms.Control
Dim dblSum  As Double
On Error Resume Next
For Each TxtBox In Me.Controls
If TypeOf TxtBox Is MSForms.TextBox Then
If TxtBox.Name  "txtSumme" Then
If TxtBox = "" Then TxtBox = 0
dblSum = dblSum + CDbl(TxtBox)
End If
End If
Next TxtBox
txtSumme = Format(dblSum, "#,#0.00 ")
On Error GoTo 0
End Sub

Private Sub all_Exit(TxtBox As MSForms.TextBox)
TxtBox = Format(TxtBox, "#,#0.00 ")
End Sub

Private Sub all_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub

Nun zu meinem nicht funktionierenden Teil:
Ich möchte per Button mein Summenergebnis ausgeben bekomme aber immer eine Fehler, nämlich
Fehler beim kompilieren Variable nicht definiert
Private Sub CommandButton1_Click()
z = 1
Do While Cells(z, 1)  ""
z = z + 1
Loop
Cells(z, 5) = CDbl(txtSumme)
Unload Me
End Sub
Kann mir jemand sagen oder zeigen, wie ich den Wert aus der Summenbox in die Celle b1 und wenn diese gefüllt ist eben b3 usw ausgebe?
Danke für die Hilfe
Lisa
AW: ListView 6.0
27.10.2009 14:11:12
Alfons
Hallo Lisa,
vermutlich hast Du z nicht deklariert.
versuch's mal damit:
Private Sub CommandButton1_Click()
Dim z as Integer
z = 1
...
Gruß
Alfons
http://vba1.de
oh, falscher Betreff (owT)
27.10.2009 14:12:31
Alfons
.
AW: Fehler beim kompilieren
27.10.2009 14:14:47
JogyB
Hi.
Du hast die Variable z nicht deklariert, deswegen der Fehler.
Und wie kommst Du darauf, dass Du in Spalte B etwas prüfst und ausgibst?
Du prüfst Spalte A (=1) auf Werte und gibst dann in Spalte E (=5) aus.
Wenn Du in der ersten leeren Zeile von Spalte B etwas ausgeben willst, dann so:
Cells(Rows.Count, 2).End(xlUp).Offset(1) = CDbl(txtSumme)
Gruss, Jogy
Anzeige
AW: Fehler beim kompilieren
27.10.2009 15:28:56
lisa
Hallo zusammen
Jetzt klappt es prima! Dankeschön. Schön das es Euch gibt!
Gruß Lisa
AW: nicht alle Txt Boxen rechnen nur eine Auswahl
27.10.2009 16:28:27
lisa
Hallo
Ich habe da noch einmal einen Frage!
Wie kann hier der Code umgestellt werden, dass nicht alle Textboxen in der Summierung berücksichtigt werden, sondern nur die Textbox 1-5 und Textbox 7_9?
Private Sub txt1_Change()
Call allChange
End Sub
Private Sub txt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Call all_KeyPress(KeyAscii)
End Sub
Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call all_Exit(txt1)
End Sub
Private Sub allChange()
Dim TxtBox  As MSForms.Control
Dim dblSum  As Double
On Error Resume Next
For Each TxtBox In Me.Controls
If TypeOf TxtBox Is MSForms.TextBox Then
If TxtBox.Name  "txtSumme" Then
If TxtBox = "" Then TxtBox = 0
dblSum = dblSum + CDbl(TxtBox)
End If
End If
Next TxtBox
txtSumme = Format(dblSum, "#,#0.00 ")
On Error GoTo 0
End Sub
Private Sub all_Exit(TxtBox As MSForms.TextBox)
TxtBox = Format(TxtBox, "#,#0.00 ")
End Sub
Private Sub all_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub

Kann mir hier jemand weiterhelfen?
Schönen Dank im voraus!
Lisa
Anzeige
AW: nicht alle Txt Boxen rechnen nur eine Auswahl
28.10.2009 06:13:22
fcs
Hallo Lisa,
dann muss du in deiner Summierungsprozedur eine Prüfung der Textboxnamen einbauen.
Gruß
Franz
Beispiel:
Private Sub allChange()
Dim TxtBox  As MSForms.Control
Dim dblSum  As Double
On Error Resume Next
For Each TxtBox In Me.Controls
If TypeOf TxtBox Is MSForms.TextBox Then
If TxtBox.Name  "txtSumme" Then
Select Case TxtBox.Name
Case "Textbox6"
'diese Textboxen nicht summieren
Case Else
If TxtBox = "" Then TxtBox = 0
dblSum = dblSum + CDbl(TxtBox)
End Select
End If
End If
Next TxtBox
txtSumme = Format(dblSum, "#,#0.00 ")
On Error GoTo 0
End Sub

Anzeige
AW: schönen Dank! das war es. SUPER!!! oT
28.10.2009 14:07:12
lisa
AW: und bei Subtraktion von Textboxen?
28.10.2009 15:03:19
Textboxen?
Hallo, ich noch einmal!
Ist mir jetzt unangenehm, aber wie stelle ich die Summenfunktion auf Subtraktion um?
Weiß jemand wie das funktioniert?
Wird das nur in der Summenfunktion gemacht?
Ich würde hier gern das das von der Textbox31, die einen Wert beinhaltet, der Wert der SummenTxtBox abgezogen wird?
Jemand einen Idee?
Tut mir echt Leid, aber ich habe keine Idee und in der Hilfe und Recherche habe ich noch nichts finden können!
Gruß Lisa
AW: und bei Subtraktion von Textboxen?
28.10.2009 15:08:02
Textboxen?
Hallo, ich noch einmal!
Ist mir jetzt unangenehm, aber wie stelle ich die Summenfunktion auf Subtraktion um?
Weiß jemand wie das funktioniert?
Wird das nur in der Summenfunktion gemacht?
Ich würde hier gern das das von der Textbox31, die einen Wert beinhaltet, der Wert der SummenTxtBox abgezogen wird?
Jemand einen Idee?
Tut mir echt Leid, aber ich habe keine Idee und in der Hilfe und Recherche habe ich noch nichts finden können!
Gruß Lisa
Anzeige
AW: und bei Subtraktion von Textboxen?
28.10.2009 23:58:23
Textboxen?
Hallo Lisa,
als 1. Schritt muss du die Textbox31 auch von der Summenberechnung ausschliessen.
Dazu änderst du
Private Sub allChange()
Dim TxtBox  As MSForms.Control
Dim dblSum  As Double
On Error Resume Next
For Each TxtBox In Me.Controls
If TypeOf TxtBox Is MSForms.TextBox Then
If TxtBox.Name  "txtSumme" Then
Select Case TxtBox.Name
Case "Textbox6", "Textbox31", "txtDiff31"
'diese Textboxen nicht summieren
Case Else
If TxtBox = "" Then TxtBox = 0
dblSum = dblSum + CDbl(TxtBox)
End Select
End If
End If
Next TxtBox
txtSumme = Format(dblSum, "#,#0.00 ")
call Tbox31_MinusSumme
On Error GoTo 0
End Sub

Die Subtraktion sieht prinzipiell wie folgt aus
Private Sub Tbox31_MinusSumme()
On Error Resume Next
If Me.Textbox31 = "" Then Me.Textbox31 = 0
If Me.txtSumme = "" Then Me.txtSumme = 0
Me.txtDiff31= Format(CDbl(Me.Textbox31) - CDbl(Me.txtSumme), "#,#0.00 ")
On Error GoTo 0
End Sub
Du muss also für die Differenz eine eigene Textbox anlegen - in meinem Beispiel "txtDiff31" oder du nimmst ein Label-Element, dessen Caption-Eigenschaft immer gleich der Differenz gesetzt wird.
 Me.Label_Diff31.Caption = Format(CDbl(Me.Textbox31) - CDbl(Me.txtSumme), "#,#0.00 ")
Für die Textbox31 muss du dann ggf. noch eine Exit oder Change-Prozedur erstellen, von der die Prozedur "Tbox31_MinusSumme" aufgerufen wird, wenn der Wert in der Textbox geändert wurde.
Generell kann man solle Userform-Prozeduren etwas einfacher gestalten, wenn man bei den Namen der Textboxen etwas geschickter vorgeht. Alle Textboxen, die addiert werden sollen könnte man z.b txtPlus_01 bis txtPlus_07 benennen. Dann vereinfacht sich die Summen-Prozedur zu
Private Sub allChange()
Dim TxtBox  As MSForms.Control
Dim dblSum  As Double
On Error Resume Next
For Each TxtBox In Me.Controls
If Left(TxtBox.Name, 8) = "txtPlus_" Then
If TxtBox = "" Then TxtBox = 0
dblSum = dblSum + CDbl(TxtBox)
End If
Next TxtBox
txtSumme = Format(dblSum, "#,#0.00 ")
Call Tbox31_MinusSumme
On Error GoTo 0
End Sub
und du brauchst dir keine Sorgen um die Prozedur machen, wenn im Userform weitere Textboxen ergänzt werden. Du muss dabei "nur" auf deine Systematik für die Namen achten. Leider kann es sehr mühselig sein, solche Namensänderungen nachträglich zu machen, da in den Prozeduren des UF ja auch die entsprechenden Umbenennungen gemacht werden müssen.
Gruß
Franz
Anzeige
AW: und bei Subtraktion von Textboxen?
29.10.2009 12:41:10
Textboxen?
Ich danke dir schon einmal vorab für deine Mühe
Ich werde mir erst etwas später deine Vorschläge ansehen und ausprobieren, da ich gerade in einer Schulung festsitze.
Lieben Dank, Lisa

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige