Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketTal eks. "5" optræder som "bogstaver" i userform

 Besvar Besvar Side  12>
Forfatter
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Emne: Tal eks. "5" optræder som "bogstaver" i userform
    Sendt: 22.Jun.2017 kl. 18:47

Jeg vil spørge om det er ok at uploade filen så i kan kikke på den?Ermm

Selv kan jeg ikke finde nogen synlig forklaring.

Men det giver alvorlige problemer når man skal  gange "5" x 10=?

Hvad er fremgangsmåden her i forummet mht. upload af filer.

Skal man spørge først - eller gør man det bare.Ermm

Til top



Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 22.Jun.2017 kl. 23:55
Hvis du indtaster tallet 5 i en textbox, så optræder det som "5" (string).

Brug cdbl(textbox.value), hvis du skal anvende indholdet som tal, du kan regne på.

Test evt. først med IsNumeric(textbox.value), før du prøver at konvertere til tal med cdbl().

By the way... Du uploader bare!

Hej :-)
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Online
Point: 5481
Direkte link til dette indlæg Sendt: 22.Jun.2017 kl. 23:55
det er ok at upload din fil...

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 23.Jun.2017 kl. 22:18

uploads/1976/CHjælp_TEST_1_-_Kopi_2.xlsmTak Kurt

Du satte virkelig noget i gang.Smile

Jeg troede jeg havde fundet en løsning "new_value = Val(TextBox6.Value) " men da jeg skulle implemtere det viste det sig lidt svære end jeg regnede med.Cry

Det jeg leder efter er en enkel løsning der tillader mig at bruge tekstboxens tal som tal.

Forslag udbedes.

Jeg vedlægger fil.

Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 24.Jun.2017 kl. 10:59
Der er flere ting:
Når du erklærer variable som "Dim arkaisk1, arkmglub1, udkol1, ..." bliver alle "Variants".

Brug i stedet at erklære dem, som det, de skal bruges til:
dim Heltal as integer
dim TextVar as string
dim Decimaltal as double , osv.
På den måde får du fejl-meddellelser, hvis din kode prøver at "proppe" tekst i en integer-variable.

En variant er ligeglad med, hvad den modtager og "indretter sig" bare efter input. Dette kan være fint - nogle gange - men så skal du erklære den med "dim Ligeglad as Variant".

Det næste - og det du spørger til:
Når du opretter en textbox, så er dét, du skriver i den tekst (string). Hvis du f.eks. gør dette:
dim Tal as integer
Tal = 5
Textbox1.value=Tal

...så bliver indholder i textbox'en altså stadig til "5" (string)

Når du så prøver det modsatte:
Tal = Textbox1.value

...så prøver du pricipielt at lægge "5" over i en integer-variable (heltal), hvilket du ikke må!
Men fordi, at VBA prøver at konvertere "5" til 5, går det tit og ofte alligevel.

Havde du i stedet for "5" skrevet "B", vil du få en fejl, da "B" ikke kan konverteres til et tal.

Når du ikke erklærer dine variable (alle bliver Variants), får du ingen fejl, men du aner ikke hvad der står i variablen. Fejlen viser sig måske først på et senere tidspunkt, når du runtime skal lave en beregning - f.eks. 5 * 5.  Her vil 5 * "B" give en fejl!.

Derfor kunne man gøre dette:
Dim Heltal as integer
If IsNumeric(textbox1.value) = true then
'Indholdet i textbox'en er et tal (heltal/decimal)
if cdbl(textbox1.value)=int(cdbl(textbox1.value)) then
'Værdien som decimaltal er det samme som heltals-delen - altså er textbox- 'indholdet et heltal
Heltal = cint(Textbox1.value) 'Her konverteres string til integer (og det gå godt
endif
endif

Koden viser pricippet i at håndtere tal, men...
Koden tager ikke højde for, at der IKKE er indtastet et heltal, så hvad så?
Det kunne f.eks. gøres på denne måde:

On Error Goto IkkeHeltal 'Break on error slås fra, fordi det håndteres i koden
Heltal = cint(Textbox1.value)
Goto IngenFejl
IkkeHeltal:
'Denne kode køres, hvis indtastning ikke er heltal:
msgbox "Der er indtastet en forkert værdi"
exit sub
IngenFejl:
'Koden køres, hvis der blev indtastet et heltal:
On Error Goto 0 'Break on error slås til igen

Håber, at det giver lidt mening - det blev en lang smøre! :-)

Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 24.Jun.2017 kl. 23:00

Tak for den grundige gennemgang. Det hjalp.Smile

Men hvad er modsætningen til:

If IsNumeric(TextBox2.Value) Then

    new_valuex = CDbl(TextBox2.Value)

Altså når jeg vil sikre at kun tekst slipper igennem Question

Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 25.Jun.2017 kl. 11:21
Hvis du vil teste, om en string består af bestemte tegn, kan du f.eks. gøre det sådan her:


Function HasValidChars(MyText As String) As Boolean
    Const MyValidChars As String = "abcdefghijklmnopqrstuvwxyzæøå"
    Dim i As Integer
    HasValidChars = True 'Reset
    For i = 1 To Len(MyText)
        If InStr(MyValidChars, LCase(Mid(MyText, i, 1))) = 0 Then
            HasValidChars = False
            Exit For
        End If
    Next i
End Function

Sub test()
MsgBox HasValidChars("werT2") 'Giver false
MsgBox HasValidChars("werT") 'Giver true
End Sub

Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 25.Jun.2017 kl. 23:03

Når jeg inddeler det der før var en hel dim liste. Eks.DIM arkaisk1, arkmglub ,udkol1, alfala1

I DIM arkaisk1, arkmglub……. as string og  DIM udkol1, alfala1…… as integer

