1.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen, nach langem Suchen bin ich wohl auf die richtige Seite gekommen und ich hoffe, dass mir jemand helfen kann. Mein Zuhause ist eigentlich Excel und ich habe den Schritt gewagt mich in der VBA_Sprache anzusiedeln.

Sachverhalt:

Ich habe in VBA eine User Form mit Kegler Daten und mehreren TextBoxen (60 Wurf) angelegt.
Meine Probleme sind es zurzeit, dass in Excel die Uhrzeit (19:30) eingegeben wird. In VBA wird diese als Dezimalzahl angezeigt. Ich habe schon alles versucht, aber ich bekomme das nicht hin.

Ferner habe ich für die 60 Würfe je Kegler eine User Form angelegt.
TextBox 14 - Textbox23 werden mit Daten gefüllt.
In der TextBox 23 wird die Summe der 10 TextBoxen eingestellt.
Private Sub TextBox15_Change()

Me.TextBox24 = Val(Me.TextBox14) + Val(Me.TextBox15) + Val(Me.TextBox16) + Val(Me.TextBox17) + Val(Me.TextBox18) + Val(Me.TextBox19) + _Val(Me.TextBox20) + Val(Me.TextBox21) + Val(Me.TextBox22) + Val(Me.TextBox23)
End Sub

In der TextBox 24 will ich eine (Über/Unter Summe -70) einstellen.
Also Ergebnis TextBox (24-70), in der TextBox 25 soll dann die Differenz (80-70= +10) stehen.
Das bekomme ich nicht hin.

Kann mir da jemand unter die Arme greifen?

14 Antworten

0 Punkte
Beantwortet von
Hallo Stanley,

also mit den Regeln beim Kegeln kenn' ich mich (noch) nicht so
aus. Bin mehr der Bowling-Typ. Aber wenn du mir etwas hilfst,
bekommen wir das bestimmt gemeinsam hin.

Das Problem mit der Uhrzeit ist schnell gelöst. z.B:
TextBox1.Text = Format(Range("B10").Value, "hh:mm")

Das Problem mit der Summe, hast du sicher schon selbst gelöst.
Schließlich verwendest du bereits die Funktion Val() welche Text in
Zahlen umwandelt, damit man mit ihnen rechnen kann.

Das Me kannst du hier weglassen, das verweist auf das Modul, in
dem der Code steht (hier ein Userform). Das wird aber nur selten
benötigt. Dafür solltest du die Berechnung auslagern, da du das
Change-Event jeder Textbox ansprechen musst. Hier ein Beispiel:

Private Sub TextBox14_Change()
  Berechnen
End Sub

Private Sub TextBox15_Change()
  Berechnen
End Sub

Private Sub TextBox16_Change()
  Berechnen
End Sub

Sub Berechnen()
  TextBox24 = Val(TextBox14) + Val(TextBox15) + Val(TextBox16) - 70
  TextBox25 = Val(80 + TextBox24)
End Sub

Was in Textbox 25 stehen soll hab ich noch nicht ganz kapiert. Ist
das so richtig? Denn Summe (z.B. 80) - 70 = 10 steht schon in
Textbox 24.

Mr. K.
0 Punkte
Beantwortet von
Ich meinte natürlich TextBox25 = 80 + Val(TextBox24)
0 Punkte
Beantwortet von
Hei xlKing,
 vielen lieben Dank für deine Antwort.

Wie schon gesagt, bin ich ein Anfänger in Sachen VBA-Excel. Ich habe deine Antworten gelesen und auch versucht umzusetzen. Zur Zeit habe ich da einige Schwierigkeiten.

Das mit der Uhrzeit habe ich kapiert, nur ich weiß nicht von ich das einfügen soll.
Meine Code zur Initialisierung lautet:

Private Sub UserForm_Initialize()
    'Initialisierung'
    Dim i As Integer
    For i = 2 To Cells(Cells.Rows.Count, 1).End(xlUp).Row
     Me.ComboBox1.AddItem Cells(i, 1) & "; " & Cells(i, 2) & ", " &      Cells(i, 3)
          Next i
        Me.ComboBox1.ListIndex = 0
End Sub
Im Feld ("m2") steht die Uhrzeit, zur Zeit 0,01.

Muss ich das hier einbauen?

Richtig ist, dass das Problem mit der Summe gelöst ist.

