Avatar billede besida Nybegynder
19. juli 2008 - 15:18 Der er 15 kommentarer og
1 løsning

Opslag i userform

Hej

Jeg har siddet og tænkt over hvordan man kan lave et opslag i sin userform.

Userformen bruges til at indtaste bruger oplysninger, som kundenummer, kundenavn, adresse, samt mange andre oplysninger.
Oplysningerne bliver gemt i et ark ("database"), hvor de kopieres og indsættes fra userformen, og så over i excel arket, i den næste tomme række.

For at kunne redigere i de data jeg har tastet ind, direkte fra userformen, vil jeg gerne kunne åbne userformen, og så søge på kundenummer eller kundenavn, kolonne a & b, og derefter få de allerede indtastede data vist i userformen, med mulighed for at redigere eller tilføje data.

Er der nogen der kan hjælpe?
Avatar billede ebea Ekspert
19. juli 2008 - 15:28 #1
Hvorfor laver du ikke det direkte i Excel, ved hjælp af VBA. Et sådan eksempel fungerer glimrende i Excel. Har selv lige lavet en kunde database med samme funktioner, som du nævner, med lagring og søgning på kunder.
Avatar billede besida Nybegynder
19. juli 2008 - 15:31 #2
ok, har du et eksempel jeg må se så :)
Er ikke ørn til det :)
Avatar billede supertekst Ekspert
19. juli 2008 - 15:45 #3
Koden anbringes i arket "database"

Private Function SøgRække(hvad, kolonne)
    antalkunder = ActiveCell.SpecialCells(xlLastCell).Row

    With ActiveSheet.Range(kolonne & "1:" & kolonne & CStr(antalkunder))
        Set c = .Find(hvad, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            SøgRække = c.Row
        Else
            SøgRække = 0
        End If
    End With
End Function
Private Sub CB_Søg_Click()
Dim kundeRække
    If Me.TB_Kundenr <> "" Then
Rem Søg efter Kundenr
        kundeRække = SøgRække(Me.TB_Kundenr, "A")
        If kundeRække > 0 Then
            Me.Tb_Kundenavn = Cells(kundeRække, 2)
        Else
            EjFundet
        End If
    Else
        If Me.Tb_Kundenavn <> "" Then
Rem Søg efter kundenavn
            kundeRække = SøgRække(Me.Tb_Kundenavn, "B")
                If kundeRække > 0 Then
                    Me.Tb_Kundenavn = Cells(kundeRække, 2)
                Else
                    EjFundet
                End If
        End If
    End If
End Sub
Private Sub EjFundet()
    MsgBox ("Kundedata ikke fundet")
End Sub
Avatar billede ebea Ekspert
19. juli 2008 - 15:45 #4
Har du en mail adresse ?.
Avatar billede besida Nybegynder
19. juli 2008 - 15:55 #5
Hej SuperTekst
tak for hurtigt svar. Sorry jeg spørger dumt, men er newbie til det her:)
Jeg har oprettet en tekstbox, og en knap, hvor skal jeg refere koden til?
Avatar billede supertekst Ekspert
19. juli 2008 - 15:56 #6
Lige hurtigt nok - koden er selvfølgelig i Userformen + en rettelse:

Alternativ: anvend Formular under menupunktet Data