Hvordan ordner jeg så variablerne i et kald: Call Umulius_Mglub( rækkefølgen er jo ændret) er der en god måde at gøre det på? Confused

Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 25.Jun.2017 kl. 23:14
Citat: Gambino Gambino skrev:

Når jeg inddeler det der før var en hel dim liste. Eks.DIM arkaisk1, arkmglub ,udkol1, alfala1

I DIM arkaisk1, arkmglub……. as string og  DIM udkol1, alfala1…… as integer

Hvordan ordner jeg så variablerne i et kald: Call Umulius_Mglub( rækkefølgen er jo ændret) er der en god måde at gøre det på? Confused


Jeg forstår ikke, hvad du mener her! 

Hvis du:

dim aaa, bbb, ccc as string,

bliver kun ccc erklæret som string - både aaa og bbb bliver variants - brug istedet:

dim aaa as string, bbb as string, ccc as string

eller bedre:

dim aaa as string 'Forklaring til variablen
dim bbb as string 'Forklaring til variablen
dim ccc as string 'Forklaring til variablen
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 25.Jun.2017 kl. 23:37
Tak for din tålmodighed. Det jeg mente var at sætte den brudte DIM række op i en ny orden. Det er jo rækkefølgen der er afgørende og ikke indholdet af variablerne. Jeg er vist for søvnig. Ovenstående fandt jeg ud af.
Men kender i en god måde at stoppe Exel VBA på når den køre i en lykke - uden at lukke alt ned med hvad dermed følger af oprydning, misted kode osv.
Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 25.Jun.2017 kl. 23:59
Tråden flagrer lidt rundt i forskellige emner.

I loops indsætter du 

DoEvents

Så kan du afbryde med "Esc" eller "Ctrl-Break"
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 26.Jun.2017 kl. 23:45
Tak for det. Jeg skal prøve at holde mig til emnet fremover. Men jeg var desperat Dead
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 27.Jun.2017 kl. 20:25

 

Jeg har kikket på din kode: "Function HasValidChars(MyText As String) As Boolean…osv"

Der er flere ting jeg ikke forstår.Confused

Hvordan kan koden i en Funktion optræde helt som en

 Sub noget()

 ---

 end sub

 

Altså

 

Function HasValidChars(MyText As String) As Boolean

-

End Function

 

A. Er det det samme? Og hvorfor er Funktion så ikke nævnt sammen med de andre: Procedure, Userform, Modul osv. De 2 ting virker fint inden for samme modul? Kan man blande det?

B. Hvordan bruger du egentligt konstanten MyValidChars

Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 27.Jun.2017 kl. 22:16
Den eneste forskel på function og sub er at function leverer noget tilbage igen. Jeg ved ikke hvad du mener med at nævne! 
ValidChars indeholder en liste af godkendte tegn. Instr giver positionen af de(t) tegn der testes for - hvis instr leverer 0 betyder det at det ikke blev fundet i ValidChars 
Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 27.Jun.2017 kl. 23:11
Der er iøvrigt mange rigtig gode video-serier på youtube, som guider igennem næsten alt det grundlæggende VBA - f.eks. https://www.youtube.com/watch?v=KHO5NIcZAc4&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index=1 ... men søg selv flere...

Mange timers "underholdning" - men desværre på engelsk!
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 28.Jun.2017 kl. 00:33
"hvorfor er Funktion så ikke nævnt sammen med de andre: Procedure, Userform, Modul osv."
Det jeg tænkte på var hvorfor funktion ikke er nævnt på samme fane som de andet. Det er da lige så logisk at skabe en sub som en funktion - eller er det?
Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 28.Jun.2017 kl. 10:22
Citat: Gambino Gambino skrev:


Det jeg tænkte på var hvorfor funktion ikke er nævnt på samme fane som de andet. Det er da lige så logisk at skabe en sub som en funktion - eller er det?

Jeg ved ikke, hvad du mener med dette!? Hvad er det for en fane? Prøv evt. at vise et skærmprint.

Brug tiden på at gå en eller flere af de der video-serier igennem på YouTube - du får et godt overblik og svar svar på MANGE af dine spørgsmål. 
Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 28.Jun.2017 kl. 13:15
uploads/1976/Fane.png
Jeg har ikke kunnet komme nærmere på "Fanen" end dette billede idet den egentlige fane lukker sammen hver gang jeg tager et billede.
så for at springe i emnet. Kender du en måde at tage skærmbilleder af programmer med åbne faner. Wink
Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 28.Jun.2017 kl. 17:54
Citat: Gambino Gambino skrev:

 
Jeg har ikke kunnet komme nærmere på "Fanen" end dette billede

Nåååh, den... har aldrig brugt inserts-fanen. Men brug den fint til at indsætte moduler o.l., men glem den i forhold til at skrive din kode.

Skriv bare teksten direkte i modulet:

Sub EtEllerAndet()

End sub

Kig nu de videoer igennem! Du slipper for at spørge så mange grundlæggende spørgsmål!
De er en STOR hjælp!


Til top
Gambino Se dropdown
Bronze bruger
Bronze bruger


Medlem: 11.Maj.2017
Land: Danmark
Status: Offline
Point: 26
Direkte link til dette indlæg Sendt: 29.Jun.2017 kl. 23:09
Først Tak for hjælpen. Smile Jeg blev klogere på meget omkring UserBox og al dens væsen. Det er svært at udpege et egentligt svar der "løste problemet". Jeg fik meget at tænke over og det fik mig til at lede i nogle helt andre retninger.
bare til orientering: Wink
ang.. forumsiden. Ved i at den fremtræder anderledes når man ser den med iPad.
eks. kan man ikke se "dette svar løste problemet" så den mulighed har man ikke
Til top
 Besvar Besvar Side  12>

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk