19. juli 2008 - 15:18Der 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.
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.
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
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?
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
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.
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.
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
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
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.