Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Labels Multiplizieren

Betrifft: Labels Multiplizieren von: Chris
Geschrieben am: 27.10.2020 13:27:32

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 <-- hier erscheint die Fehlermeldung.
Next s


Betrifft: AW: Labels Multiplizieren
von: Werner
Geschrieben am: 27.10.2020 13:31:10

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

Betrifft: AW: Labels Multiplizieren
von: Chris
Geschrieben am: 27.10.2020 15:02:40

Hallo Werner,

es sind Ganzzahlen.

Ich erhalte die gleiche Fehlermeldung - Typen unverträglich. Eine Idee, woran es liegen könnte?
Gruß
Chris

Betrifft: dann steht im Label ein Text...
von: Rudi Maintaire
Geschrieben am: 27.10.2020 15:05:01

... der sich nicht in eine Zahl umwandeln lässt

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 27.10.2020 15:10:23

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

Betrifft: Eingabe in ein Label???? owT
von: Rudi Maintaire
Geschrieben am: 27.10.2020 15:16:05



Betrifft: AW: dann steht im Label ein Text...
von: Daniel
Geschrieben am: 27.10.2020 15:20:21

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

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 27.10.2020 16:01:32

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



Betrifft: AW: dann steht im Label ein Text...
von: Daniel
Geschrieben am: 27.10.2020 16:12:48

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

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 27.10.2020 17:20:57

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...

Betrifft: AW: dann steht im Label ein Text...
von: Daniel
Geschrieben am: 27.10.2020 18:07:06

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

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 28.10.2020 06:57:12

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

Betrifft: AW: dann steht im Label ein Text...
von: Daniel
Geschrieben am: 28.10.2020 07:51:40

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

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 29.10.2020 09:12:49

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


Betrifft: AW: dann steht im Label ein Text...
von: Luschi
Geschrieben am: 27.10.2020 20:48:19

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

Betrifft: AW: dann steht im Label ein Text...
von: Chris
Geschrieben am: 28.10.2020 06:58:48

Hi,

danke für den Hinweis, dass VAL eine VBA-Funktion ist. Das war mir nicht bekannt. Ich ändere dies!.

Gruß

Chris

Betrifft: AW: Labels Multiplizieren
von: Rudi Maintaire
Geschrieben am: 27.10.2020 13:35:07

hallo,
der Fehler muss woanders sein.
Solange die Labels nur Zahlen als Beschriftung haben, geht das.

Gruß
Rudi

Betrifft: AW: Labels Multiplizieren
von: Chris
Geschrieben am: 27.10.2020 15:04:15

Hallo Rudi,

also mit "On error resume next" funktioniert es wunderbar.
Ohne markiert mir der Editor die vorletzte Zeile....

Gruß
Chris

Beiträge aus dem Excel-Forum zum Thema "Labels Multiplizieren"