Avatar billede Chewie Novice
09. oktober 2002 - 14:43 Der er 19 kommentarer og
1 løsning

Userform, markro, osv.

Hej

Jeg er igang med at lave min første userform !

Nu skal jeg have de data der er indtastet i formen ind i et ark, men hvordan gør jeg det ??

A4 = init.
B4 = Dato
C4 = 09-11
E4 = 11-13
F4 = 13-16
G4 = Minutter
H4 = Opkald via
I4 = Afsendte Tilbud
J4 = Beholde nu. ord.
K4 = Tænker over det

Afkrysningsfelterne skal give værdien 1 (C4, E4, F4, J4 og K4)

Det skal være sådan at første indtastning stå i række 4, næste i række 5, osv.

Jeg oploader lige et billede (øjeblik) .............

Chewie
Avatar billede Chewie Novice
09. oktober 2002 - 14:43 #1
Avatar billede Chewie Novice
09. oktober 2002 - 14:47 #2
Sig til hvis det er total sort snak ..... det er lidt svært at forklare når jeg ikke har prøvet at arbejde med userform før !!
Avatar billede Slettet bruger
09. oktober 2002 - 15:13 #3
Dette er ikke testet...
Men det burde give dig en ide om hvordan det skal foregå..

--------

Private Sub CommandButton1_Click()
ActiveSheet.Range("A4") = UserForm1.TextBox1.Value
ActiveSheet.Range("B4") = UserForm1.TextBox2.Value

If UserForm1.CheckBox1.Value = True Then
    ActiveSheet.Range("C4") = 1
End If

If UserForm1.CheckBox2.Value = True Then
    ActiveSheet.Range("E4") = 1
End If

If UserForm1.CheckBox3.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

ActiveSheet.Range("G4") = UserForm1.TextBox3.Value
ActiveSheet.Range("H4") = UserForm1.TextBox4.Value
ActiveSheet.Range("I4") = UserForm1.TextBox5.Value

If UserForm1.CheckBox4.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

If UserForm1.CheckBox5.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

UserForm1.Hide

End Sub
----------------
Avatar billede Slettet bruger
09. oktober 2002 - 15:15 #4
Nogle af cellereferencerne skal vist lige rettes til...  :-)
Avatar billede Chewie Novice
09. oktober 2002 - 15:19 #5
Det havde jeg set :o)

Så vidt jeg kan se (ikke vildt haj) vil den næste der bliver indtastet over skrive den forige (række 4)..... der skulle den jo helst ikke, den skulle gerne fortsætte i række 5 osv.
Avatar billede Slettet bruger
09. oktober 2002 - 15:29 #6
Ok, jeg havde lige overset den del... :-)

Du skal så lige tilføje dette

----------
Dim nextRow As Integer
nextRow = ActiveSheet.UsedRange.Rows.Count + 1
----------

Og erstatte
  ActiveSheet.Range("A4") = ...
med
  ActiveSheet.Range(Cells(nextRow, 1), Cells(nextRow, 1) = ...

osv....
Avatar billede Chewie Novice
09. oktober 2002 - 15:33 #7
blackadder >> det ser jo fint ud ..... men i mit forsøg på at prøve makroen løber jeg ud i et andet problem !

Hvordan får jeg startet formen når jeg står i mit ark ??? (jeg har indsat en knap, men hvad er markroen til at starte den)
Avatar billede Slettet bruger
09. oktober 2002 - 15:33 #8
Den forudsætter at der ikke er tekst, tal eller formattering i rækkerne under, da 'UsedRange' er baseret på det brugte område af arket.
Avatar billede Chewie Novice
09. oktober 2002 - 15:36 #9
Det er OK for der vil aldrig være noget under det område hvor den indsætter
Avatar billede Slettet bruger
09. oktober 2002 - 15:37 #10
Jeg plejer at lave en seperat sub der loader formen.
Noget i retningen af dette:

-------------
Public Sub LoadForm()
    Load UserForm1
    UserForm1.Show
End Sub
-------------
Avatar billede Chewie Novice
09. oktober 2002 - 15:51 #11
Hvis du har lidt mere tid hæver jeg lige pointsne !!!!

Formen loader fint frem nu :o)
jeg kan indtaste i felterne :o)

