Avatar billede tvc Seniormester
14. januar 2006 - 22:14 Der er 7 kommentarer og
1 løsning

VBA resultat anvendt i datavaliserings liste

Hej

Jeg har udarbejdet nedenstående funktion som returnerer en tekststreng bestående af ugernr. fra uge IFra til Uge ITil.

Eksempelvis giver:
IndlæstFraUge = 2
IndlæstTilUge = 5

denne tekststreng

2;3;4;5

----------------------------

Function UgeListe()
IFra = Range("IndlæstFraUge").Value
ITil = Range("IndlæstTilUge").Value

weekList = IFra
I = 1

For Uge = IFra To ITil - 1
    weekList = weekList & ";" & IFra + I
        I = I + 1
Next Uge

UgeListe = weekList

End Function

---------------------

Mit spørgsmål er, hvordan jeg får denne til at virke som input til en datavalideringsliste?

Har forsøgt med =UgeListe eller =weeklist men de virker ikke. Datavalideringslisten læser ikke tekststrengen som elementerne (2,3,4,5) delt med ; men som et element 2;3;4;5.

TVC
Avatar billede tjp Mester
14. januar 2006 - 22:56 #1
Hvis du bruger '.Add Formula1:=weeklist', så prøv at skifte ';' ud med ',' i weeklist-strengen og se om det ikke skulle virke.
Avatar billede tvc Seniormester
14. januar 2006 - 23:03 #2
Det gør jeg ikke, da jeg henviser direkte til funktionen ved i min celle at skrive =UgeListe()
Avatar billede tjp Mester
14. januar 2006 - 23:15 #3
Ok, men har du prøvet at skifte semikolon ud med komma alligevel?
Avatar billede tvc Seniormester
15. januar 2006 - 00:16 #4
Det har jeg lige prøvet men det ændre ikke på det.

Jeg er kommet frem til at vi kan se helt bort fra VBA lige p.t. for problemet ligger et andet sted.

Hvis vi tager et helt almindeligt ark og i celle A1 skriver 1;2;3;4;5 og i datavalidering under liste skriver =A1 vil listen vise:

1;2;3;4;5

og ikke

1
2
3
4
5

problemet er at listen ikke opfatter input fra én celle som en almindelig skrevet tekst. Den vil have input fra en celle pr. listepunkt.

Det er slet ikke sikkert at det kan lade sig gøre!

Hvis der er nogle der har forslag høre jeg meget gerne ellers må det blive via en userform og en combobox.

TVC
Avatar billede kabbak Professor
15. januar 2006 - 00:19 #5
du kan gøre det med en makro

her ligger listen i F7


Sub Uger()
Dim Ugeliste As String
    IFra = Range("IndlæstFraUge").Value
    ITil = Range("IndlæstTilUge").Value
    For Uge = IFra To ITil - 1
        Ugeliste = Ugeliste & Uge & ","
    Next Uge
 
    With Range("F7").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Ugeliste
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End Sub
Avatar billede tvc Seniormester
15. januar 2006 - 11:16 #6
Tak kabbak det virker!

Lægger du et svar?
Avatar billede kabbak Professor
15. januar 2006 - 11:50 #7
et svar ;-))
Avatar billede kabbak Professor
15. januar 2006 - 13:10 #8
hvis du nu smider koden op arkets modul, så gøres det automatisk , når Indlæsfrauge of indlæstiluge skifter

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:B2")) Is Nothing Then
Dim Ugeliste As String
    IFra = Range("A2").Value'Range("IndlæstFraUge").Value
    ITil = Range("B2").Value'Range("IndlæstTilUge").Value
    For Uge = IFra To ITil - 1
        Ugeliste = Ugeliste & Uge & ","
    Next Uge
 
    With Range("F7").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Ugeliste
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
End If
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