Avatar billede mumsasa Nybegynder
21. september 2009 - 14:30 Der er 7 kommentarer og
1 løsning

VBA: Hvordan redigere jeg rækker i en Userform??

Hej Allesammen

Lad mig starte med at sige tak for de gange jeg har anvendt jeres bidrag!

Jeg har en Userform hvor man kan registrere en masse informationer ved at indtaste i forskellige Textbox, listbox, calender, mm, og derved efterfølgende trykke på knappen submit. Dette bliver gemt i arket Database og række for række.

Men jeg vil gerne have muligheden for, via en Userform, at søge efter en af rækkerne, vha. ID nummer(Hver række har et unikt navn/nummer),  og "åbne" denne række og redigere i denne rækkes koloner.

Lad os sætte et eksempel op som i kan anvende:

I min userform (Userform1) som jeg kan indtaste data til rækkerne har jeg følgende:
            1 textbox  name: textbox1
            1 combobox name: combobox1 
            1 listbox  name: Listbox
            1 calender name: calender 
            1 label    name: ID (denne tager indholdet af textbox1 og ligger et nummer til. Den har jeg selv lavet)

Disse kommer, efter tryk på "submit", ned i arket "Database".

Her kommer så opgaven:

Hvordan kan jeg søge efter ID og efterfølgende få vist rækkerne i "Database" i en ny Userform (Userform 2) i textbox'er, som kan redigeres og evt. slettes???

Det vigtiste for denne opgave er at kunne redigere i dataene i en userform. Søgefunktionen er kun et tillæg hvis det kan lade sig gøre.

[B]Jeg ved godt det er en svær opgave men håber på at kunne få hjælp. [/b]

100000000000 tak
Avatar billede supertekst Ekspert
21. september 2009 - 14:42 #1
Du skal være velkommen til at sende filen - adresse under min profil.
Avatar billede mumsasa Nybegynder
21. september 2009 - 15:53 #2
Sender dem til dig når jeg kommer hjem.

1000 tak fordi du gider at bruge din tid på at se det igennem. Det sætter jeg stor pris på!
Avatar billede supertekst Ekspert
21. september 2009 - 16:17 #3
ok...
Avatar billede supertekst Ekspert
22. september 2009 - 18:32 #4
--- Form til SØGNING & VALG ---
Private Sub CommandButton1_Click()                  'Søg ID
Dim fundetRække As Integer, ræk As Long, søgFra As Long
Rem slet evt. gl. indhold
    Me.ListBox1.Clear

    søgFra = 1
   
    For ræk = StartRæk To 65000
        fundetRække = søgIdatabase(Me.TextBox1, "E" & CStr(søgFra) & ":E65000")
       
        If fundetRække = 0 Then
            Exit For
        Else
            hentFundneTilListe fundetRække
            søgFra = fundetRække + 1
        End If
    Next ræk
End Sub
Private Sub hentFundneTilListe(række)
    With ActiveWorkbook.Sheets("database")
        Me.ListBox1.AddItem .Range("A" & CStr(række))
        For felt = 2 To 5
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, felt - 1) = .Cells(række, felt)
        Next
       
Rem gem det fundne række-nr
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, felt - 1) = række
    End With
End Sub
Private Sub CommandButton2_Click()
    If Me.ListBox1.ListIndex <> -1 Then
        View2.Show
    End If
End Sub
Private Sub UserForm_activate()
Rem slet evt. gl. indhold
    Me.ListBox1.Clear
End Sub
Private Function søgIdatabase(søgefter, område)
    With Sheets("database").Range(område)
        Set c = .Find(søgefter, LookIn:=xlValues, LookAt:=xlPart)
        If Not c Is Nothing Then
            søgIdatabase = c.Row
        Else
            søgIdatabase = 0
        End If
    End With
End Function


--- Form til AJF. ---
Dim valgtRække As String
Private Sub CommandButton1_Click()
    ajourførFelt Me.pa_re_txt, "A"
End Sub
Private Sub CommandButton2_Click()
    ajourførFelt Me.cl_re_txt, "B"
End Sub
Private Sub CommandButton3_Click()
    ajourførFelt Me.av_re_txt, "C"
End Sub
Private Sub CommandButton4_Click()
    ajourførFelt Me.carrier_re_txt, "K"
End Sub
Private Sub CommandButton5_Click()
    ajourførFelt Me.Covertype_re_txt, "L"
End Sub
Private Sub CommandButton6_Click()
    ajourførFelt Me.transtype_re_txt, "M"
End Sub
Private Sub CommandButton7_Click()
    ajourførFelt Me.amount_re_txt, "N"
End Sub
Private Sub ajourførFelt(feltVærdi, kolonne)
    ActiveWorkbook.Sheets("database").Range(kolonne & CStr(valgtRække)) = feltVærdi
End Sub
Private Sub UserForm_activate()
    valgtRække = View.ListBox1.List(View.ListBox1.ListIndex, 5)

    With ActiveWorkbook.Sheets("database")
        Me.pa_re_txt = .Range("A" & valgtRække)
        Me.cl_re_txt = .Range("B" & valgtRække)
        Me.av_re_txt = .Range("C" & valgtRække)
       
        Me.carrier_re_txt = .Range("K" & valgtRække)
        Me.Covertype_re_txt = .Range("L" & valgtRække)
        Me.transtype_re_txt = .Range("M" & valgtRække)
        Me.amount_re_txt = .Range("N" & valgtRække)
    End With
End Sub
Avatar billede mumsasa Nybegynder
23. september 2009 - 09:26 #5
Jeg vil gerne have lov til at takke dig og udtrykke min beundring for dine egenskaber i Excel.

Det virker perfekt. Jeg har dog rettet den en smule til. Kan man sætte width i kolonerne i Listbox1?
Avatar billede supertekst Ekspert
23. september 2009 - 09:30 #6
Tak for de pæne ord.

Ja - det kan du godt - f.eks.:

    Me.lb_adrListe.ColumnWidths = "100;20;80"
Avatar billede mumsasa Nybegynder
23. september 2009 - 10:13 #7
tak

Jeg har kun et lille problem.

Jeg har for, udfordringens skyld, lavet 12 rækker med samme oplysninger. Desværre viser søgefunktionen ikke alle 12 rækker men kun 8. Er der en grund til dette?
Avatar billede supertekst Ekspert
23. september 2009 - 10:19 #8
Ok - jeg prøver det samme....
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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