Wo ich ich im Moment schwimme, wo und wie lagert man denn aus?

Das mit der Berechnung meine ich so:
Der Kegler hat 60 Würfe und die 7 ist der Schnitt. Je 10er Runde wird gerechnet.
10 x 7 = 70 - Schnitt (70) = Über/Unter "0"
10 Würfe, insgesamt 78 - Schnitt (70) = Über "+8". Das soll in die Textbox25 geschrieben werden.

Wäre es vielleicht eine Lösung, wenn ich dir meine Datei einmal zuschicken könnte und du dir davon ein Bild machen könntest.
Dann wäre die Frage, wie schickt man die Datei rüber?

Wärst du dabei oder wäre das zuviel verlangt

Stanley69
0 Punkte
Beantwortet von
Hallo Stanley,

End Sub schließt immer ein Makro ab. Da ich annehme, dass du die Uhrzeit nicht in der combobox sehen willst (schließlich fügst du nur die Spalte A bis C hinzu) schreibe die Zeile mit dem Textboxnamen deiner Wahl direkt vor End Sub.

TextBox1.Text = Format(Range("M2").Value, "hh:mm")
End Sub

Übrigens solltest du die Zelle M2 über Rechtsklick --> Zellen formatieren ebenfalls auf Uhrzeit-Format umschalten.

Mit Auslagern meine ich, dass du aus einem Makro heraus auch ein anderes Makro aufrufen kannst. Das macht den Code übersichtlicher und spart Speicherplatz. Im Beispiel aus Antwort 1 ruft jedwede Änderung in den Felder Textbox 14, 15 und 16 ein das entsprechende Change-Ereignis auf in welchem lediglich steht, dass das Makro "Berechnen" ausgeführt werden soll, welches sich unterhalb befindet. Der Übersicht wegen, habe ich die restlichen Textboxen weggelassen. Diese kannst du nach gleichem Schema leicht selbst hinzufügen.

Das mit dem Mehr oder Weniger als 70 hab ich schon verstanden. In deiner Ausgangsfrage wolltest du das aber in Textbox 24 stehen haben. Ich vermute, dort willst du jetzt lieber die Gesamtsumme sehen? Macht ja auch mehr Sinn.

Vielleicht macht für weitere Hilfe ein kurzer Blick in die Datei tatsächlich mehr Sinn. Es sollten aber keine sensiblen Daten enthalten sein. Namen, Adressen etc. solltest du lieber mit Beispieldaten überschreiben.

Dateien hochladen kannst du z.B. hier:
[url]https://workupload.com/[/url]

Gruß Mr. K.
0 Punkte
Beantwortet von
Hei Mr.K.,

vielen Dank für deine Zeilen. Ich habe meine Hausaufgaben gemacht und auch zum Teil gelöst.
Wie du mir schon geschrieben hast, zusammen werden wir wohl das Kind zum Laufen bringen.
Bitte schaue dir meine Datei "Königskegeln_Alt.xlsm" einmal an. Es würde mich freuen, wenn wir die Probleme lösen könnten.

Unter dem Tabellenblatt "Info" habe ich dir meine Fragen eingetragen.

Die Datei ist natürlich noch nicht fertig, aber im TB "Hollern 1+2" habe ich alles gepflegt.
Gruß
Stanley69
0 Punkte
Beantwortet von
Äh' wo ist die Datei? Den Link müsstest du schon auch dazu posten. Kannst du z.B. mit dem Button URL oder URL-Pop machen.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hei Mr. K.,
ich habe eigentlich den o.a. Link benutzt.
Wie mache ich das denn mit dem URL oder Url/Pop?
0 Punkte
Beantwortet von
Hei Mr. K.,

wollen wir das über eine e-Mailadresse machen?
Gruß
Stanley69
0 Punkte
Beantwortet von
Hallo Stanley,

Die schreib ich hier lieber nicht rein. Du kannst das auch ohne Email-Adresse hochladen, dann erhältst du einen Link den du hier postest.
Kannst natürlich auch jeden anderen Filehoster verwenden. z.B. den [url=https://filehorst.de/]hier[/url].
0 Punkte
Beantwortet von
Hei Mr. K.,

hoffe, ich habe alles richtig gemacht.

http://filehorst.de/d/cAHEybHp

[url=http://filehorst.de/d/cAHEybHp]Datei von filehorst.de laden[/url]
...