Text gespeicherte Zahl in Numerische Zahl

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Text gespeicherte Zahl in Numerische Zahl
von: Daniel
Geschrieben am: 08.07.2015 10:24:00

Hallo Zusammen,
noch ein weiteres Problem: Mit meiner VBA-Programmierung speichere ich Zahlen in ein Tabellenblatt, dies werden leider nicht als Numerische-Zahl gewandelt obwohl ich diese mit diesem Programmteil mit 1 multipliziere.

For xZeile = 1 To Range("E65536").End(xlUp).Row
      If IsNumeric(Range("P" & xZeile).Value) Then
         Range("P" & xZeile).Value = Range("P" & xZeile).Value * 1
      End If
Was mache ich Falsch?
LG Daniel

Bild

Betrifft: AW: Text gespeicherte Zahl in Numerische Zahl
von: eres
Geschrieben am: 08.07.2015 10:33:04
Hallo Daniel,
Du multiplizierst doch in Deinem Code den Zellwert mit 1, wenn er bereits numerisch ist. Setz doch mal zwischen If und IsNumeric ein NOT.
By the way, Deine Schleife läuft bis Zeile 65536. Das war die letzte Zeile in Excel2003. Bei Deiner Version gehst Du das Risiko ein, nicht bis zum Ende zu laufen :-(
Alternative: cells(rows.count,5).end(xlup).row
Gruß
eres

Bild

Betrifft: AW: Text gespeicherte Zahl in Numerische Zahl
von: Rudi Maintaire
Geschrieben am: 08.07.2015 10:50:29
Hallo,
@eres:
IsNumeric prüft, ob ein Wert in eine Zahl umgewandelt werden kann, nicht ob er eine Zahl ist.
By the way: und wenn die Liste länger als 65536 Zeilen ist, ergibt .Row = 1.

For xZeile = 1 To Cells(Rows.Count, 5).End(xlUp).Row
   With cells(Zeile, 16)
      If IsNumeric(.Value)Then
         .Numberformat="General"
         .Value=.Value * 1
      End If
   End With

Gruß
Rudi

Bild

Betrifft: DANKE für die Info, Rudi! owT
von: eres
Geschrieben am: 08.07.2015 10:52:54
.

Bild

Betrifft: AW: DANKE für die Info, Rudi! owT
von: Daniel
Geschrieben am: 08.07.2015 13:17:26
Hallo,
leider weiß ich noch immer nicht wo mein Problem liegt.
Was könnte ich verändern? An was könnte mein Problem liegen?
Danke
LG
Daniel

Bild

Betrifft: AW: DANKE für die Info, Rudi! owT
von: Daniel
Geschrieben am: 08.07.2015 13:17:31
Hallo,
leider weiß ich noch immer nicht wo mein Problem liegt.
Was könnte ich verändern? An was könnte mein Problem liegen?
Danke
LG
Daniel

Bild

Betrifft: meinen Code probiert? owT
von: Rudi Maintaire
Geschrieben am: 08.07.2015 13:19:22


Bild

Betrifft: If IsNumeric bei Text Zahl ?
von: robert
Geschrieben am: 08.07.2015 10:36:29


Bild

Betrifft: Ja! owT
von: Rudi Maintaire
Geschrieben am: 08.07.2015 10:51:14


Bild

Betrifft: IsNumeric stuft auch noch mehr als ...
von: Luc:-?
Geschrieben am: 08.07.2015 14:43:46
…numerisch ein, robert,
zB Zahlen mit Leerzeichen oder enthaltenem d/D, e/E, a/p(m) und wohl auch Währungssymbol u.ä., was man ggf ausschließen müsste. Dazu wurde hier auch schon ausgiebig diskutiert. Will man feststellen, ob eine echte Zahl vorliegt, muss die entsprd WorksheetFunction verwendet wdn, die deshalb hierin auch enthalten ist. Das findest du sicher gelegentlich auch in den dir vorliegenden UDFs.
Gruß, Luc :-?

Bild

Betrifft: Danke an Rudi und Luc ;-) owT
von: robert
Geschrieben am: 08.07.2015 14:54:53


Bild

