Avatar billede Butterfly Ekspert
09. juli 2014 - 10:36 Der 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

Mine koder ser sådan ud:

Sub cmdOK_Click()
   
      Sheets("Testing").Select
    Range("A1:D1").Select
    Selection.ClearContents
       
Dim dTal As Double

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

'Formularen lukkes
    Unload Me
End Sub
Avatar billede claes57 Ekspert
09. juli 2014 - 11:30 #1
ret fra
'Tallet indsættes i celle
    Sheets("Testing").Select
  Range("A1").Value = dTal

til
'Tallet indsættes i celle
    Sheets("Testing").Select
  Range("A1").Value = dTal
  Range("B1").Value = dTal
  Range("C1").Value = dTal
  Range("D1").Value = dTal

hvis det er samme tal, der skal skrive i de 4 felter
Avatar billede Butterfly Ekspert
10. juli 2014 - 08:30 #2
Nej det er 4 forskellige tal
Avatar billede claes57 Ekspert
10. juli 2014 - 08:59 #3
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.
Avatar billede Butterfly Ekspert
11. juli 2014 - 09:46 #4
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å.
Avatar billede claes57 Ekspert
11. juli 2014 - 11:50 #5
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.

Sub cmdOK_Click()
   
    Sheets("Testing").Select
    Range("A1:D1").Select
    Selection.ClearContents
       
Dim dTal1, dTal2, dTal3, dTal4 As Double

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

'Formularen lukkes
    Unload Me
End Sub
Avatar billede Butterfly Ekspert
14. juli 2014 - 07:15 #6
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
Avatar billede claes57 Ekspert
14. juli 2014 - 11:28 #7
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
Avatar billede Butterfly Ekspert
14. juli 2014 - 14:11 #8
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.
Avatar billede claes57 Ekspert
14. juli 2014 - 14:23 #9
ok - bare accepter svar og luk
Avatar billede Butterfly Ekspert
15. juli 2014 - 13:13 #10
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester