Avatar billede tvc Seniormester
22. september 2008 - 12:17 Der er 9 kommentarer og
1 løsning

Visning af VBA "lopslag" i statusbar

Hej

Jeg har brug for en lille funktion, der kan foretage et opslag i en liste på baggrund af den valgte celles værdi (indhold) og vise resultatet af opslaget i statusbaren.

Listen:

Navn:          Initialer:
Navn 1          N1
Navn 2          N2
Navn 3          N3

I forskellige ark i projektmappen står medarbejdernes initialer. Når jeg markere en celle med initialer i skal det fulde navn vises i statusbaren.

Hilsen

TVC
Avatar billede supertekst Ekspert
22. september 2008 - 13:16 #1
Hvor er listen placeret?
Hvor er der initialer - samme kolonne på alle ark eller?
Avatar billede tvc Seniormester
22. september 2008 - 13:56 #2
Listen er placeret i arket Forside (området kan navngives - "medarbejdere").

Initialerne findes i 6 underliggende ark i kolonne C - I (i enkelte ark er C kolonnen anvendt til andre data).
Avatar billede kabbak Professor
22. september 2008 - 14:28 #3
Det sværeste, er jo at vide, hvornår en celle indeholder initialer, den skal jo kun trikke ved dem.
Avatar billede tvc Seniormester
22. september 2008 - 14:35 #4
Det er rigtig. Hvis nu initialerne altid skrives med stort og ikke må være længere end tre tegn, vil det så hjælpe?


Excelent har tidligere udarbejdet denne til mig til brug for visning af dato i statusbaren, hvis den på nogen måde kan være til hjælp:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = ""
If Intersect(Target, Range("G:M")) Is Nothing Then Exit Sub
Application.StatusBar = Format(DateSerial(Val(Ark2.Range("Tår")), 1, 1) + ((Cells(Target.Row, 1) - 1) * 7) + Target.Column - 6, "dd-mm-yyyy")
End Sub
Avatar billede kabbak Professor
22. september 2008 - 14:58 #5
I et module

Option Explicit
Global Bruger As Variant

i ThisWorkbook modulet

Private Sub Workbook_Open()
Bruger = [Navne], navngivet område
End Sub


I arkets modul

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I As Integer
    Application.StatusBar = ""
    If Intersect(Target, Range("G:M")) Is Nothing Then Exit Sub
    For I = 1 To UBound(Bruger)
        If Bruger(I, 2) = Target Then
            Application.StatusBar = Bruger(I, 1)
            Exit For
        Else
            Application.StatusBar = ""
        End If
    Next
End Sub

den sidste kan også være i thisWorkbook modulet, så gælder den for alle ark

så hedder den
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub
Avatar billede tvc Seniormester
22. september 2008 - 15:22 #6
-> Kabbak

Jeg har nu indsat følgende i ThisWorkbook:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim I As Integer
    Application.StatusBar = ""
    If Intersect(Target, Range("C:I")) Is Nothing Then Exit Sub
    For I = 1 To UBound(Bruger)
        If Bruger(I, 2) = Target Then
            Application.StatusBar = Bruger(I, 1)
            Exit For
        Else
            Application.StatusBar = ""
        End If
    Next
End Sub

Private Sub Workbook_Open()
    Bruger = [medarbejdere]
End Sub


Jeg har ligeledes indsat følgende i et modul:

Option Explicit
Global Bruger As Variant


Men den går istå ved:
For I = 1 To UBound(Bruger)

Hvad har jeg gjort galt?
Avatar billede kabbak Professor
22. september 2008 - 16:09 #7
Har du husket at lukke mappen, og så åbne den igen.

Private Sub Workbook_Open()

køres, når mappen åbnes.
Avatar billede kabbak Professor
22. september 2008 - 16:23 #8
Du kan også sætte denne ind i stedet, der er isat en linje, der tjekker om data er indlæst, hvis ikke, så gør den det.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim I As Integer
    Application.StatusBar = ""
    If Intersect(Target, Range("C:I")) Is Nothing Then Exit Sub
    If IsEmpty(Bruger) Then Call Workbook_Open 'NY LINJE
    For I = 1 To UBound(Bruger)
        If Bruger(I, 2) = Target Then
            Application.StatusBar = Bruger(I, 1)
            Exit For
        Else
            Application.StatusBar = ""
        End If
    Next
End Sub
Avatar billede tvc Seniormester
23. september 2008 - 08:36 #9
Nu virker det - jeg havde ikke tænkt over at mappen skulle lukkes ned.

Tak for hjælpen det virker perfekt!

Lægger du et svar?

Hilsen

TVC
Avatar billede kabbak Professor
23. september 2008 - 14:35 #10
et svar ;-))
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