Rullegardin skal bestemme andet rullegardins indhold

Brugerhjælp og support til regneark i LibreOffice Calc

Moderator: Lodahl

Post Reply
Brian Møller

Rullegardin skal bestemme andet rullegardins indhold

Post by Brian Møller »

Jeg har i mit regneark 2 rullegardiner.
Hvordan får jeg rullegardin 2 til at skifte inputområde, alt efter hvad der er valgt i rullegardin 1 ?

F.eks. hvis der i rullegardin 1 er valgt FOA, så skal rullegardin 2 have inputområde $E$4:$E$10, men hvis der står PMF så skal inputområdet ændres til $e$12:$e$15 osv.

Med venlig hilsen
Brian Møller
lapont
Posts: 91
Joined: 17. Sep 2004 11:37
Location: Nordjylland

Re: Rullegardin skal bestemme andet rullegardins indhold

Post by lapont »

Brian Møller wrote:Jeg har i mit regneark 2 rullegardiner.
Hvordan får jeg rullegardin 2 til at skifte inputområde, alt efter hvad der er valgt i rullegardin 1 ?

F.eks. hvis der i rullegardin 1 er valgt FOA, så skal rullegardin 2 have inputområde $E$4:$E$10, men hvis der står PMF så skal inputområdet ændres til $e$12:$e$15 osv.
Jeg har skrevet en makro, som gør det. Den bruger ikke områder som E4:E10, men kun startcellen E4 angivet ved dens kolonneindex = 4 og rækkeindex = 3. Den tager så alle celler fra og med E4 og nedefter, indtil der kommer en tom celle. Hvis du skal bruge E4:E10 skal E11 altså være tom.
Det første rullegardin (combobox1) skal have makroen ComboBox1_tekst_modificeret tildelt til hændelsen 'Tekst modificeret'
Her er makroen:


Sub Fyld_ComboBox(X1, Y1 As Integer)
'Fylder ComboBox2 med data fra cellerne i søjlen
'med index X1, startende i række Y1 og nedefter
'indtil første tomme celle
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oComboBox As Object
Dim oCell As Object
Dim aSource() As String
Dim i As Integer

oDoc = ThisComponent
oSheet = oDoc.CurrentController.getActiveSheet()
oForm = oSheet.DrawPage.Forms.GetByName("Standard")
oComboBox = oform.getByName("ComboBox2")

oCell=oSheet.getCellByposition(X1,Y1)
i = 0
while len(oCell.getString()) > 0
Redim preserve aSource(i) As String
aSource(i) = oCell.getString()
if i = 0 then
oComboBox.DefaultText = oCell.getString()
end if
i = i +1
oCell=oSheet.getCellByPosition(X1, Y1+i)
Wend
oComboBox.StringItemList = aSource()
End Sub


Sub ComboBox1_tekst_modificeret
Dim oDoc As Object, oSheet As Object, oDpage As Object, oCombo As Object
Dim oCell As Object
Dim Kategori As String
oDoc=ThisComponent
oSheet = oDoc.CurrentController.getActiveSheet()
oDpage = Osheet.DrawPage
oCombo = oDpage.Forms.getByName("Standard").getByName("ComboBox1")

Kategori = oCombo.text
'Find den første datacelle til kategorien:
Select Case Kategori
Case "FOA"
Fyld_ComboBox(4,3)
Case "PMF"
Fyld_ComboBox(4,11)
Case Else
'gør ingenting
End Select

End Sub
Post Reply