men der sker intet nå jeg klikker OK (heller ikke når jeg klikker Annuller)

Nogle ideer ??
Avatar billede Slettet bruger
09. oktober 2002 - 16:04 #12
Du skal lige kontrollere navnet på den funktion der er tilknyttet din 'OK' knap.

Jeg har brugt...
  Private Sub CommandButton1_Click()

Jeg ved ikke om din 'OK' knap hedder det samme...

Mht. 'Annuller' knappen skal du indsætte følgende kode

---------
UserForm1.Hide
Unload UserForm1
---------
Avatar billede Chewie Novice
09. oktober 2002 - 16:10 #13
--------------------
Private Sub CommandButton1_Click()

Dim nextRow As Integer
nextRow = ActiveSheet.UsedRange.Rows.Count + 1

ActiveSheet.Range("A4") = UserForm1.TextBox1.Value
ActiveSheet.Range("B4") = UserForm1.TextBox2.Value

If UserForm1.CheckBox1.Value = True Then
    ActiveSheet.Range("C4") = 1
End If

If UserForm1.CheckBox2.Value = True Then
    ActiveSheet.Range("E4") = 1
End If

If UserForm1.CheckBox3.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

ActiveSheet.Range("G4") = UserForm1.TextBox3.Value
ActiveSheet.Range("H4") = UserForm1.TextBox4.Value
ActiveSheet.Range("I4") = UserForm1.TextBox5.Value

If UserForm1.CheckBox4.Value = True Then
    ActiveSheet.Range("J4") = 1
End If

If UserForm1.CheckBox5.Value = True Then
    ActiveSheet.Range("K4") = 1
End If

UserForm1.Hide

End Sub

-----------------
Denne marcro ligger under Ark1 (hedder statistik)

--
Min OK knap heddder CommandButton1 under (Name) det er vil nok ik´
Avatar billede Chewie Novice
09. oktober 2002 - 16:18 #14
blackadder >> det er fyraften for mig håber du er frisk på at fortsætte imorgen :o)
Avatar billede Slettet bruger
09. oktober 2002 - 16:29 #15
Prøv med:

-----------

Private Sub CommandButton1_Click()  ' OK knap

Dim nextRow As Integer
nextRow = ActiveSheet.UsedRange.Rows.Count + 2

' Kolonne A
ActiveSheet.Range(Cells(nextRow, 1), Cells(nextRow, 1)) = UserForm1.TextBox1.Value
' Kolonne B
ActiveSheet.Range(Cells(nextRow, 2), Cells(nextRow, 2)) = UserForm1.TextBox2.Value

' Kolonne C
If UserForm1.CheckBox1.Value = True Then
    ActiveSheet.Range(Cells(nextRow, 3), Cells(nextRow, 3)) = 1
End If

' Kolonne E
If UserForm1.CheckBox2.Value = True Then
    ActiveSheet.Range(Cells(nextRow, 5), Cells(nextRow, 5)) = 1
End If

' Kolonne F
If UserForm1.CheckBox3.Value = True Then
    ActiveSheet.Range(Cells(nextRow, 6), Cells(nextRow, 6)) = 1
End If

' Kolonne G
ActiveSheet.Range(Cells(nextRow, 7), Cells(nextRow, 7)) = UserForm1.TextBox3.Value
' Kolonne H
ActiveSheet.Range(Cells(nextRow, 8), Cells(nextRow, 8)) = UserForm1.TextBox4.Value
' Kolonne I
ActiveSheet.Range(Cells(nextRow, 9), Cells(nextRow, 9)) = UserForm1.TextBox5.Value

' Kolonne J
If UserForm1.CheckBox4.Value = True Then
    ActiveSheet.Range(Cells(nextRow, 10), Cells(nextRow, 10)) = 1
End If

' Kolonne K
If UserForm1.CheckBox5.Value = True Then
    ActiveSheet.Range(Cells(nextRow, 11), Cells(nextRow, 11)) = 1
End If

UserForm1.Hide

