Avatar billede JAHT Nybegynder
14. juli 2011 - 20:28 Der er 1 kommentar og
1 løsning

Opslag i Userform

Hej,

Jeg har lavet en Userform i Excel, hvor jeg er støt på et lille problem. Jeg kunne godt tænke mig at lave et opslag i allerede indtastet data. Jeg kan dog ikke helt finde hoved og hale i at lave et opslag.

Her kommer der lidt informationer omkring arket/userform:

Den værdi der skal søges på står i TextBox1. I TextBox2 skal der, på baggrund af den værdi der er tastet ind i TextBox1, fremkomme en værdi. I dette tilfælde er det en dato. I TextBox3 skal der vises en talværdi.

De informationer som der skal søges på, befinder sig i arket "Køb". Dataområdet er A2:D4000.

Koden må meget gerne tilpasses således, at hver gang der bliver tastet i TextBox1 fremkommer der nye værdier i TextBox 2 og 3.

Her kommer et lille eksempel:

I TextBox1 indtastet et bilagsnr. f.eks. 100, så skal der i TextBox2 fremkomme en dato (kolonne B) for hvornår bilaget er blevet bogført og i TextBox3 skal købsprisen vises (kolonne C).  TextBox2 må gerne vise formatet "dd. mmmm åååå".

PS: Jeg er stadig relativ ny mht. koder, så bære over med mig.

På forhånd tak for hjælpen.
Avatar billede Ialocin Novice
14. juli 2011 - 22:00 #1
Hej JAHT

Prøv følgende ...

Kopier nedenstående kode ind i BeforeUpdate hændelsen bag din TextBox1.
Når du skriver et bilagsnummer ind i TextBox1 og taster enter ... burde tilhørende dato og pris blive skrevet i henholdsvis TextBox2 og 3.

Det virker her ... under Win7 og i den engelske udgave af Office 2003.

Kode:


Dim counter As Integer 'tælle variabel til cellerne i kolonne A på arket Køb
Dim curcell As Range  'den aktuelle celle i kolonne A på arket Køb


'slå skærmopdatering fra
Application.ScreenUpdating = False





    'for hver celle i kolonne A på arket Køb
    'start i celle A2
    For counter = 2 To Sheets("Køb").Range("A65536").End(xlUp).Row

        'set curcell = den næste celle i kolonnen
        Set curcell = Worksheets("Køb").Cells(counter, 1)
       
       
                           
            'hvis den aktuelle celleværdi = værdien i testbox1 på userformen
            If curcell.Text = UserForm1.TextBox1.Text Then
           
                'sæt textbox2 = værdien i cellen 1 til højre for den aktive celle
                UserForm1.TextBox2.Text = curcell.Offset(0, 1)
               
               
                'sæt textbox3 = værdien i cellen 2 til højre for den aktive celle
                UserForm1.TextBox3.Text = curcell.Offset(0, 2)
               
                'forlad proceduren
                Exit Sub
               
            End If
           
                       
         
   
    'næste celle i kolonne A på arket Køb
    Next



'slå skærmopdatering til igen
Application.ScreenUpdating = True




Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
14. juli 2011 - 22:18 #2
Hej JAHT

Hermed lige en tilføjelse ... jeg havde glemt formateringen af datoen i TextBox2

Kopier nedenstående ind som tidligere:


Dim counter As Integer 'tælle variabel til cellerne i kolonne A på arket Køb
Dim curcell As Range  'den aktuelle celle i kolonne A på arket Køb


'slå skærmopdatering fra
Application.ScreenUpdating = False





    'for hver celle i kolonne A på arket Køb
    'start i celle A2
    For counter = 2 To Sheets("Køb").Range("A65536").End(xlUp).Row

        'set curcell = den næste celle i kolonnen
        Set curcell = Worksheets("Køb").Cells(counter, 1)
       
       
                           
            'hvis den aktuelle celleværdi = værdien i testbox1 på userformen
            If curcell.Text = UserForm1.TextBox1.Text Then
           
                'sæt textbox2 = værdien i cellen 1 til højre for den aktive celle
                'formater værdien således: "dd. mmmm yyyy"
                UserForm1.TextBox2.Text = Format(curcell.Offset(0, 1), "dd. mmmm yyyy")
               
               
                'sæt textbox3 = værdien i cellen 2 til højre for den aktive celle
                UserForm1.TextBox3.Text = curcell.Offset(0, 2)
               
                'forlad proceduren
                Exit Sub
               
            End If
           
                       
         
   
    'næste celle i kolonne A på arket Køb
    Next



'slå skærmopdatering til igen
Application.ScreenUpdating = True




Med venlig hilsen, Nicolai
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