Private Function SøgRække(hvad, kolonne)
    antalkunder = ActiveCell.SpecialCells(xlLastCell).Row

    With ActiveSheet.Range(kolonne & "1:" & kolonne & CStr(antalkunder))
        Set c = .Find(hvad, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            SøgRække = c.Row
        Else
            SøgRække = 0
        End If
    End With
End Function
Private Sub CB_Søg_Click()
Dim kundeRække
    If Me.TB_Kundenr <> "" Then
Rem Søg efter Kundenr
        kundeRække = SøgRække(Me.TB_Kundenr, "A")
        If kundeRække > 0 Then
            Me.Tb_Kundenavn = Cells(kundeRække, 2)
        Else
            EjFundet
        End If
    Else
        If Me.Tb_Kundenavn <> "" Then
Rem Søg efter kundenavn
            kundeRække = SøgRække(Me.Tb_Kundenavn, "B")
                If kundeRække > 0 Then
                    Me.TB_Kundenr = Cells(kundeRække, 1)
                Else
                    EjFundet
                End If
        End If
    End If
End Sub
Private Sub EjFundet()
    MsgBox ("Kundedata ikke fundet")
End Sub
Avatar billede supertekst Ekspert
19. juli 2008 - 15:57 #7
Hvis du sender en mail til: pb@supertekst-it.dk
så returnerer jeg min fil....
Avatar billede besida Nybegynder
19. juli 2008 - 15:59 #8
Kan man evt. kode det sådan, at det foregår i selve userformen? eller er det allerede sån koden funger??

Hvis man bruger en combobox i stedet for textbox, vil man så kunne få søgningen til at liste resultaterne i comboboxen?
Avatar billede ebea Ekspert
19. juli 2008 - 16:14 #9
Har lagt et billede af den UserForm jeg omtalte, i dette Link.
http://www.ebe.dk/kundebase.jpg
Avatar billede besida Nybegynder
19. juli 2008 - 18:02 #10
Det ser godt ud Ebea. Mit ligger self os i excel.

Hvilken kode bruger du til at kunne redigere de opslåede data?
Avatar billede ebea Ekspert
19. juli 2008 - 18:40 #11
Det er alt sammen lavet i Visual Basic for Application (VBA). Det er det indbyggede programmerings værktøj i Office, og dermed også i Excel.
Formen du ser på billedet, kører som selvstændigt program på skærmen uden at du overhovedet kan se at Excel er startet, og du kan tilføje kunde inf, og søge på samme data, ja du kan jo lave den helt efter dit eget hovede.
Fordelen for mig i dette tilfælde, er at det hele ligger samlet i samme program.
Samtidig er det rimelig nemt og hurtigt at programmere, også for nybegyndere.
Avatar billede ebea Ekspert
19. juli 2008 - 18:56 #12
Men du kan sende din mail til mig her på: post@ebe.dk  -  så kan jeg sende dig filen med det kodning der er brugt, så kan du jo se om det er noget du kan komme videre med. Du skal blot fortælle hvad version af Excel du bruger.
Avatar billede besida Nybegynder
20. juli 2008 - 21:23 #13
Hej Ebea, super mange tak for hjælpen. Jeg fandt dog svaret på mine bønner i supertekst's version.

Hvis du li sender et svar supertekst, så får du dine points.!!
Rigtig mange tak for hjælpen. Det er var li det jeg efterspurgte :)
Avatar billede supertekst Ekspert
20. juli 2008 - 23:28 #14
Sidste version:

Dim søgFlag As Boolean
Dim kundeRække
Dim dbArk As Worksheet
Private Sub Cb_Luk_Click()                          'Knappen Luk
    Unload UserForm1
End Sub
Private Sub Userform_activate()
    søgFlag = False
    Me.Cb_Opdater.Enabled = False
   
    Set dbArk = ActiveWorkbook.Sheets("database")
End Sub
Private Sub Cb_Opdater_Click()                      'Knappen Opdater
Rem flyt Userform-data til "database"
   
    dbArk.Select
   
    With dbArk
        .Cells(kundeRække, 1) = Val(Me.Tb_kundeNr)      'numerisk
        .Cells(kundeRække, 2) = Me.Tb_Kundenavn
Rem o.s.v.
    End With
End Sub
Private Sub CB_Søg_Enter()                          'Knappen SØG
Rem Clear indhold vedr. datafelter
    Me.Tb_kundeNr = ""
    Me.Tb_Kundenavn = ""
Rem o.s.v.
End Sub
Private Sub CB_Søg_Click()                          'Knappen SØG
    If Me.TB_SøgKunde <> "" Then
        If IsNumeric(Me.TB_SøgKunde) = True Then
       
Rem Søg efter KundeNr (søgekriterie er numerisk)
            kundeRække = SøgRække(Me.TB_SøgKunde, "A")
        Else
Rem Søg efter kundenavn
            kundeRække = SøgRække(Me.TB_SøgKunde, "B")
        End If
       
        If kundeRække > 0 Then
            visData kundeRække
            søgFlag = True
            Me.Cb_Opdater.Enabled = True
        Else
            EjFundet
            søgFlag = False
            Me.Cb_Opdater.Enabled = False
        End If
    End If
End Sub
Private Function SøgRække(hvad, kolonne)
    dbArk.Select
   
    antalkunder = ActiveCell.SpecialCells(xlLastCell).Row

    With dbArk.Range(kolonne & "1:" & kolonne & CStr(antalkunder))
        Set c = .Find(hvad, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            SøgRække = c.Row
        Else
            SøgRække = 0
        End If
    End With
End Function
Private Sub visData(række)
    With dbArk
        Me.Tb_kundeNr = .Cells(række, 1)
        Me.Tb_Kundenavn = .Cells(række, 2)
   
Rem o.s.v
    End With
End Sub
Private Sub EjFundet()
    MsgBox ("Kundedata ikke fundet")
    Me.Tb_kundeNr = ""
    Me.Tb_Kundenavn = ""
End Sub
Avatar billede Kugelmann Nybegynder
03. marts 2013 - 14:29 #15
Hejsa!

Jeg kunne virklig godt bruge ovenstående løsning... er der nogen der ligger inde med et eksempel jeg kan prøve at arbejde ud fra..

mvh

Steffen
Avatar billede supertekst Ekspert
03. marts 2013 - 16:47 #16
Desværre - har ikke filen mere.
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
Kurser inden for grundlæggende programmering

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