20. maj 2007 - 14:57Der er
8 kommentarer og 1 løsning
VBA - find navnet på named range via list Worksheet_Change event
Hej VBA gutter,
Vidensbehov:
Hver gang en celle's værdi ændres, skal der kontrolleres hvilket navn, indenfor en navngivet range, cellen tilhører.
Dette virker fint, sålænge lister ikke benyttes.
Jeg har problemer med at finde ud om en celle er indenfor et navngivet range, når man benytter sig af liste, med reference til en anden navngivet range i en anden kolonne.
- Jeg har givet min range et navn via indsæt -> navn -> definér Navnet hedder minliste og kilden er =Ark1!$E$4:$E$7
- Jeg har derefter lavet en liste på en celle, som skal indeholde værdierne i "minliste" via Data -> DataValidering og lavet tillad liste, kilde: =minliste
Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
'if a validation has NOT been set in the Target cell, an error occurs 'so trap that error with this
On Error Resume Next
If Target.Validation.Type = xlValidateList Then
isValidationList = Target.Validation.Formula1
Else
isValidationList = vbNullString
End If
'If the target refer to a named range list, find the name for the validation list
If Not isValidationList = vbNullString Then
Dim testVal As String
'extract the name testVal = Mid(Target.Validation.Formula1, 2)
Dim name As name
For Each n In ActiveWorkbook.Names
If n.name = testVal Then
NameOfParentRange = n.name
Exit For
End If
Next
End If
'Catched errors here If Err.Number <> 0 Then
Select Case Err.Number Case 9 MsgBox "Requested chart does not exist.", _ vbExclamation, "No Such Chart" Case Else MsgBox "Im down.", _ vbExclamation, "What was that!?" End Select
End If
NameOfParentRange = "NONE"
End Function --------------------------------------------------
Eneste udfordring tilbage er nu:
Hvis du ændrer i en Validationlist bygget på baggrund af et named range OG selve validationlist er indenfor et ANDET named range... - Hvordan finder man så DET navn? - via noget parent range noget?
Stop koden under udførsel, der er 2 måder 1. skriv stop på en linje 2. klik ude i bjælken til venstre, ud for den linje du vil stoppe ved, så kommer der en bordeaux farvet prik og linjen er markeret med samme farve, det stopper også koden, hvis den gennemløber linjen.
Når så koden stopper, så vælg View, > Locals Vindow
Nu kan du se alle variablers værdier, og hvad der findes under Parent
Synes godt om
Slettet bruger
22. maj 2007 - 23:27#8
Jeg skal bruge navnet på ranges til blandt andet at styre baggrundsfarver på et mega excel ark. Udfra navnene på validationlist kan jeg så tyre dem ind i et array og nulstille celler efter behov. Forskellige ranges kan være vilkårligt rundt omkring i sheetet, så derfor vil jeg bruge navne over array iteration til farver, nulstilling til default værdier ved deaktivering mv. :-)
Sidste udfordring på funktionen er nu bare, at finde de ranges som er "main" ranges, dvs. dem som kommer til at afgrænse de overordnede områder for validation-listerne :-)
hej vba gutter....i ser ud til at i har bedre styr på vba end mig...har en masse forskellige alder.der er ca 4000 forskellige alder..disse alder skal deles ind på flere aldersgruppe...18-29,30-50, 50- eks..
hvordan laver man det via vba...alderne skal inddeles og derfter skal der vises en graf over inddelingen
hjælp mig gutter.
Synes godt om
Ny brugerNybegynder
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.