Avatar billede goglov Seniormester
24. marts 2017 - 22:58 Der er 14 kommentarer og
1 løsning

Brug af userform

Jeg ønsker at føre værdier fra min UserForm over i et program for videre bearbejdning

Jeg har en Userform1 der indeholder en TextBox.
Nu ønsker jeg indholdet af TextBoxen indført i mit program
Således at variablerne indgår i kørslen af programmet.

-
Selve Userformen der indeholder nedenstående:

Private Sub UserForm_Click()

End Sub

"En Tekstboks hvor der indtastes tal og bogstaver"

Private Sub Indholdd_Change()
klump = Indholdd.Value
End Sub


"Knap der kalder på programmet Test"

Private Sub CommandButton2_Click()
Call Test(klump)
End Sub

"Programmet"
Public Sub Test(klump)
Debug.Print "Teksten= "; klump
End Sub

Kan nogen foreslå en løsning?
Avatar billede bak Seniormester
26. marts 2017 - 12:39 #1
din kode virker fint, men i toppen af userformens kodemodul skal du lige declarere din variabel (Klump) ellers kan den ikke ses fra den ene sub til den anden i modulet.

Dim klump
Avatar billede bak Seniormester
26. marts 2017 - 12:40 #2
Dim Klump

Private Sub Indholdd_Change()
klump = Indholdd.Value
End Sub

Private Sub CommandButton2_Click()
Call Test(klump)
End Sub
Avatar billede goglov Seniormester
26. marts 2017 - 23:25 #3
Ang. Dim klump
Placeringen virker uklar på mig. man kan da ikke sætte dim klump Før Private Sub Indholdd_Change()
Avatar billede Jan Hansen Ekspert
27. marts 2017 - 07:38 #4
Hej

Dim Variabel " kan ses af alle nedenstående Sub/Function"

sub Test
  Dim variabel " kan kun ses inden for sub'en

end sub


Mvh Jan
Avatar billede bak Seniormester
27. marts 2017 - 18:26 #5
Jo, det kan man sagtens. Med den placering kan den ses af alle subs indenfor samme kodemodul. (her er det så userformen)
Avatar billede goglov Seniormester
27. marts 2017 - 20:06 #6
Tak for svar men min forvirring er steget til "digitalistiske" højder
Hvad mener i:

Nu har jeg lavet koden således:

"Indholdet af selve userformen:"
Private Sub UserForm_Initialize()  (skal der bruges initialize)
Dim klump    (efter råd fra jer, tror jeg nok - men det virker ikke)
End Sub

"Den indholdsdims jeg indskriver bogstaver og tal i:"
Private Sub Indholdd_Change()
klump = Indholdd.Value
End Sub

"Knappen der bør starte programmet TestBørge"
Private Sub CommandButton2_Click()
Call TestBørge(klump)
End Sub

"Programmet hvor jeg vi bruge de indskrevene bogstaver/tal"
Public Sub TestBørge(klump)
Debug.Print "Teksten= "; klump
End Sub

Jeg kan ikke udskrive klump med debug.print
Avatar billede bak Seniormester
27. marts 2017 - 20:32 #7
hvis du nu fjerner sub initialize og bare skriver Dim klump, så virker det.
Det skal ikke stå inden i en sub, den skal stå alene i toppen af Userformens kode.

------------- userformens kode
Dim Klump

Private Sub Indholdd_Change()
klump = Indholdd.Value
End Sub

Private Sub CommandButton2_Click()
Call Test(klump)
End Sub
---------------------------------------

--------i alm kodemodule-------
"Programmet hvor jeg vi bruge de indskrevene bogstaver/tal"
Public Sub TestBørge(klump)
Debug.Print "Teksten= "; klump
End Sub
-------------------------------------
Avatar billede bak Seniormester
27. marts 2017 - 20:48 #8
Private Sub CommandButton2_Click()
Call Test(klump)
End Sub

ændres til

Private Sub CommandButton2_Click()
Call TestBørge(klump)
End Sub
Avatar billede goglov Seniormester
28. marts 2017 - 00:30 #9
Skriver jeg:
Private Sub UserForm_Dim klump()
'Dim klump
End Sub
Får jeg fejlen
Compile error:
Expected: end of statement

Fjerner jeg
Private sub UserForm_initialize
End Sub
Og skriver jeg
Dim klump

Så optræder Dim Klump
Som en del af

Private Sub UserForm_Click()
End Sub
Dim klump

Og der har den da intet at gøre.

Hvad ser du som jeg ikke kan fatte?
Avatar billede goglov Seniormester
28. marts 2017 - 03:28 #10
Endelig har jeg fattet det. Jeg skrev "dim klump" øverst i Userform modulet og det dannede selv et afsnit.
Men hvorfor forsætter programmet så.
Teksten afleveres i debug.print og så ville jeg tro at programmet slutter.
Men når jeg ser min tekst i editoren og vil klikke på selve arket så er alt frosset.
"Continuo" er gostet
Hvordan slutter man det så?
Avatar billede Jan Hansen Ekspert
28. marts 2017 - 07:39 #11
'Vi prøver engang til:

'Program/Modul start

Dim Klump 'sæt variabel

Private Sub Indholdd_Change()
klump = Indholdd.Value 'Tildel variabel indhold
End Sub

Private Sub CommandButton2_Click()
Call TestBørge 'Kalde sub'en, (klump) er overflødig
End Sub

Public Sub TestBørge
Debug.Print "Teksten= "; klump 'printer variablen
End Sub

'Program/Modul slut

'Hvis du kopierer alt ind i di userform-modul så virker det

'Mvh Jan
Avatar billede goglov Seniormester
28. marts 2017 - 11:32 #12
Private Sub CommandButton2_Click()
Call TestBørge(klump)
End Sub

Program/Modul slut
programlinjen bliver rød og skråstregen er fremhævet med blåt
hvad sker der?
jeg går udfra at der ikke skal være apostrof før 'Program/Modul slut
linjen danner heller ikke "sit eget afsnit"
suk.
Avatar billede Jan Hansen Ekspert
28. marts 2017 - 11:40 #13
ups lille forglemmelse

' Program/Modul slut

det er en kommentar, alle kommentarer startes med '

mvh Jan
Avatar billede goglov Seniormester
28. marts 2017 - 14:44 #14
Tak for hjælpen !
Avatar billede Jan Hansen Ekspert
28. marts 2017 - 15:28 #15
Velbekomme
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