Betrifft: AW: Danke an Rudi und Luc ;-) owT
von: Daniel
Geschrieben am: 09.07.2015 12:02:24
Ich habe es mit dem Code probiert, leider funktioniert es nicht :(
Hier nochmals mein Code, dieses mal der komplette:

Private Sub CommandButton3_Click()
Dim Ergebnis As Double
Dim TendenzAC As Double
Dim xZeile  As Long
If TextBox1 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet
If TextBox2 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet                   _
                     '
If TextBox3 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet
Cells(ComboBox1.ListIndex + 3, 2) = TextBox1     'Name
Cells(ComboBox1.ListIndex + 3, 3) = TextBox2     'Vorname
Cells(ComboBox1.ListIndex + 3, 4) = TextBox3     'Studiengang
Cells(ComboBox1.ListIndex + 3, 17) = TextBox4    'Teil 1
Cells(ComboBox1.ListIndex + 3, 18) = TextBox5    'Teil 2
Cells(ComboBox1.ListIndex + 3, 19) = TextBox6    'Teil 3
Cells(ComboBox1.ListIndex + 3, 20) = TextBox7    'Teil 4
Cells(ComboBox1.ListIndex + 3, 21) = TextBox8    'Teil 5
Cells(ComboBox1.ListIndex + 3, 22) = TextBox9    'Teil 6
Cells(ComboBox1.ListIndex + 3, 23) = TextBox10   'Teil 7
Cells(ComboBox1.ListIndex + 3, 24) = TextBox11   'Teil 8
Cells(ComboBox1.ListIndex + 3, 25) = TextBox12   'Teil 9
Cells(ComboBox1.ListIndex + 3, 26) = TextBox13   'Vorstellung / Präsentation
Cells(ComboBox1.ListIndex + 3, 27) = TextBox14   'Obelisk
Cells(ComboBox1.ListIndex + 3, 28) = TextBox15   'Turmbau
Cells(ComboBox1.ListIndex + 3, 29) = TextBox16   'Diskussionsrunde
If TextBox4 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 1!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet"
If TextBox5 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 2!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox6 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 3!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox7 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 4!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox8 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 5!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox9 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 6!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox10 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 7!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox11 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 8!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox12 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 9!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox13 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Vorstellung / Präsentation!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox14 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Obelisk!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox15 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Turmbau!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox16 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Diskussionsrunde!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
'Hochkomma entfernen
For xZeile = 1 To Range("E65536").End(xlUp).Row
      If IsNumeric(Range("P" & xZeile).Value) Then
         Range("P" & xZeile).Value = Range("P" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Q" & xZeile).Value) Then
         Range("Q" & xZeile).Value = Range("Q" & xZeile).Value * 1
      End If
      If IsNumeric(Range("R" & xZeile).Value) Then
         Range("R" & xZeile).Value = Range("R" & xZeile).Value * 1
      End If
      If IsNumeric(Range("S" & xZeile).Value) Then
         Range("S" & xZeile).Value = Range("S" & xZeile).Value * 1
      End If
      If IsNumeric(Range("T" & xZeile).Value) Then
         Range("T" & xZeile).Value = Range("T" & xZeile).Value * 1
      End If
      If IsNumeric(Range("U" & xZeile).Value) Then
         Range("U" & xZeile).Value = Range("U" & xZeile).Value * 1
      End If
      If IsNumeric(Range("V" & xZeile).Value) Then
         Range("V" & xZeile).Value = Range("V" & xZeile).Value * 1
      End If
      If IsNumeric(Range("W" & xZeile).Value) Then
         Range("W" & xZeile).Value = Range("W" & xZeile).Value * 1
      End If
      If IsNumeric(Range("X" & xZeile).Value) Then
         Range("X" & xZeile).Value = Range("X" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Y" & xZeile).Value) Then
         Range("Y" & xZeile).Value = Range("Y" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Z" & xZeile).Value) Then
         Range("Z" & xZeile).Value = Range("Z" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AA" & xZeile).Value) Then
         Range("AA" & xZeile).Value = Range("AA" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AB" & xZeile).Value) Then
         Range("AB" & xZeile).Value = Range("AB" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AC" & xZeile).Value) Then
         Range("AC" & xZeile).Value = Range("AC" & xZeile).Value * 1
      End If
 Next xZeile
 
'##################################################################
'Ergebnis für Tendenz (AC) berechnen
Ergebnis = (CDbl(TextBox4) + CDbl(TextBox5) + CDbl(TextBox6) + CDbl(TextBox7) + CDbl(TextBox8) + _
 CDbl(TextBox9) + CDbl(TextBox10) + CDbl(TextBox11) _
+ CDbl(TextBox12) + CDbl(TextBox13) + CDbl(TextBox14) + CDbl(TextBox15) + CDbl(TextBox16)) / 13
'Ergebnis in Splate 29 ausgeben
Cells(ComboBox1.ListIndex + 3, 30) = Ergebnis
'TendenzAC auf drei Stellen runden
TendenzAC = Application.WorksheetFunction.Round(Ergebnis, 3)
Cells(ComboBox1.ListIndex + 3, 8) = TendenzAC
'Tendenz farbig darstellen in Abhängigkeit des Wertes (Ergebnis)
If Cells(ComboBox1.ListIndex + 3, 8) > 8 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 50 'grün
End If
If Cells(ComboBox1.ListIndex + 3, 8) > 9 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 4 'hellgrün
End If
If Cells(ComboBox1.ListIndex + 3, 8) < 8 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 44 'gelb
End If
If Cells(ComboBox1.ListIndex + 3, 8) < 6 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 3  'rot
End If
'Datum wird in Tabelle hinterleget -> Datum an dem Eintrag erfolgte
Cells(ComboBox1.ListIndex + 3, 31) = Date
UserForm_Initialize
End Sub
LG
Daniel

Bild

Betrifft: Text gespeicherte Zahl in Numerische Zahl
von: Daniel
Geschrieben am: 09.07.2015 16:12:22
Ich habe es mit dem Code probiert, leider funktioniert es nicht :(
Hier nochmals mein Code, dieses mal der komplette:

Private Sub CommandButton3_Click()
Dim Ergebnis As Double
Dim TendenzAC As Double
Dim xZeile  As Long
If TextBox1 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet
If TextBox2 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet                   _
 _
                     '
If TextBox3 = "" Then Exit Sub              'keine Eingabe -> Sub wird beendet
Cells(ComboBox1.ListIndex + 3, 2) = TextBox1     'Name
Cells(ComboBox1.ListIndex + 3, 3) = TextBox2     'Vorname
Cells(ComboBox1.ListIndex + 3, 4) = TextBox3     'Studiengang
Cells(ComboBox1.ListIndex + 3, 17) = TextBox4    'Teil 1
Cells(ComboBox1.ListIndex + 3, 18) = TextBox5    'Teil 2
Cells(ComboBox1.ListIndex + 3, 19) = TextBox6    'Teil 3
Cells(ComboBox1.ListIndex + 3, 20) = TextBox7    'Teil 4
Cells(ComboBox1.ListIndex + 3, 21) = TextBox8    'Teil 5
Cells(ComboBox1.ListIndex + 3, 22) = TextBox9    'Teil 6
Cells(ComboBox1.ListIndex + 3, 23) = TextBox10   'Teil 7
Cells(ComboBox1.ListIndex + 3, 24) = TextBox11   'Teil 8
Cells(ComboBox1.ListIndex + 3, 25) = TextBox12   'Teil 9
Cells(ComboBox1.ListIndex + 3, 26) = TextBox13   'Vorstellung / Präsentation
Cells(ComboBox1.ListIndex + 3, 27) = TextBox14   'Obelisk
Cells(ComboBox1.ListIndex + 3, 28) = TextBox15   'Turmbau
Cells(ComboBox1.ListIndex + 3, 29) = TextBox16   'Diskussionsrunde
If TextBox4 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 1!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet"
If TextBox5 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 2!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox6 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 3!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox7 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 4!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox8 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 5!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox9 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 6!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox10 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 7!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox11 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 8!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox12 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Teil 9!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox13 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Vorstellung / Präsentation!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox14 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Obelisk!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox15 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Turmbau!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
If TextBox16 = "" Then
MsgBox "Bitte Punkteanzahl eingeben in die Rubrik Diskussionsrunde!", vbInformation
Exit Sub
End If  'keine Eingabe -> Sub wird beendet
'Hochkomma entfernen
For xZeile = 1 To Range("E65536").End(xlUp).Row
      If IsNumeric(Range("P" & xZeile).Value) Then
         Range("P" & xZeile).Value = Range("P" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Q" & xZeile).Value) Then
         Range("Q" & xZeile).Value = Range("Q" & xZeile).Value * 1
      End If
      If IsNumeric(Range("R" & xZeile).Value) Then
         Range("R" & xZeile).Value = Range("R" & xZeile).Value * 1
      End If
      If IsNumeric(Range("S" & xZeile).Value) Then
         Range("S" & xZeile).Value = Range("S" & xZeile).Value * 1
      End If
      If IsNumeric(Range("T" & xZeile).Value) Then
         Range("T" & xZeile).Value = Range("T" & xZeile).Value * 1
      End If
      If IsNumeric(Range("U" & xZeile).Value) Then
         Range("U" & xZeile).Value = Range("U" & xZeile).Value * 1
      End If
      If IsNumeric(Range("V" & xZeile).Value) Then
         Range("V" & xZeile).Value = Range("V" & xZeile).Value * 1
      End If
      If IsNumeric(Range("W" & xZeile).Value) Then
         Range("W" & xZeile).Value = Range("W" & xZeile).Value * 1
      End If
      If IsNumeric(Range("X" & xZeile).Value) Then
         Range("X" & xZeile).Value = Range("X" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Y" & xZeile).Value) Then
         Range("Y" & xZeile).Value = Range("Y" & xZeile).Value * 1
      End If
      If IsNumeric(Range("Z" & xZeile).Value) Then
         Range("Z" & xZeile).Value = Range("Z" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AA" & xZeile).Value) Then
         Range("AA" & xZeile).Value = Range("AA" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AB" & xZeile).Value) Then
         Range("AB" & xZeile).Value = Range("AB" & xZeile).Value * 1
      End If
      If IsNumeric(Range("AC" & xZeile).Value) Then
         Range("AC" & xZeile).Value = Range("AC" & xZeile).Value * 1
      End If
 Next xZeile
 
'##################################################################
'Ergebnis für Tendenz (AC) berechnen
Ergebnis = (CDbl(TextBox4) + CDbl(TextBox5) + CDbl(TextBox6) + CDbl(TextBox7) + CDbl(TextBox8) + _
 _
 CDbl(TextBox9) + CDbl(TextBox10) + CDbl(TextBox11) _
+ CDbl(TextBox12) + CDbl(TextBox13) + CDbl(TextBox14) + CDbl(TextBox15) + CDbl(TextBox16)) / 13
'Ergebnis in Splate 29 ausgeben
Cells(ComboBox1.ListIndex + 3, 30) = Ergebnis
'TendenzAC auf drei Stellen runden
TendenzAC = Application.WorksheetFunction.Round(Ergebnis, 3)
Cells(ComboBox1.ListIndex + 3, 8) = TendenzAC
'Tendenz farbig darstellen in Abhängigkeit des Wertes (Ergebnis)
If Cells(ComboBox1.ListIndex + 3, 8) > 8 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 50 'grün
End If
If Cells(ComboBox1.ListIndex + 3, 8) > 9 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 4 'hellgrün
End If
If Cells(ComboBox1.ListIndex + 3, 8) < 8 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 44 'gelb
End If
If Cells(ComboBox1.ListIndex + 3, 8) < 6 Then
Cells(ComboBox1.ListIndex + 3, 8).Interior.ColorIndex = 3  'rot
End If
'Datum wird in Tabelle hinterleget -> Datum an dem Eintrag erfolgte
Cells(ComboBox1.ListIndex + 3, 31) = Date
UserForm_Initialize
End Sub

LG
Daniel

Bild

Betrifft: AW: Text gespeicherte Zahl in Numerische Zahl
von: Daniel
Geschrieben am: 10.07.2015 13:29:29
Endlich habe ich meinen Fehler gefunden :) Vielen Dank für eure Hilfe!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Text gespeicherte Zahl in Numerische Zahl"