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
Rullegardin skal bestemme andet rullegardins indhold
Moderator: Lodahl
Re: Rullegardin skal bestemme andet rullegardins indhold
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.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.
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