Koördineer seleksie

Jy het 'n groot monitor, maar die tafels waarmee jy werk is selfs groter. En as jy oor die skerm kyk op soek na die nodige inligting, is daar altyd 'n kans om jou oë na die volgende reël te "gly" en in die verkeerde rigting te kyk. Ek ken selfs mense wat vir sulke geleenthede altyd 'n houtliniaal naby hulle hou om dit aan die lyn op die monitor vas te maak. Tegnologie van die toekoms! 

En as die huidige ry en kolom uitgelig word wanneer die aktiewe sel oor die blad beweeg? 'n Soort koördinaatkeuse soos hierdie:

Beter as 'n liniaal, reg?

Daar is verskeie maniere om kompleksiteit te verander om dit te implementeer. Elke metode het sy voor- en nadele. Kom ons kyk na hulle in detail.

Metode 1. Voor die hand liggend. Makro wat die huidige ry en kolom uitlig

Die mees voor die hand liggende manier om ons probleem "op die voorkop" op te los - ons benodig 'n makro wat die verandering in die seleksie op die blad sal volg en die hele ry en kolom vir die huidige sel kies. Dit is ook wenslik om hierdie funksie te kan aktiveer en deaktiveer indien nodig, sodat so 'n kruisvormige seleksie ons nie verhinder om byvoorbeeld formules in te voer nie, maar slegs werk wanneer ons deur die lys kyk op soek na die nodige inligting. Dit bring ons by die drie makro's (kies, aktiveer en deaktiveer) wat by die bladmodule gevoeg sal moet word.

Maak 'n blad oop met 'n tabel waarin jy so 'n koördinaatkeuse wil kry. Regskliek op die bladoortjie en kies die opdrag in die konteks kieslys Bronteks (Bronkode).Die Visual Basic Editor-venster moet oopmaak. Kopieer hierdie teks van hierdie drie makro's daarin:

Dim Coord_Selection As Boolean 'Globale veranderlike vir seleksie aan/af Sub Selection_On() 'Makro by seleksie Coord_Selection = True End Sub Selection_Off() 'Macro off selection Coord_Selection = False End Sub 'Hoofprosedure wat seleksie uitvoer Privaat Sub Worksheet_SelectionChange(ByVal Target As Reeks) Dim WorkRange As Range As Target.Cells.Count > 1 Toe Verlaat Sub 'as meer as 1 sel gekies is, verlaat As Coord_Selection = False Dan Verlaat Sub 'as keuse af is, verlaat Application.ScreenUpdating = False Stel WorkRange = Range (" A6:N300") 'adres van die werkbereik waarbinne die seleksie sigbaar is  

Verander die adres van die werkreeks na jou eie – dit is binne hierdie reeks wat ons keuse sal werk. Maak dan die Visual Basic Editor toe en keer terug na Excel.

Druk die kortpad kortpad ALT + F8om 'n venster oop te maak met 'n lys van beskikbare makro's. Makro Seleksie_Aan, soos jy dalk kan raai, sluit koördinaatkeuse op die huidige blad en die makro in Seleksie_Af – skakel dit af. In dieselfde venster, deur op die knoppie te klik Grense (Opsies) Jy kan sleutelbordkortpaaie aan hierdie makro's toewys vir maklike bekendstelling.

Voordele van hierdie metode:

  • relatiewe gemak van implementering
  • seleksie – die operasie is skadeloos en verander nie die inhoud of formatering van die bladselle op enige manier nie, alles bly soos dit is

Nadele van hierdie metode:

  • sulke seleksie werk nie korrek as daar saamgevoegde selle op die blad is nie – alle rye en kolomme wat in die unie ingesluit is, word gelyktydig geselekteer
  • as jy per ongeluk die Delete-sleutel druk, sal nie net die aktiewe sel uitgevee word nie, maar die hele geselekteerde area, maw data uit die hele ry en kolom uitvee

Metode 2. Oorspronklik. SEL + Voorwaardelike Formatering Funksie

Hierdie metode, hoewel dit 'n paar nadele het, lyk vir my baie elegant. Om iets te implementeer deur slegs die ingeboude Excel-gereedskap te gebruik, is om minimale programmering in VBA te betree, kunsvlieg 😉

Die metode is gebaseer op die gebruik van die SEL-funksie, wat baie verskillende inligting oor 'n gegewe sel kan gee – hoogte, breedte, ry-kolomnommer, getalformaat, ens. Hierdie funksie het twee argumente:

  • 'n kodewoord vir die parameter, soos "kolom" of "ry"
  • die adres van die sel waarvoor ons die waarde van hierdie parameter wil bepaal

Die truuk is dat die tweede argument opsioneel is. As dit nie gespesifiseer is nie, word die huidige aktiewe sel geneem.

