Avatar billede Slettet bruger
02. juni 2003 - 13:07 Der er 13 kommentarer og
1 løsning

Data fra Exceldata til Word Brugerformular ved hjælp af VBA

Jeg har en brugerformular til indtastning af navn, adresse, postnummer og by. (lavet med VBA)

Jeg har et excel regneark med postvæsenes postnummerliste, men hvordan får jeg mit By felt på formularen opdateret med det bynavn, der svarer til det postnummer der indtastes, så udfyldningen sker automatisk, når man forlader postnummerfeltet.
Jeg har søgt på Eksperten og fundet ansvisning med Access database, men jeg ønsker det bliver hentet direkte fra regnearket.

Kan nogen hjælpe mig?
Avatar billede clemen Nybegynder
02. juni 2003 - 14:53 #1
Hvad med at bruge et lopslag?

Hvis din liste med postnumre og byer er med postnr som første kolonne, så kan du gøre noget lign:
postnr i b1
i b2 kan du skrive

=lopslag(b1;ark1!a1:b100)
Avatar billede clemen Nybegynder
02. juni 2003 - 14:53 #2
ups jeg glemte et 2 tal

=lopslag(b1;ark1!a1:b100;2)
Avatar billede clemen Nybegynder
02. juni 2003 - 14:55 #3
Jeg ved ikke om du kan lave et lopslag til et andet regneark, men du ihvertifald lave det til et andet ark
Avatar billede clemen Nybegynder
02. juni 2003 - 15:10 #4
Det ser desvære ud til at du ikke kan lave lopslag til et andet regneaek
Avatar billede janvogt Praktikant
02. juni 2003 - 15:52 #5
Det kan man nu godt :-)

F.eks. =VLOOKUP(A1;'C:\Various\[Test.xls]Ark1!A1:B100;2;FALSE)
Avatar billede Slettet bruger
02. juni 2003 - 17:27 #6
Jeg spørger ikke fra et andet ark, men fra kodemodulet i en UserForm.

Jeg har idag en kode der leder i en Access base, det er den kode jeg gerne vil have ændret, så den søger i et Excelark i stedet. Jeg er ikke bekendt med brugen af DAO, så jeg er lidt på den. (meget på den)

Private Sub UserForm_Initialize()
    Set e = CreateObject("DAO.DBEngine.36")
    Set ws = e.Workspaces(0)
    Set db = ws.OpenDatabase("C:\Postnr.mdb", True, True)
    Set rs = db.OpenRecordset("POSTNUMRE", dbOpenSnapshot)
   
     
End Sub

Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    rs.FindFirst "POSTNUMMER='" & txtPostnr.Text & "'"
    If Not rs.NoMatch Then
        Me.txtBynavn.Text = rs("BYNAVN")
   
    End If
End Sub

bynavnet indsættes i den textbox der er i formularen, og efterfølgende sættes det ind i skabelonen sammen med mange andre oplysninger.
Avatar billede jkrons Professor
03. juni 2003 - 11:13 #7
Hvorfor skal det med over i Userformen? Er det ikke nok at indsætte det i skabelonen?
Avatar billede janvogt Praktikant
03. juni 2003 - 11:30 #8
Hver gang postnummer-feltet i userformen ændres kunne den sætte denne værdi over i dit regneark. Her kunne du så lave dit opslag i en celle og returnere den til userfomen.
Avatar billede bak Forsker
03. juni 2003 - 12:48 #9
Du kan bruge denne ene sub.
Bemærk:
Husk at ændre filnavn og at jeg har navngivet hele tabellen "data"

Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim db As DAO.Database, rs As DAO.Recordset
    Set db = OpenDatabase("C:\Post.xls", True, True, "Excel 8.0;HDR=Yes;")
    Set rs = db.OpenRecordset("data", dbOpenSnapshot)
    rs.FindFirst "Postnr='" & txtPostnr.Text & "'"
    If Not rs.NoMatch Then txtByNavn = rs("Bynavn")
End Sub
Avatar billede Slettet bruger
03. juni 2003 - 14:08 #10
jkrons - fordi brugeren indtaster modtager navn og adresse samt reference overskrift i formularen, og det virker forvirrende hvis ikke bynavnet ses, når der indtastes postnummer.

janvogt - som du kan se, skal den ind i word, alle postnumre ligger i databasen.

Alle disse oplysninger indsættes i brev, der er dannet p.g.a. af en wordskabelon, sammen med d.d. og brevskriverens underskrift, firmanavn, tlf., fax, mobil, e-mail. Disse oplysninger ligger i en ini fil, som brugeren udfylder een gang for alle. Så derfor.........

bak - de ser ud til at være det jeg søger, jeg tjekker det lige og vender tilbage. Fik ellers importeret excel til access og lavet lidt om på den gamle kode, så problemet blev løst til tiden. Ville dog være glad hvis jeg også kan hente data fra excel.
Avatar billede bak Forsker
03. juni 2003 - 14:14 #11
Du kan selvfølgelig også bruge din egen kode :-)
Her skal tabellen være navngivet "POSTNUMRE"
Husk at du skal lave en

Public rs As Recordset
i et alm. modul så rs kan bruges af begge procedurer


Private Sub UserForm_Initialize()
    Set e = CreateObject("DAO.DBEngine.36")
    Set ws = e.Workspaces(0)
    Set db = ws.OpenDatabase("C:\Post.xls", True, True, "Excel 8.0;HDR=Yes;")
    Set rs = db.OpenRecordset("POSTNUMRE", dbOpenSnapshot)
End Sub

Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    rs.FindFirst "POSTNUMMER='" & txtPostnr.Text & "'"
    If Not rs.NoMatch Then
        Me.txtByNavn.Text = rs("BYNAVN")
    End If
End Sub
Avatar billede Slettet bruger
03. juni 2003 - 20:37 #12
Bak. Det virker bare perfekt med exel også. Kan du fortæller mig, hvad "Excel 8.0;HDR=Yes;")betyder?

Lægger du lige et svar?
Avatar billede bak Forsker
03. juni 2003 - 21:32 #13
Excel 8,0;HDR=Yes henviser til en excelversion (jeg kan dog ikke få den til at virke hvis jeg skriver 9.0)
HDR=yes  = er der overskrifter ja/nej
Avatar billede Slettet bruger
03. juni 2003 - 23:29 #14
Tak for forklaringen.
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