09. juli 2014 - 10:36Der er
9 kommentarer og 1 løsning
Userform med flere talfelter
Jeg har en userform der virker perfekt, men hvordan kan jeg få flere ens felter til at virke i samme makro? Jeg har ingen problemer med at indsætte flere felter, men hvordan får jeg dem til at skrive i celle A1 (virker perfekt), B1, C1 og D1? Sletning af indtastede tal virker perfekt. I alle felter A-D skal der indsættes et tal
With txtIndtastBox If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal = CDbl(.Text) End If End With
'Tallet indsættes i celle Sheets("Testing").Select Range("A1").Value = dTal
så skal du starte med at spørge efter 4 tal, du har en txtIndtastBox som skal rettes. Og i denne skal du have rettet lidt til, så den håndterer de 4 indtastningsfelter.
Ja jeg er godt klar over, at min indtastningsboks skal ændres, eller at koderne til den skal, det er jo det mit spørgsmål går ud på, hvordan ændre jeg koderne så jeg kan læse 4 tal? Jeg kan sagtens "tegne" selve boksen, men så går jeg i stå.
du skal lave de 4 txt-felter, og de skal navngives. Du har nu txtIndtastBox - ret det til txtIndtastBox1 og tilføj så de manglende 3 txtIndtastBox2 txtIndtastBox3 txtIndtastBox4 Så har vi det grundlag.
With txtIndtastBox1 If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal1 = CDbl(.Text) End If End With With txtIndtastBox2 If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal2 = CDbl(.Text) End If End With With txtIndtastBox3 If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal3 = CDbl(.Text) End If End With With txtIndtastBox4 If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal4 = CDbl(.Text) End If End With
'Tallet indsættes i celle Sheets("Testing").Select Range("A1").Value = dTal1 Range("B1").Value = dTal2 Range("C1").Value = dTal3 Range("D1").Value = dTal4
Tusind tak det virker perfekt, men der er lige en lille ting, jeg vil gerne kunne bruge 1, 2, 3 eller 4 af felterne afhængig af opgaven. Hvad hedder det felt jeg skal krydse af, for at indtastningsboksene ikke SKAL udfyldes
ved du på forhånd, om feltet skal bruges i opgaven? så kan du sætte .visible til False for de felter, der ikke skal bruges. Og i koden så teste på, og feltet er synligt - hvis ikke, så spring det over.
her er rettelser til flet4 - tilsvarende skal du lave det på 1 til 3 With txtIndtastBox4 If .Visible = True If IsNumeric(.Text) = False Or Len(.Text) = 0 Then .Text = "" MsgBox "Det skal være et tal" .SetFocus Exit Sub Else 'Teksten konverteres til et tal dTal4 = CDbl(.Text) End If End If End With
og If txtIndtastBox4.Visible = True Then Range("D1").Value = dTal4
Tak for svaret, det havde jeg set, men det er ikke det jeg ønsker. Nu har jeg løste det ved, at jeg jo bare kan taste 0 i de felter jeg ikke skal bruge.
Jeg har sat 0 ind som default value på de 3 felter, så slipper jeg for at skrive noget i alle felter hver gang. Jeg kan nøjes med at udfylde dem jeg har behov for og taste retur.
Sagen er afsluttet
Mange tak til dem der bidrog med viden.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.