End Sub

--------------
Avatar billede Slettet bruger
09. oktober 2002 - 16:41 #16
Hvis du gerne vil have den nyeste række øverst,
kan du bruge denne version istedet for.

---------
Rows("4:4").Insert Shift:=xlDown

ActiveSheet.Range("A4") = UserForm1.TextBox1.Value
ActiveSheet.Range("B4") = UserForm1.TextBox2.Value

If UserForm1.CheckBox1.Value = True Then
    ActiveSheet.Range("C4") = 1
End If

If UserForm1.CheckBox2.Value = True Then
    ActiveSheet.Range("E4") = 1
End If

If UserForm1.CheckBox3.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

ActiveSheet.Range("G4") = UserForm1.TextBox3.Value
ActiveSheet.Range("H4") = UserForm1.TextBox4.Value
ActiveSheet.Range("I4") = UserForm1.TextBox5.Value

If UserForm1.CheckBox4.Value = True Then
    ActiveSheet.Range("J4") = 1
End If

If UserForm1.CheckBox5.Value = True Then
    ActiveSheet.Range("K4") = 1
End If

UserForm1.Hide
--------------

Om ikke andet gør den koden en smule simplere...
09. oktober 2002 - 18:47 #17
Kunne ikke lige dy mig - her er en anden måde: (dog ikke testet)

    Const sR As String = "4"
    Dim lCount As Long
    Dim rChb As Range
    Dim rTxt As Range
   
    With ActiveSheet
        Set rChb = .Range("C" & sR, "E" & sR, "F" & sR, "J" & sR, "K" & sR)
        Set rTxt = .Range("A" & sR, "B" & sR, "G" & sR, "H" & sR, "I" & sR)
        .Rows(sR & ":" & sR).Insert Shift:=xlDown
       
        For lCount = 1 To 5
            If Me.Controls("CheckBox" & CStr(lCount)).Value Then
                rChb.Areas(lCount).Value = 1
            End If
            rTxt.Areas(lCount).Value = Me.Controls("TextBox" & CStr(lCount)).Value
        Next lCount
   
        Me.Hide
    End With
09. oktober 2002 - 18:48 #18
"Me.Hide" skal måske nok udenfor "End With"
Avatar billede Chewie Novice
10. oktober 2002 - 09:33 #19
Hmmm .... Jeg kan ikke få det til at funke

Jeg har prøvet at ligge makroen forskellige steder ... men enden kommer den med en fejl eller også sker der ingen ting.

her er et skærmskyd af VB !!

http://www.dinos.dk/index.php?op=10&act=bdfag&spm=268037
Avatar billede Chewie Novice
10. oktober 2002 - 10:14 #20
Private Sub CommandButton1_Click()  ' OK knap

Rows("4:4").Insert Shift:=xlDown

ActiveSheet.Range("A4") = UserForm1.TextBox10.Value
ActiveSheet.Range("B4") = UserForm1.TextBox1.Value

If UserForm1.CheckBox1.Value = True Then
    ActiveSheet.Range("C4") = 1
End If

If UserForm1.CheckBox3.Value = True Then
    ActiveSheet.Range("E4") = 1
End If

If UserForm1.CheckBox2.Value = True Then
    ActiveSheet.Range("F4") = 1
End If

ActiveSheet.Range("G4") = UserForm1.TextBox9.Value
ActiveSheet.Range("H4") = UserForm1.TextBox8.Value
ActiveSheet.Range("I4") = UserForm1.TextBox7.Value

If UserForm1.CheckBox4.Value = True Then
    ActiveSheet.Range("J4") = 1
End If

If UserForm1.CheckBox7.Value = True Then
    ActiveSheet.Range("K4") = 1
End If

UserForm1.Hide

End Sub

------------------------

Private Sub CommandButton2_Click()
UserForm1.Hide
Unload UserForm1
End Sub


---------------------------------------

Så lykkes det ..... som i nok kan se var det Klassisk begynder fejl (nummerne på checkbox og textbox)

Mange tak for hjælpen

meeeeen .... jeg er slet ikke færdig :o) opretter nyt spm :o)
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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