Avatar billede lerskov Praktikant
31. januar 2009 - 00:15 Der er 10 kommentarer og
1 løsning

opslag til UserForm

Hej Alle.

Jeg prøver igen, har endnu ikke fundet en løsning.

Jeg har en UserForm, hvor jeg gerne vil kunne tast et nummer i en tekstbox, hvorefter der laves et opslag i en anden fil,som returnere 3 værdier til label 1, 2 & 3. Dette må kunne lade sig gøre. Nogle der kan hjælpe?

Glæder mig til at hører jeres svar.
Avatar billede excelent Ekspert
31. januar 2009 - 08:12 #1
Hvilken form for opslag ?
Kan det laves i et ark med et alm. LOPSLAG, så gør det i et ark som evt. kan skjules. Dette er lettest med den andel fil åben
Herefter skulle det være rimeligt simpelt at styre dette opslag via en tekstboks på en userform
Avatar billede kabbak Professor
31. januar 2009 - 09:54 #2
Det nemmeste, er at åbne den anden fil, i starten af koden og så indlæse dataområdet i en array variabel,derefter bruge den til at slå op i.
For at den ikke skal læse området hver gang, kan man tjekke om arrayet er fyldt inden man spørger.
Avatar billede lerskov Praktikant
31. januar 2009 - 10:29 #3
kabbak's løsning lyder fornuftigt.

Men hvordan ser koden ud til at indlæse 4 kolonner i et array?
Avatar billede excelent Ekspert
31. januar 2009 - 11:25 #4
hvordan lyder min så ?
Avatar billede kabbak Professor
31. januar 2009 - 13:02 #5
I et modul

Option Explicit
Public OpslagsData As Variant

Public Sub auto_open()
Call HentData
UserForm1.Show
End Sub

Public Sub HentData()
    Dim R As Long, CF As String, Datafil As String, DataArk As String
    Application.ScreenUpdating = False
    Datafil = "Opslag.xls"    ' Filnavnet på opslagsfilen
    DataArk = "Data"    ' Navnet på opslagsarket
    If Not WorkbookIsOpen(Datafil) Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Datafil
    Else
        Windows(Datafil).Activate
    End If
    R = Sheets(DataArk).Range("A65536").End(xlUp).Row
    OpslagsData = Sheets(DataArk).Range("A2:D" & R)    ' Finder Data og læser dem ind i et Array
    ActiveWorkbook.Close False
      Application.ScreenUpdating = True
End Sub

Public Function WorkbookIsOpen(wbname) As Boolean
    Dim x As Workbook
    On Error Resume Next
    Set x = Workbooks(wbname)
    If Err = 0 Then WorkbookIsOpen = True _
      Else WorkbookIsOpen = False
End Function


I en userform, med 3 labesl, en tekstboks og en kommandoknap, der er døbt CmdOK

Private Sub CmdOK_Click()
    Dim I As Long, FB As Boolean
    If IsEmpty(OpslagsData) Then Call HentData    ' hvis ikke indlæst, så gøres det igen
    For I = 1 To UBound(OpslagsData)
        If OpslagsData(I, 1) = Val(Me.TextBox1) Then ' der bruges val til værdier, da en tekstboks afleverer tekst
            Me.Label1.Caption = OpslagsData(I, 2)
            Me.Label2.Caption = OpslagsData(I, 3)
            Me.Label3.Caption = OpslagsData(I, 4)
            FB = True
            Exit For
        End If
    Next
    If FB = False Then
        MsgBox "Nummeret er ikke fundet"
        Me.TextBox1.SetFocus  ' sætter focus på tekstboksen
        Exit Sub
    End If
End Sub
Avatar billede kabbak Professor
31. januar 2009 - 13:23 #6
Glemte lige at i eksemplet er begge Excel mapper i samme bibliotek, hvis ikke i har det, så ret

If Not WorkbookIsOpen(Datafil) Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Datafil
    Else

til
If Not WorkbookIsOpen(Datafil) Then
        Workbooks.Open Filename:="Mitdrev:\mitbibliotek\" & Datafil
    Else
Avatar billede lerskov Praktikant
03. februar 2009 - 13:17 #7
Hej Kabbak.

Jeg får en fejl på denne linie

R = Sheets(DataArk).Range("A65533").End(xlUp).Row

Runtime error "9"
subscript out of range

Dataark er sat = "sort" som er fanenavnet i den fil der hentes fra.

For mig ser det udtil at den prøver at arket "sort" i den fil makroen ligger i og ikke i den hvor den skal slå op.
Avatar billede lerskov Praktikant
03. februar 2009 - 14:53 #8
Hej Igen Kabbak...

Jeg har læst problemt med overstående. Men har så fået et nyt..

Når den indlæser Arrayet i denne linie:

opslagsdata = Workbooks(Datafil).Sheets(1).Range("A3:E" & R)

Mener makroen stadig at denne er "EMPTY".
Avatar billede kabbak Professor
03. februar 2009 - 17:36 #9
Hvilken værdi, har R
Har du husket at sætte denne linje
Public OpslagsData As Variant

Øverst i modulet uden for alle makroer ??
Avatar billede lerskov Praktikant
03. februar 2009 - 19:42 #10
Hej Kabbak..

Hvad skal jeg sige.. Du har Gjort det igen..

Tusind tak for hjælpe.. Smid et svar.
Avatar billede kabbak Professor
03. februar 2009 - 20:43 #11
;-))
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