Die tweede komponent van hierdie metode is voorwaardelike formatering. Hierdie uiters nuttige Excel-funksie laat jou toe om selle outomaties te formateer as hulle aan bepaalde voorwaardes voldoen. As ons hierdie twee idees in een kombineer, kry ons die volgende algoritme vir die implementering van ons koördinaatkeuse deur voorwaardelike formatering:

  1. Ons kies ons tabel, dws daardie selle waarin die koördinaatseleksie in die toekoms vertoon moet word.
  2. Maak die spyskaart oop in Excel 2003 en ouer Formaat – Voorwaardelike formatering – Formule (Formaat — Voorwaardelike formatering — Formule). In Excel 2007 en nuwer – klik op die oortjie What is This (Tuis)knoppie Voorwaardelike formatering - Skep reël (Voorwaardelike formatering - Skep reël) en kies die reëltipe Gebruik 'n formule om te bepaal watter selle om te formateer (Gebruik formule)
  3. Voer die formule in vir ons koördinaatkeuse:

    =OF(SEL(“ry”)=RY(A2),SEL(“kolom”)=KOLOM(A2))

    =OF(SEL(«ry»)=RY(A1),SEL(«kolom»)=KOLOM(A1))

    Hierdie formule kyk of die kolomnommer van elke sel in die tabel dieselfde is as die kolomnommer van die huidige sel. Net so met kolomme. Dus, net daardie selle wat óf 'n kolomnommer óf 'n rynommer het wat by die huidige sel pas, sal ingevul word. En dit is die kruisvormige koördinaatkeuse wat ons wil bereik.

  4. pers Raamwerk (Formaat) en stel die vulkleur in.

Alles is amper gereed, maar daar is een nuanse. Die feit is dat Excel nie 'n verandering in die keuse as 'n verandering in die data op die blad beskou nie. En as gevolg hiervan veroorsaak dit nie herberekening van formules en herkleur van voorwaardelike formatering slegs wanneer die posisie van die aktiewe sel verander nie. Kom ons voeg dus 'n eenvoudige makro by die bladmodule wat dit sal doen. Regskliek op die bladoortjie en kies die opdrag in die konteks kieslys Bronteks (Bronkode).Die Visual Basic Editor-venster moet oopmaak. Kopieer hierdie teks van hierdie eenvoudige makro daarin:

Privaat subwerkblad_SeleksieVerander(ByVal-teiken as reeks) ActiveCell.Bereken Einde Sub  

Nou, wanneer die keuse verander, sal die proses van herberekening van die formule met die funksie van stapel gestuur word SEL in voorwaardelike formatering en oorstroom die huidige ry en kolom.

Voordele van hierdie metode:

  • Voorwaardelike formatering breek nie pasgemaakte tabelformatering nie
  • Hierdie seleksie-opsie werk korrek met saamgevoegde selle.
  • Geen risiko om 'n hele ry en kolom data uit te vee as u per ongeluk klik nie verwyder.
  • Makro's word minimaal gebruik

Nadele van hierdie metode:

  • Die formule vir voorwaardelike formatering moet met die hand ingevoer word.
  • Daar is geen vinnige manier om sulke formatering te aktiveer/deaktiveer nie – dit is altyd geaktiveer totdat die reël uitgevee is.

Metode 3. Optimaal. Voorwaardelike formatering + makro's

Goue middeweg. Ons gebruik die meganisme om die seleksie op die blad op te spoor deur makro's vanaf metode-1 te gebruik en voeg veilige uitlig daarby met behulp van voorwaardelike formatering vanaf metode-2.

Maak 'n blad oop met 'n tabel waarin jy so 'n koördinaatkeuse wil kry. Regskliek op die bladoortjie en kies die opdrag in die konteks kieslys Bronteks (Bronkode).Die Visual Basic Editor-venster moet oopmaak. Kopieer hierdie teks van hierdie drie makro's daarin:

Dim Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range, CrossRange As Range Stel WorkRange = Range("A7"):N300") 'адрес рабочего диапазона с таблицей If Target.Count > 1 Then Exit Sub If Coord_Selection = False Then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Is No Intersect(Target) WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex.FormatConditions.FormatConditions .Delete End If End Sub  

Moenie vergeet om die werkreeksadres na jou tafeladres te verander nie. Maak die Visual Basic Editor toe en keer terug na Excel. Om die bygevoegde makro's te gebruik, druk die sleutelbordkortpad ALT + F8  en gaan voort op dieselfde manier as metode 1. 

Metode 4. Pragtig. FollowCellPointer-byvoeging

Excel MVP Jan Karel Pieterse van Nederland gee 'n gratis byvoeging op sy webwerf weg VolgCellPointer(36Kb), wat dieselfde probleem oplos deur grafiese pyllyne te teken deur makro's te gebruik om die huidige ry en kolom uit te lig:

 

Mooi oplossing. Nie sonder foute op plekke nie, maar beslis die moeite werd om te probeer. Laai die argief af, pak dit uit na skyf en installeer die byvoeging:

  • in Excel 2003 en ouer – deur die spyskaart Diens – Byvoegings – Oorsig (Gereedskap – Byvoegings – Blaai)
  • in Excel 2007 en later, deur Lêer – Opsies – Byvoegings – Gaan – Blaai (Lêer — Excel-opsies — Byvoegings — Gaan na — Blaai)

  • Wat is makro's, waar om makro-kode in Visual Basic in te voeg

 

Lewer Kommentaar