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

Labels Multiplizieren

Labels Multiplizieren
27.10.2020 13:27:32
Chris
Hallo Forum,
ich möchte Zahlenwerte in Labels mit einem nummerischen Wert aus einer TextBox multiplizieren.
Ich erhalte die Melden "Typen unverträglich" und vermute, dass es daran liegt, dass Zahlen als Text mit einem nummerischen Wert multipliziert werden sollen.
Wie kann ich die Zahlenwerte in den Labels als nummerische Werte festlegen?
Schon mal danke.
Gruß
Chris

Dim val As Long
If TextBox72.Value >= 1 Then
CommandButton1.Enabled = True
End If
val = TextBox72.Value
val = val + 1
TextBox72.Value = val
Dim s As Integer
For s = 2 To 20
UserForm1.Controls("Textbox" & s).Value = UserForm1.Controls("Label" & s).Caption * val Next s

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Labels Multiplizieren
27.10.2020 13:31:10
Werner
Hallo,
ist halt mal Text.
UserForm1.Controls("Textbox" & s).Value = Clng(UserForm1.Controls("Label" & s).Caption) * val 

oder CDbl. Ich weiß ja nicht welche Zahlenwerte da die Caption sind, Ganzzahlen (Clng) oder Fließkommazahlen (CDbl).
Gruß Werner
AW: Labels Multiplizieren
27.10.2020 15:02:40
Chris
Hallo Werner,
es sind Ganzzahlen.
Ich erhalte die gleiche Fehlermeldung - Typen unverträglich. Eine Idee, woran es liegen könnte?
Gruß
Chris
dann steht im Label ein Text...
27.10.2020 15:05:01
Rudi
... der sich nicht in eine Zahl umwandeln lässt
AW: dann steht im Label ein Text...
27.10.2020 15:10:23
Chris
Hi,
ich habe per Keyascii die Eingabe von Buchstaben gesperrt und nur die Zahlen frei gelassen.
Select Case KeyAscii
Case 48 To 57, 8, 44
Case Else: KeyAscii = 0
End Select
Anzeige
Eingabe in ein Label? owT
27.10.2020 15:16:05
Rudi
AW: dann steht im Label ein Text...
27.10.2020 15:20:21
Daniel
Hi
das gilt nur für die TextBox.
in den Labels steht fester Text, den du beim Design der Userform festlegst.
Also was steht in den Labels? Insbesondere bei dem, bei dem der Fehler auftritt.
Bei Schleifen ist sowieso immer zu prüfen, ob der Fehler sofort beim ersten Durchlauf auftritt, oder erst bei einem späteren Durchlauf. Dann ist auch zu prüfen, welchen Wert die verwendeten Variablen und Objekte haben auch im Vergleich mit dem Zustand, die Fehlerfrei durchgelaufen sind.
Gruß Daniel
AW: dann steht im Label ein Text...
27.10.2020 16:01:32
Chris
Hi,
Keysccii bezieht sich auf die TextBoxen, bspw.
Private Sub Textbox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 8, 44
Case Else: KeyAscii = 0
End Select
End Sub


Der Wert auf den TextBoxen wird an die Labels übergeben:
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
UserForm1.Label2.Caption = UserForm1.TextBox2.Value
End Sub

Wenn das geschehen ist, wird bei Klick auf einen CB2 dieses Makro ausgeführt, was ohne 'on error resume next' zur beschriebenen Fehlermeldung führt.
Private Sub CommandButton2_Click()
On Error Resume Next
Dim val As Long
If TextBox72.Value >= 1 Then
CommandButton1.Enabled = True
End If
val = TextBox72.Value
val = val + 1
TextBox72.Value = val
Dim s As Integer
For s = 2 To 20
UserForm1.Controls("Textbox" & s).Value = CDbl(UserForm1.Controls("Label" & s).Caption) *  _
val
Next s

