03. november 2003 - 12:04Der er
14 kommentarer og 1 løsning
Mulighed for "enter" i celle-tekst
Problemet er at jeg har feltet en hel del celler og nu skal der fyldes en masse tekst ind i området. Dog skal det være muligt at bruge enter i feltet. Jeg har prøvet med at importere et word dokument.. der er bare et problem... den åbner word på en MacinTosh hvor at det skal kunne køre... dermed mangler jeg desperat en måde at skrive MED muligheden for linieskift andet end "enter"+"alt"
i formater - celler - justering, kan du klikke "ombryd tekst" af herefter vil teksten automatisk fortsætte på næste linie når du når cellens længde begrændsning
jkrons: Problemet er at jeg skal tage hensyn til at vi har nogle ualmindeligt dovne brugere.. :)
bufferzone: Brugeren skal have mulighed for selv at vælge hvornår linie-skiftet skal foretages. Derfor er det ikke holdbart med normal tekstombrydning :)
Så er du nok nødt til at rode dig ud i et større kodearbejde, der "opfanger" et tryk på Enter tasten og ændrer det til et tryk på Alt+Enter. Problemet er, at Excel ikkek har en hændelse, der indtræffer når du taster i en celle. Så det må nok være noget med noget windows API programmering.
Men måske er der nogen, der har en nemmere løsning. Nememst ville det selvfølgelig være at lære brugerne at bruge Alt+Enter - elelr at undlade at skrive store tekstmængder i Excel :-)
Følgende kode kan gøre det, men hvordan skal man afslutte indtastning?
Kode til "Ark1": Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range 'aktiver ændret celle og send "rediger celle, cursor til enden, alt+enter" Target.Activate Application.SendKeys ("{F2}{End}%{Enter}") End Sub
Ovenstående kode baserer sig på at man når man trykker Enter i en celle, kaldes Worksheet_change. Koden aktiverer den celle, der blev ændret og redigerer denne igen og indsætter ny linie i slutningen. Men, som nævnt, brugerne vil nok nu kræve at programmet kan se forskel på om enter betyder ny linie eller afslut indtastning...
'med denne ændrede kode kan man afslutte med f.eks. tab 'private declare... skal anbringes i toppen af modulet ' desuden er koden lavet til at ligge i ThisWorkbook og virker derfor på alle ark Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long)As Integer
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If GetKeyState(13) Then Target.Activate Application.SendKeys ("{F2}{End}%{Enter}") End If End Sub
stefanfuglsang: Hvor skal jeg rette i koden for at få den til at virke i f.eks H3?
Man skal stoppe med at fortolke enter som et linie skift når at der ikke er fokus på den bestemte celle. Der udover ville det være nice hvis det kunne lade sig gøre at den hopper ind som cursor når man markere cellen. Men ikke absolut nødvendigt... hvis det kan lade sig gøre er der 15 ekstra point...
Hvis den kun skal virke i celle H3 på ark 1, så er det nemmest at anbringe koden i kodemodulet for ark1, så hedder det (bemærk det så er worksheet_change og ikke workbook_change): Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long)As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
If GetKeyState(13) and (Target.address = "$H$3" or Target.address= "$H$117") Then Target.Activate Application.SendKeys ("{F2}{End}%{Enter}") End If End Sub
Du kan selv indsætte flere celler i linien If GetKeyState(13) and (Target.address = "$H$3" or Target.address= "$H$117") Then med "or" for hver ny celle
Og det med markeringen kan gøres med Private Sub Worksheet_SelectionChange(ByVal Target As Range) If (Target.address = "$H$3" or Target.address= "$H$117") Then Application.SendKeys ("{F2}{End}") End If End Sub
PS: Sendkeys sender tastekoder til Excel - der *kan* (i hvert fald teoretisk) være tilfælde, hvor dette giver utilsigtede hændelser, så afprøv det grundigt, inden du slipper brugerne løs
Hehe.. okay.. Jeg takker rigtigt mange gange.... og giver dig gladeligt dine point.... der er 15 mere som lovet i et spørgsmål jeg opretter nu her bagefter
GetKeyState(13) Fanger IKKE enter på macintosh!.. :(
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.