Excel ziet cijfers als tekst

Status
Niet open voor verdere reacties.

PepijnWest

Gebruiker
Lid geworden
10 feb 2009
Berichten
37
Hallo

Een vraagje...

Als ik in mijn tekstbox van mijn inputscherm cijfers ingeef, plaatst Excel deze in een tabel.

Probleem is echter dat Excel deze cijfers opslaat als tekst eenmaal ze in die tabel staan. Waardoor mijn berekeningen niet automatisch worden aangepast nadat ik waarden heb toegevoegd.
Want er komt dan zo een geel driehoekje te staan. En zo kan ik dan converteren naar getal.
En worden mijn berekeningen verder gezet.

Is er een oplossing voor mijn probleem, of moet ik mijn tekstbox anders declareren?
Zodat hij de cijfers die ik ingeef als cijfers aanziet of direkt de convertering doet.
Ik probeerde al met verschillende types van declareren, zonder resultaat. Of zit ik mis...

Iemand een idee?

Dank u
 
Laatst bewerkt:
Met welke code wordt de inhoud van de TextBox nú naar het werkblad verplaatst?
 
PepijnWest,

Ik heb wel eens gelezen hier op helpmij dat je het met 1 moet vermenigvuldigen dat het dan weer normaal is.
Nu ik nog even nadenk vraag ik mij af hoe je de getallen in de tekstbox zet.
Als je een komma gebruik zal hij het als tekst zien denk ik.
Voer je een getal in met het Num.Toetsenbord gebruik dan de punt als komma (word vanzelf als komma weggeschreven)
Als je in de macro (als je die gebruikt) zet er dan achter * 1 (Alleen als je een komma invoert)
 
Laatst bewerkt:
Ja inderdaad, er is een verschil tussen een punt en een komma.
Nu is het zo dat hij de komma schrijft maar het punt niet.

Dat vermenigvuldigen lukt manueel (methode van de helpfunctie)
Maar om dit rechtsteeks te doen in het VBA programmatje lukt me niet.

Ik steek een voorbeeld bestandje eens in bijlage.

Of moet in mijn tekstbox anders gaan declareren
of via het omzetten naar een decimaal getal, iets in die richting:

TxtWerkuren = CDec(Val(TxtWerkuren))

Iemand een idee-tje?

Dank u
 

Bijlagen

Verander niets aan je code.
ga naar het projectblad naar de cel met het aantal werkuren, druk op F2 , dan past de cel zich automatisch aan.
 
Ja dat klopt...

Maar als ik alle waarden die ik invoer moet manueel omzetten...
Dat neemt een boel tijd in beslag en is een erg omslachting werkje.

Zou er geen automatische omzetting zijn?

Bedankt
 
Ha daar,

Ik denk dat het venijn 'm zat in de "Split"-functie die je gebruikt om de gegevens naar het werkblad te verhuizen:
Code:
Sheets(ListBox1.List(0, SpinButton1.Value)) _
        .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3) _
        = Split(DTPicker1.Value & "|" & _
        ListBox1.List(j, SpinButton1.Value) & "|" & Werkuren, "|")
Ik heb de code aangepast op de volgende punten:

Code:
Dim Werkuren as Single
De variabele wás gedeclareerd als String, waarmee er dus alles wat je er in zou stoppen als tekst gezien zou worden.

Code:
Werkuren = Application.WorksheetFunction.Round(TxtWerkuren.Value, 2)
Stopt in de variabele 'Werkuren' de waarde van de TextBox, afgerond op 2 decimalen.
Excel heeft anders de neiging om hier 2,499999999 van te maken als je 2,5 ingevuld hebt, geen idee waarom...

Code:
Sheets(ListBox1.List(0, SpinButton1.Value)) _
        .Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = DTPicker1.Value
        '1.voer datum in in kolom A
        Sheets(ListBox1.List(0, SpinButton1.Value)) _
        .Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = ListBox1.List(j, SpinButton1.Value)
        '2.voer werkzaamheid in in kolom B
        Sheets(ListBox1.List(0, SpinButton1.Value)) _
        .Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Value = Werkuren
        '3.werkuren in kolom C
stopt verschillende waarden (datum, werkzaamheid en uren) een voor een in het werkblad.

Probleem wat ik nog heb is dat bij invoer via het numerieke deel van het toetsenbord de punt niet herkend wordt als decimaal-teken. Mocht jij dat ook hebben, post dan even terug, fixen we dat ook.


Succes!
 

Bijlagen

Beste Marcel79,

Een hele aanpassing zie ik zo...
Ik zat op een mis spoor, het begon inderdaad al met de declaratie via de String.

Maar ik heb ook het probleem dat bij invoer via het numerieke deel van het toetsenbord de punt niet herkend wordt als decimaal teken.

Ik heb wat zitten rondneuzen in de instellingen, maar niets gevonden.
Moet er daar niet iets anders worden ingesteld?
Of in de eigenschappen van de tekstbox?

Heb jij misschien een oplossing?


Alvast bedankt voor de hulp ! :thumb:

Pepijn
 
Ha Pepijn,

Ik heb wel een oplossing, wellicht dat iemand met meer ervaring overigens een betere heeft, want 'elegant' zou ik het niet willen noemen. Maar het werkt wel, althans bij mij.
Ik zou in de code controleren voor de aanwezigheid van een punt (".") in de TextBox en de waarde van TextBox daarop aanpassen:

De functie InStr is een zoekfunctie die de positie van een teken binnen een tekenreeks oplevert, die kun je gebruiken om de punt te zoeken en te vervangen voor een komma:
Code:
If InStr(TxtWerkuren, ".") > 0 Then _
        TxtWerkuren = Left(TxtWerkuren, InStr(TxtWerkuren, ".") - 1) & _
        "," & Mid(TxtWerkuren, InStr(TxtWerkuren, ".") + 1, 2)
        'pakt alles vóór de punt en de eerste twee cijfers ná de punt _
        en zet er een komma tusssen ;-)

Hoop dat het werkt, Marcel
 

Bijlagen

Code:
Public Sub CmdOK_Click()
  For j = 1 To ListBox1.ColumnCount
    If ListBox1.Selected(j) Then
      With Sheets(ListBox1.List(0, SpinButton1.Value)).Cells(Rows.Count, 1).End(xlUp).Offset(1)
         .Resize(, 2) = Split(DTPicker1.Value & "|" & ListBox1.List(j, SpinButton1.Value), "|")
        .Offset(, 2) = Replace(TxtWerkuren.Text, ".", ",") * 1
      End With
    End If
  Next
  ListBox1.ListIndex = -1
End Sub
Hierbij maakt het niet uit of je met een komma of een punt iets invoert bij werkuren.
 
Beste snb & Marcel79

Erg bedankt om even mee te denken en me te helpen ! :thumb:

Terug een probleem van de baan.


Mvg

Pepijn
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan