20. marts 2005 - 17:24Der er
7 kommentarer og 1 løsning
VBA: ActiveSheet.Shapes.AddLine
Jeg ønsker at tegne en streg fra fx øverste venstre hjørne i B2 ned til højre hjørne i B6. Dette kan gøres vha. formlen: ActiveSheet.Shapes.AddLine(48#, 12.75, 96#, 76.5).Select
Men hvis jeg ex. skjuler række 5 og dernæst kører programmeringen går stregen selvfølgelig ned til højre hjørne i B7. Hvordan får jeg oplyst hvor celle B6 slutter således programmeringen kan gøres fleksibelt og altid stopper i nederste højre hjørne i B6, uanset om rækker ell. kolonner skjules eller gøres bredere/smallere?
Her er en funktion, der beregner både bredde og højde og bruger dem direkte ved tegning af linien. Det er blot de to funktioner, du skal bruge. Sub'en er bare et eksempel på, hvordan funktionerne kan bruges.
Function Bredde() As Single Bredde = 0 For Each c In ActiveSheet.Columns("A:C") Bredde = Bredde + c.Width Next End Function
Function Højde() As Single For Each c In ActiveSheet.Rows("1:6") Højde = Højde + c.RowHeight Next End Function
Sub tegnline()
With ActiveSheet.Shapes.AddLine(0, 0, Bredde(), Højde()).Line .ForeColor.RGB = RGB(255, 0, 128) End With
Se det var jo lige en snyder, fordi du nu holder dig indenfor kolonne B! Jeg er faktisk ikke helt sikker på hvad du mener. Skal stregen fra nederste venstre hjørne af B2 til øverste højre hjørne af B6?
Jeg ønsker at tegne en streg fra øverste venstre hjørne i B2 til nederste højre hjørne B6. Desuden vil jeg også tegne fra C2 til C6 m.fl. - derfor ønsker jeg så meget fleksibilitet som muligt. Jeg synes ikke helt det virker...
Har lige standardiseret det lidt mere. Prøv at se koden i den sidste sub - den skulle være nogenlunde til at forstå.
Function Bredde(Kolonner As String) As Single Bredde = 0 For Each c In ActiveSheet.Columns(Kolonner) Bredde = Bredde + c.Width Next End Function
Function Højde(Rækker As String) As Single For Each c In ActiveSheet.Rows(Rækker) Højde = Højde + c.RowHeight Next End Function
Sub TegnStreg(kFra As String, kTil As String, rFra As String, rTil As String) 'kFra Start fra venstre kant af denne kolonne 'kTil Slut ved højre kant af denne kolonne 'rFra Start fra øvre kant af denne række 'rTil Slut ved øvre kant af denne række
Tjah der skulle vist også være lidt muligheder for at trimme den yderligere, men det primære er - trods alt - at den virker. :0)
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.