15. januar 2012 - 17:02Der er
19 kommentarer og 2 løsninger
Makro til markering
Hej !
Er der lige nogen som kan hjælpe med og lave en makro som fungerer via en Toglebutton (Til/fra knap) på et excelark.
Når knappen er sat til true, Skal der ske følgende: - Når der klikkes på en celle markeres rækken f.eks. fra kolonne A til kolonne P. - Når markøren flyttes til en ny celle slettes den tidligere markering og der oprettes en ny markering ud fra den celle markøren nu står i.
Når kanppen er sat til false, skal der ikke ske noget.
-Håber lige nogen kan hjælpe, eller komme med et andet forslag.
Hej Det var lige det jeg skulle bruge, har et stort og bredt ark, hvor jeg somme tider har behov for at markere en celle og derefter kører ned -eller opad på arket med piletasterne samtidig med at rækkene er markeret.
Har sat en TogleButton (Til/fra knap) på mit ark, rettet lidt på din makro og gjort følgende:
På arket: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ToggleButton1.Value = True Then Call markrow End If End Sub
I mondul: Function markrow() Dim currow As Integer currow = ActiveCell.Row Range(Cells(currow, 1), Cells(currow, 16)).Select End Function
Jeg havde selv prøvet med en anden type af makro, men kunne ikke få det til og fungerer så perfekt og hurtigt med så lidt kode som dit forslag.
Dit forslag er også fint og virker sammen med min Til/fra knap, men når knappen slås fra forbliver den række hvori markøren sidst har stået stadigvæk farvet grøn. Det var rigtig smart med en farvet række, men farven skulle forsvinde til sidst, når funktionen ophører.
Jeg har nu tjekket morten's sidste forslag, og det virker bare ligesom det skal og så farver det rækken, og farven forsvinder igen hvis Til/fra - knappen sættes til false. Jeres forslag er begge meget brugbare, og jeg kan konkludere følgende:
store-morten's forslag er til ark hvor der ikke på forhånd er farvelagte celler, idet forslaget retter de farvelagte celler.
KurtOA's forslag er til ark hvor der er farvelagte celler, idet forslaget kun markerer rækken.
Begge forslag er meget anvendelig for mig og jeg vil gerne gøre brug af begge ud fra førnævnte begrundelser.
Så nu er problemet point, og jeg vil gerne dele point mellen jer, så læg et svar store-morten
Hvis du bruger farvelægning til fx. kolonneoverskrifter kan du jo evt sætte en if-sætning ind der sikrer at din aktive "row" værdi er over et bestemt tal før den træder i kraft.
KurtOA Ligenu har jeg nogle meget store ark som er farvelagt med forskellige farver forskellige steder på arket , og her er din makro jo rigtit fin, idet den blot markerer rækken, som jo gør at det er lettere og overskue/følge rækken på tværs af arket, og det er faktisk lige det som jeg har manglet. Dit forslag vedr. If-sætningen forstår jeg godt.
Jeg har lige kigget på dit 3. forslag, - du gav ikke helt op, det er faktisk en rigtig god ide, til et ark der er farvelagt i flere kolonner, din måde med dobbelt understregning giver godt overblik når linien skal følges på tværs, af et stort ark, bedre end en markeret linie. Jeg noterer mig lige dit forslag til brug.
Point er jo delt, men tak for dit sidste forslag, det er rart at man altid lige her, på denne side, kan få hjælp til og komme videre.
- Og så var der lige et kompliment til 3. makro, og det er jo, at man med en understregning af rækken, kan se hvilken celle der er markeret hvis man ruller op/ned/tværs over arket med piletasterne.
Jeg har valgt og bruge den sidste makro du forslog , den med dobbelt understregning, men den melder fejl på følgende måde:
Når excelarket åbnes og togle button knappen er false, og der klikkes på en celle, melder din makro fejl i IF'en under else, fejlen opstår kun hvis togle button knappen står til false ved åbning af arket.
Jeg kan ikke gennemskue hvad problemet er, eller hvad der skal gøres, måske du lige kunne hjælpe, ellers fungerer det perfekt.
Jeg har nu arbejdet med dit seneste forslag siden idag kl ca. 17:00, og har tilføjet lidt kode, for mig virker det hele nu helt perfekt, den fejl som var ved åbning af arket har du rettet fint. Jeg har lavet en kode i knappens Cange, som bevirker at rækken straks understreges eller understregningen slettes såsnart der trykkes på knappen.
Det problem du nævner til sidst i dit sidste forslag er løst med den en kode i workbook open, det bevirker at såsnart arket åbnes virker koden.
Hører gerne hvad du så synes om slutresultatet ? - Og tak for din sidste hjælp
Her er den endelige kode som jeg nu bruger:
Private Sub Workbook_Open() sHuskCelle = ActiveCell.Address ActiveCell.Next.Select Range(sHuskCelle).Select End Sub
Dim adr As String Dim farve Public sHuskCelle As String Private Sub ToggleButton1_Change() sHuskCelle = ActiveCell.Address Application.ScreenUpdating = False
If ToggleButton1.Value = False Then ActiveCell.Next.Select Range(sHuskCelle).Select Else ActiveCell.Next.Select Range(sHuskCelle).Select End If
Application.ScreenUpdating = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo exit_Sub 'Ved fejl exit Sub
If ToggleButton1.Value = True Then
If adr <> "" Then Rows(adr).Borders(xlEdgeBottom).LineStyle = xlNone farve = Target.Borders(xlEdgeBottom).LineStyle = xlNone Rows(Target.Row).Borders(xlEdgeBottom).LineStyle = xlDouble adr = Target.Row Else Rows(adr).Borders(xlEdgeBottom).LineStyle = xlNone End If
Har kopieret din kode og sat den ind på Ark1 Det virker slet ikke?
Men opdagede så at man skal gøre sådan:
Kopier:
Private Sub Workbook_Open() sHuskCelle1 = ActiveCell.Address ActiveCell.Next.Select Range(sHuskCelle1).Select End Sub
Og indæt denne på "Denne_projektmappe"
Kopier:
Dim adr As String Public sHuskCelle As String
Private Sub ToggleButton1_Change() sHuskCelle2 = ActiveCell.Address Application.ScreenUpdating = False
If ToggleButton1.Value = False Then ActiveCell.Next.Select Range(sHuskCelle2).Select Else ActiveCell.Next.Select Range(sHuskCelle2).Select End If
Application.ScreenUpdating = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo exit_Sub 'Ved fejl exit Sub
If ToggleButton1.Value = True Then
If adr <> "" Then Rows(adr).Borders(xlEdgeBottom).LineStyle = xlNone Rows(Target.Row).Borders(xlEdgeBottom).LineStyle = xlDouble adr = Target.Row Else Rows(adr).Borders(xlEdgeBottom).LineStyle = xlNone End If
exit_Sub: Exit Sub End Sub
Og indsæt på eks. Ark1
Så virker det perfekt.
PS. har slettet: Dim farve farve = Target.Borders(xlEdgeBottom).LineStyle = xlNone
Hej Det er korrekt at koden skulle ligge 2 steder, det regnede jeg med at du lige kunne "lure" når du fik set koden. Variablen sHuskcelle er lavet som Public (global variable) så virker den jo både på "arket" og på "Denne projektmappe" hvor koderne er lagt.
Jeg vil så gerne spørge hvorfor du på den ene kode har kaldt variablen sHuskCelle1 og på den anden kaldt variablen sHuskCelle2, når variablen er dimisoneret med navnet sHuskCelle ?
- Men ok jeg synes at vi ved fælles hjælp fik det lavet tilfredsstillende.
Jeg kopierede hele din kode ind på Ark1, og det virkede ikke. Inden jeg fandt ud af første kode skulle lægges på "Denne_projektmappe" prøvede jeg at "skille" dem ad, ved omdøbe til 1 og 2.
- Ok jeg har også slettet 1-2, man kan jo nemt komme til og lave en fejl. Jeg klarer mig fint nu og tak for din hjælp.
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.