Flytende Informasjon i en Frozen Row

March 31  by Eliza

Bev har et regneark med to tittelrader som er frosset og en kolonne som er frosset. Hun kan da rulle over på siden og legger data uke etter uke. Navn og delsummer er festet på venstre side, ukedatoene øverst. Fremfor alt dette, i første frosne rad, har Bev en fin fancy tittel som beskriver arbeidsboken. Hun er på utkikk etter en måte at hun kan ha henne tittelen (den i den første raden) "flyte", slik at når hun ruller over på siden tittelen ikke forsvinner utenfor kanten av den synlige regnearket.

Den enkleste måten å gjøre dette på er å sørge for at tittelen er i celle A1. Siden du har en kolonne og to rader frosset, som du blar til høyre celle A1, som inneholder tittelen, alltid vil være synlig på skjermen.

Hvis du vil ha noe litt mer fancy med tittelen din, så du trenger å gjøre litt arbeid med tekstbokser og makroer. Hvis du plasserer tittelen i en tekstboks plassert på første rad, så kan du bruke noen makroer for å være sikker på at tekstboksen er alltid sentrert på skjermen i den raden.

La oss anta, for å få til dette eksempelet at tekstboksen som inneholder tittelen kalles "TitleTextBox." Som du bla til venstre og høyre i regnearket, kan en makro automatisk sjekke for å være sikker på at den venstre kanten av tekstboksen er alltid lik den venstre kanten av det synlige skjermområdet. Følgende kode må legges til regnearket kode for regnearket som inneholder tekstboksen:

Private Sub Worksheet_SelectionChange (ByVal Target Som Excel.Range)
Me.Shapes ("TitleTextBox"). Venstre = ActiveWindow.VisibleRange.Left
End Sub

Dette makro, fordi det er en del av regnearket kode, vil kjøre hver gang utvalget endres i regnearket. Så når du bruker piltastene til å flytte til venstre eller høyre, kan du bruke kategorien piltastene, eller velge en celle med musen, vil makroen kjøre og sørge for at venstre kant av tekstboksen og det synlige området alltid samsvarer.

Når denne makroen vil ikke sparke i er når du blar til venstre og høyre ved hjelp av horisontale rullefeltet nederst på skjermen. Det er ingen "scroll hendelse" som utløses automatisk når rullefeltene brukes. Inntil et valg er gjort et eller annet sted innenfor den nye synlige området, dermed utløser endre hendelse, vil tekstboksen plassering ikke flyttes.

Den eneste løsningen til denne begrensningen er å bruke Visual Basic timer evner å oppdatere tekstboksen med jevne mellomrom. Følgende kode gjør det hvert sekund, men du kan justere den til å kjøre sjeldnere, hvis ønskelig. Denne koden blir lagt til en vanlig VBA-modul:

Sub UpdateTB ()
Hvis ActiveSheet.Name = "Ark1" Da
ActiveSheet.Shapes ("TitleTextBox"). Venstre = _
ActiveWindow.VisibleRange.Left
End If
Application.OnTime nå + TimeSerial (0, 0, 1), "UpdateTB"
End Sub

Og dette blir lagt til arbeidsboken objekt for å starte tidtakeren når arbeidsboken åpnes for første gang:

Private Sub Workbook_Open ()
UpdateTB
End Sub

Hvis du bruker timeren basert tilnærming for å plassere tekstboksen, vil du ikke trenger å bruke den som er knyttet til endre hendelsen. Timeren versjonen bare justerer tittelen etter hvert intervall.

Det er en ekstra "Ulempen" til enten makro-basert teknikk foruten noen treghet introdusert av koden kjører: ". Angre stack" hver gang koden kjøres det klarner Det betyr at du ikke vil være i stand til å "angre" endringer du gjør i arbeidsboken hvis du må.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3140) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Flytende Informasjon i en Frozen Row.