28. december 2011 - 02:04Der er
15 kommentarer og 1 løsning
195
Hej,
Jeg har et regneark med 105 comboboxe
Når jeg skuler en række, hvori der er en combobox skjules den. Når jeg så viser rækken umiddelbart efter, kommer comboboxen frem igen.
Hvis jeg skjuler rækken, gemmer excel, lukker excel, åbner excel. Klikker på vis, så ses comboboxende ikke. Ved at søge efter den, kan jeg se, at den er hoppet helt op i toppen af skærmen - faktisk ud af skærmen.
Hvordan fixer jeg dette? Jeg har lidt tænkt på, om man kan binde højde og bredde, samt position på tænkeboksen.
Beklager overskriften, der er tilsyneladende gået noget galt..
Som nødløsning, kan man så skrive en makro som husker hvilke celler, der er skjulte. Når man så lukker excel viser den alle rækker og lukker. Når man åbner igen, så skjuler den dem, som var skjult fra forrige gang excel var åben?
Det vil jeg helst undgå, har et større spil imellem mine comboboxe.
Når jeg højreklikker på en celle popper der en userform op, hvor jeg vælger kategori, her efter vil den tilhørende celles comboboxe kun vise de værdier, der hører ind under den kategori. Hvis jeg da skulle lave en datavalideringsliste, så skulle de vise tilsvarende værdier som mine comboboxe.
Min kode for beregning af comboboxe nr. ser således ud:
Rem BEREGNING AF COMBOBOX-NR P.G.A. RÆKKE-NR Public Function beregnCboxNr(rækNr) Dim rækMax As Variant, modifik As Variant, f As Byte rækMax = Array(0, 17, 34, 51, 68, 85, 102, 119) modifik = Array(0, 108, 110, 112, 114, 116, 118, 120) For f = 1 To UBound(rækMax) If rækNr <= rækMax(f) Then beregnCboxNr = modifik(f) - rækNr Exit Function End If Next f beregnCboxNr = 0 End Function
Sub LineUpMyShapes() Dim MyWidth As Single, MyHeight As Single Dim MyLeft As Single, MyTop As Single Dim NumWide As Long Dim MyShapes As Long, LastShapes As Long
For MyShapes = 1 To LastShapes With ActiveSheet.Shapes(MyShapes) .Width = MyWidth .Height = MyHeight .Left = MyLeft .Top = Int(MyShapes - 1) * MyHeight End With Next
End Sub
Tager alle dine comboboxe, desværre også +/- og andre knapper, og sætter dem op under hinanden. Så den skal finpudses ;-)
Jeg har lige prøvet den, og ja der sker noget i den rigtige retning, men ang. finpudsningen, så overgår min forstand :)
En anden løsning, hvis det er mere simpelet: Når Excelarket lukkes, så køres der en macro, som finder ud af hvilke rækker, der er skjulte -> Herefter viser den alle rækker -> Hvorefter den lukker. Når Excelarket åbnes igen, så køres der en macro, som skjuler de celler, der var skjulte før lukningen. Det skal virke, men spørgsmålet er, om det er muligt at skrive sådanne macroer?
Når Excelarket lukkes, så køres der en macro, som finder ud af hvilke rækker, der er skjulte -> Herefter viser den alle rækker -> Hvorefter den lukker.
Sub visFørGem() home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False 'fjerner gamle mærke i AI ved skjulte rækker Columns("AI:AI").ClearContents 'Sætter mærke i AI ved skjulte rækker For Række = 1 To 125 If Rows(Række).EntireRow.Hidden = True Then Range("AI" & Række).Value = "x" Else Range("AI" & Række).Value = "" End If Next 'Viser alle rækker Cells.EntireRow.Hidden = False
Application.ScreenUpdating = True Sheets(homeArk).Select Range(home).Select End Sub
Når Excelarket åbnes igen, så køres der en macro, som skjuler de celler, der var skjulte før lukningen.
Sub skjulVedÅben() home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False 'Skjuler rækker ved mærke i AI For Række = 1 To 125 If Range("AI" & Række) = "x" Then Rows(Række).Select Selection.EntireRow.Hidden = True End If Next Application.ScreenUpdating = True
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.