Anzeige
AW: dann steht im Label ein Text...
27.10.2020 16:12:48
Daniel
lösche das On Error Resume Next.
in welcher Programmzeile tritt der fehler auf?
welchen Wert haben die in dieser Programmzeile verwendeten Variablen und Texte konkret?
wenn der Fehler in der Schleife auftritt, bitte auch den wert es Schleifenzählers angeben.
Gruß Daniel
AW: dann steht im Label ein Text...
27.10.2020 17:20:57
Chris
Hallo Daniel,
On Error ist gelöscht. Der Typen-Fehler tritt in dieser Zeile auf:
UserForm1.Controls("Textbox" & s).Value = CDbl(UserForm1.Controls("Label" & s).Caption) *
In den Textboxen bzw. Labels (Werte aus den Textboxen werden in die Label 1:1 übertragen) stehen sowohl Ganz als auch Gleitkommzahlen, bspw. 4, 200 / 100 / 50,5 / etc. Die Variable VAL hat immer eine Ganzzahl d, h. 1, 2, 3, 20, etc.
Wie kann ich den Wert des Schleifenzählers ermitteln?
Gruß
Chris
Melde mich morgen wieder...
Anzeige
AW: dann steht im Label ein Text...
27.10.2020 18:07:06
Daniel
Hi
wenn der Fehler auftritt, mit der Maus über die Variable fahren. Der Wert sollte in der BubbleHelp angezeigt werden.
oder im Direktfenster: ?Variablenname
eingeben, damit kannst du dir im Prinzip alle Aktuellen Variablen oder sonstigen Objektwerte anzeigen lassen.
oder auch mit ?CDbl(UserForm1.Controls("Label" & s).Caption), ob genau dieser Ausdruck den Fehler erzeugt.
oder über den Menüpunkt "Anzeige" das Lokalfenster aktivieren. Dort werden alle Variablen mit Inhalt angezeigt
Gruß Daniel
AW: dann steht im Label ein Text...
28.10.2020 06:57:12
Chris
Hallo Daniel,
alles gemacht, wie du geschrieben hast und ich bin schlauer.
Ich habe 19 TextBoxen, d. h von 2 bis 20.
Die meisten davon sind leer, nicht in allen stehen Werte drin.
Der Fehler tritt deshalb auf, weil Excel die leeren Boxen mit dem Wert aus Textbox72 multiplizieren will, d.h NIX*x. Schreibe ich in allen TextBoxen Werte rein, läuft das Makro.
Wie simple und wie logisch.
Nun kann ich entweder per Makro alle TextBoxen mit einer 0 versehen, oder Excel mitteilen, dass bei einer leeren TextBox diese ignoriert werden soll. Wie mache ich das am besten? Was ist die beste Lösung?
Danke nochmal!
Chris
Anzeige
AW: dann steht im Label ein Text...
28.10.2020 07:51:40
Daniel
Hi
Wenn man Texte mit CDbl in Zahlen umwandeln will, muss man vorher abfragen, ob das auch möglich ist, wenn man den Fehler vermeiden will:
If IsNumeric(Text) then ...CDbl(Text)...
Andere Alternative: du verwendest statt CDbl(Text) die Umwandlungsfunktion VAL(Text)
Diese erzeugt bei nichtwandelbaren Texten keinen Fehler, sondern gibt den Wert 0 aus.
Allerdings benötigt VAL unabhängig von der Länderversion immer den Punkt als Dezimalzeichen.
Wenn du in den Labels Kommas hast, müsstest du das austauschen: VAL(Replace(Text, ",", "."))
Gruß Daniel
AW: dann steht im Label ein Text...
29.10.2020 09:12:49
Chris
Hallo Daniel,
danke für deine Antwort. Ich habe das Makro angepasst. Bis jetzt keine Probleme...
Gruß
Chris

Dim s As Integer
For s = 2 To 20
If Not IsNumeric(UserForm1.Controls("label" & s).Caption) Then UserForm1.Controls("label" & s).Caption = CDbl(UserForm1.Controls("label" & s).Caption)
UserForm1.Controls("Textbox" & s).Value = CDbl(UserForm1.Controls("Label" & s).Caption) * WertMIN
UserForm1.Controls("Textbox" & s) = Format(CDbl(UserForm1.Controls("Textbox" & s)), "#,###0.00")
Next s

Anzeige
AW: dann steht im Label ein Text...
27.10.2020 20:48:19
Luschi
Hallo Chris,

Die Variable VAL hat immer eine Ganzzahl 
Variablen sollte man nicht benennen nach Vba-Funktionen - und 'Val' ist eine solche Vba-Funktion.
Außerdem würde ich an der Stelle, wo der Fehler auftritt, einen Haltepunkt setzen und mir dann im Überwachungsfenster den Inhalt der Variablen ansehen.
Ich hoffe, diese Begriffe sind keine 'Bömischen Dörfer' für Dich.
Gruß von Luschi
aus klein-Paris
AW: dann steht im Label ein Text...
28.10.2020 06:58:48
Chris
Hi,
danke für den Hinweis, dass VAL eine VBA-Funktion ist. Das war mir nicht bekannt. Ich ändere dies!.
Gruß
Chris
Anzeige
AW: Labels Multiplizieren
27.10.2020 13:35:07
Rudi
hallo,
der Fehler muss woanders sein.
Solange die Labels nur Zahlen als Beschriftung haben, geht das.
Gruß
Rudi
AW: Labels Multiplizieren
27.10.2020 15:04:15
Chris
Hallo Rudi,
also mit "On error resume next" funktioniert es wunderbar.
Ohne markiert mir der Editor die vorletzte Zeile....
Gruß
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige