Forfatter |
Emne Søg Emne funktioner
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Emne: Konvertere tekst til tal Sendt: 26.Okt.2010 kl. 21:04 |
Hej til alle herinde
Jeg har i Excel lavet en brugerformular med tre tekstfelter (Textbox), hvor der er skal indtastes et tal i hver tekstboks som jeg så skal kunne beregne på i VBA.
Problemet er at Excel opfatter det der indtastes i tekstfelterne som "tekst".
Jeg har forsøgt at flytte det indtastede til en celle, hvor excel så oplyser mig om at tallet er gemt som tekst.
Ved at klikke på det lille ikon ved siden af cellen kan excel så konvertere "teksten" til tal, men hvordan konverterer jeg det i VBA?
Der må være en funktion til dette?
På forhånd tak for hjælpen
|
|
|
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 26.Okt.2010 kl. 21:39 |
Den hurtigste måde jeg kender ( men ikke den pænest)
Range("d1") = TextBox1 Range("d1") = Range("d1") * 1
|
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 26.Okt.2010 kl. 21:56 |
En anden måde kunne også være
TextBox1.Value = TextBox1.Value + 55 Range("D8") = Format(TextBox1.Value, "########")
|
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 26.Okt.2010 kl. 22:46 |
Hej igen
Den første metode ser ud til at virke fint, men jeg er i tvivl om Range("d1") - hvor henviser den til?
Jeg tænker om tallet fra tekstfeltet bliver sat ind fx i celle A1 eller?
Metode 2:
tallet bliver formateret som ######## - hvad er det for et format?
Herfra vil jeg sige dig tak - super nemt og så virker det.
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 26.Okt.2010 kl. 22:55 |
Ved du om der er en mulighed for at formatere tallet fx med x-antal decimaler.
Kan man ved konverteringen formatere tallet som decimaltal?
Umiddelbart kan jeg se at en beregning ikke giver et nøjagtigt resultat ved division...
Mvh...
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 27.Okt.2010 kl. 15:33 |
Range("d1") var blot et sted at sætte textbox værdien. Kunne også have være Range("A1"), så var værdien sat i celle A1. Et af de store problemer med VBA, er at det er ikke lokalitets bestemt som Excel. Det vil sige at tal og dato formater inde i vba altid vil blive fortolket efter amerikanske standard. Det er meget besværligt at bruge en textbox for at indhentet en dato fra brugeren, men det kan lade sig gøre. I dit tilfælde prøv:
Range("A1") = TextBox1 / 98 Range("A1").NumberFormatLocal = "#0,0###############"
|
Som betyder, værdien i textbox1 bliver divideret med 98, resultatet bliver sat ind i celle A1. Celle A1 bliver så formateret efter dansk standart. #0,0############### betyder at hvis tallet er mindre end 1 vil der altid være et nul før kommaet. Hvis celle A1 er et helt tal vil det blive vist med ",0" Antallet af # betyder, vis tallet hvis der er et tal, ellers vis ikke noget. Dette antal af # kan du så selv bestemme. Men jeg mener at huske, at grænsen for hvor mange decimaler excel kan vise er 16. Dette skulle så også betyde at excel ikke er helt præcis i decimal beregninger. For præcise videnskabelig beregning er excel ikke det bedste valg. Jeg håber, at dette har hjulpet dig i en retning du kan bruge.
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 27.Okt.2010 kl. 16:53 |
Tak for hjælpen - det har hjulpet stort.
Peppe
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 28.Okt.2010 kl. 00:03 |
Jeg må lige vende tilbage...
Ved beregning, hvor resultatet bliver fx 5,9999 så viser excel resultatet 5
Ved beregning, hvor resultatet bliver fx 6,0000 så viser excel resultatet 6
Umiddelbart regner excel kun i heltal eller sådan noget, der bliver i hvertfald ikke rundet op eller ned.
Det virker som om excel bare skærer decimalerne væk...
Her er et billede af min kode:
Hvad er det lige jeg gør galt?
At benytte RANGE er fint, men er der mulighed for at henvise til et andet ark end det man står i, som ikke vises (og så brugeren ikke ser talindsættelsen osv.)?
Peppe
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 28.Okt.2010 kl. 00:29 |
Private Sub CommandButton1_Click() Range("A100") = Skønnet Range("A100") = Range("A100") * 1 Range("A100").NumberFormatLocal = "#0,0########"
Effekten = Skønnet / 1700 Range("A101") = Effekten Range("A101").NumberFormatLocal = "#0,0########" End Sub
|
Skønnet er så navnet på en textbox, ikk sandt jeg prøvede med tallet 2
2,0 |
A100
|
0,001176471 |
A101
|
|
|
|
|
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 28.Okt.2010 kl. 00:35 |
For at gøre det samme på Ark2, og det virker også på skjulte ark
Private Sub CommandButton1_Click() Sheets("Ark2").Range("A100") = Skønnet Sheets("Ark2").Range("A100") = Sheets("Ark2").Range("A100") * 1 Sheets("Ark2").Range("A100").NumberFormatLocal = "#0,0########"
Effekten = Skønnet / 1700 Sheets("Ark2").Range("A101") = Effekten Sheets("Ark2").Range("A101").NumberFormatLocal = "#0,0########" End Sub
|
overskriv Ark2 med det navn dit ark egentlig har
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 28.Okt.2010 kl. 18:43 |
Hej Rassten - så er jeg her igen...
Ja "skønnet" er navnet på tekstboksen - se link nedenfor
Endelig regner Excel med decimaler, men for mange...
Jeg har forsøgt at ændre antallet af havelåger, men resultatet i msgbox er stadig med mange decimaler.
Du kan se koden her:
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 28.Okt.2010 kl. 21:05 |
Beklager at jeg først svarer nu Det blev ikke pænt, men måske virker det, ellers giv besked. Ligesom jeg vender tilbage hvis jeg finder på andet
Sheets("TEST").Range("a1") = Skønnet Sheets("TEST").Range("a1") = Sheets("TEST").Range("a1") * 1 Sheets("TEST").Range("a1").NumberFormatLocal = "##0,0#"
Effekten = Skønnet / 1700 Sheets("TEST").Range("a2") = Effekten Sheets("TEST").Range("a2").NumberFormatLocal = "##0,0#" Range("A3").Formula = "=Round(A2,2)"
MsgBox "aaaa " & Sheets("TEST").Range("A3") & " bbbb"
|
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 28.Okt.2010 kl. 22:05 |
Top iorden - Yes, det virker...
Mange tak for hjælpen.
Det lykkedes endelig efter mange forsøg.
Tusind tak for din tålmodighed og din hjælp.
Peppe
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 28.Okt.2010 kl. 22:22 |
Håber det hjælper. Ellers skriv igen. Range("A3").Formula = "=TRUNC(A2,2)" kan også være en mulighed.
På dansk har Libris en god bog om VBA, På engelsk, Bill Jelen, eller John Walkenbach. Jelen er ikke så pædagogisk efter de først par kapitler, men er ellers rigtig god, og mange gode eksempler som jeg har lært meget af.
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 28.Okt.2010 kl. 23:00 |
Jeg har et hæfte med Programmør på en weekend af Ove G. Jensen - programmering på et meget forståeligt niveau, men desværre baseret på Word.
Jeg har et hæfte med Makroer i Excel af Gail Perry - Forståelig og farverig.
Jeg har en bog med Professionel Excel af Jes Nyhus - meget forståelig og let tilgængeligt stof, men mangler desværre et kapitel om VBA programmering.
Jeg har en bog med Excel 2007 - programmering med VBA af Sharon Podlin - I starten forståelig, men bevæger sig hurtigt ud af en tangent, hvor meget er indforstået på et niveau jeg ikke helt kan følge.
Alt litteratur er på dansk og nu, hvor jeg stille og roligt er blevet bekendt med VBA, så er jeg blevet helt bidt af det, men mangler forståelsen for programmeringssproget VBA.
Ved ikke lige hvilken danske bog du henviser til fra Libris, men hvis det ikke er en af ovenstående, så må du gerne vende tilbage.
Peppe
|
|
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 28.Okt.2010 kl. 23:21 |
Podlin bogen er den jeg bedst kender på dansk. Men ønsker du en bedre forståelse, bliver du desværre nok nød til at prøve de engelske. Prøv om du ikke kan låne den gennem biblioteket før du bestemmer dig for at købe. Der er en stor forskel på de forskellige forfatteres stil og grundighed. En ting som jeg ofte gør, når jeg støder på vba ord/begreber som jeg ikke kender. Skriv ordet i et modul, sæt markøren i ordet, tryk "F1". Det skulle få excel hjælp frem med en forklaring og uddybning, samt for det mest er der også små kode stumper som kan hjælpe på forståelsen. Når du trykker "F1" skal hjælpen være offline, hvis du ikke har den indstilling er det sikkert at du får vist hjælpen rigtigt.
Ellers kan en google søgning også være til stor hjælp.
En sidste ting, Alle skriver om at variabler skal defineres i starten " fordi ....". Sikkert også det rigtige at gøre, men jeg har klaret mig fint uden. Jeg er ikke så god, så jeg på forhold kan overskue de variabler som jeg bruger ned gennem koden. Og som jeg husker har det ikke givet mig problemer.
|
|
peppe
Sølv bruger
Medlem: 26.Okt.2010
Land: Danmark
Status: Offline
Point: 294
|
Sendt: 28.Okt.2010 kl. 23:35 |
Tak for tippene
F1 gør megen hjælp he he.
Peppe
|
|