|
| Adressering af tabel i Word Fra : Henrik Hougaard |
Dato : 18-09-02 12:15 |
|
Hvordan fortæller man i en makro, at man ønsker at arbejde på den aktuelle
tabel - altså, den markøren eller afmærkningen er i. Problemet er, at jeg
har mange tabeller i et dokument.
Kan man aflæse tabellens nr. når man er i det - eller er der noget a'la
"ActiveTable" (som ActiveDocument)
Jeg har en kode, der ser sådan ud (uddrag):
.......
With Selection.Tables(1) <- her er problemet!!!!!!!!!!!!!!
For I = StartRække To Selection.Information(wdEndOfRangeRowNumber)
If Left(.Cell(I, Kol).Range, Len(.Cell(I, Kol).Range) - 2) <> ""
Then
Tekst = CDbl(Left(.Cell(I, Kol).Range, Len(.Cell(I,
Kol).Range) - 2))
TalTekst = Round(Tekst / 1000, 0)
ActiveDocument.Tables(1).Cell(I, Kol + 2).Range.Text = TalTekst
End If
Next I
End With
....
Men det virker naturligvis kun på tabel 1 i dokumentet!
Koden er i øvrigt en viderebygning på noget fra Mads - tak til dig Mads!
--
Henrik Hougaard
fam.hougaard@nospam.stofanet.dk
(Fjern .nospam i emailadresse.)
| |
Mads (19-09-2002)
| Kommentar Fra : Mads |
Dato : 19-09-02 08:15 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d886021$0$807$ba624c82@nntp03.dk.telia.net...
> Hvordan fortæller man i en makro, at man ønsker at arbejde på den aktuelle
> tabel - altså, den markøren eller afmærkningen er i. Problemet er, at jeg
> har mange tabeller i et dokument.
>
> Kan man aflæse tabellens nr. når man er i det - eller er der noget a'la
> "ActiveTable" (som ActiveDocument)
Tricket jeg bruger hedder "Selection.Tables(1)". Word har ikke nogen god
måde til at returnere nummeret på det aktuelle "emne" i en serie af "emner".
Det være sig nummeret på den aktuelle tabel i forhold til antallet at
tabeller i dokumentet.
Men man kan gøre det at man laver et range eller en selection fra første
tegn i dokumentet til og med det emne man ønsker at finde nummeret på, f.eks
tabel, ord, sætning, paragraf mm. For derefter at bruge Count, F.eks
Selection.Tables.Count.
>
> Jeg har en kode, der ser sådan ud (uddrag):
>
> ......
> With Selection.Tables(1) <- her er problemet!!!!!!!!!!!!!!
Her siger at du ønsker at arbejde med den første tabel i markering du har
lavet, sagt på en anden måde den aktive tabel.
Hvad mener du med at der er et problem med den linie?
> For I = StartRække To Selection.Information(wdEndOfRangeRowNumber)
^
Jeg har altid ungået de danske specialtegn æøå i forbindelse med navngivning
af variable mm. Det er muligt at det går godt, men jeg betragter det som en
risiko.
> If Left(.Cell(I, Kol).Range, Len(.Cell(I, Kol).Range) - 2) <> ""
> Then
> Tekst = CDbl(Left(.Cell(I, Kol).Range, Len(.Cell(I,
> Kol).Range) - 2))
> TalTekst = Round(Tekst / 1000, 0)
> ActiveDocument.Tables(1).Cell(I, Kol + 2).Range.Text =
TalTekst
Her siger du vil indsætte tekst i den første tabel i dokumntet. Mon ikke du
skal slette "ActiveDocument.Tables(1)" i ovenstående linie.
> End If
> Next I
> End With
> ...
>
> Men det virker naturligvis kun på tabel 1 i dokumentet!
Jah, jow, men der skal nu ikke ændres meget før det virker på alle.
>
> Koden er i øvrigt en viderebygning på noget fra Mads - tak til dig Mads!
Den så lidt bekendt ud Og selvtak
Mvh Mads
| |
Henrik Hougaard (19-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 19-09-02 09:54 |
|
> > With Selection.Tables(1) <- her er problemet!!!!!!!!!!!!!!
>
> Her siger at du ønsker at arbejde med den første tabel i markering du har
> lavet, sagt på en anden måde den aktive tabel.
> Hvad mener du med at der er et problem med den linie?
Problemet var, at jeg brugte ActiveDocument (som du også bemærkede). Derfor
kunne jeg kun arbejde på tabel 1 i det aktive dokument. Det underlige var
bare, at jeg var nødt til at bruge ActiveDocument for at det virkede når jeg
lagde makroen i en skabelon, og ville anvende dee på et andet
dokument.(eller havde flere dokumenter åbne). Dette konstaterede jeg hjemme
på en Win XP maskine. Men har på arbejdet med Win98SE er der ingen problem.
Jeg må hjem og prøve igen.
>
> > For I = StartRække To Selection.Information(wdEndOfRangeRowNumber)
> ^
> Jeg har altid ungået de danske specialtegn æøå i forbindelse med
navngivning
> af variable mm. Det er muligt at det går godt, men jeg betragter det som
en
> risiko.
Helt enig - jeg har dog brugt det ved flere lejligheder uden problemer. Men
jeg vil nu følge "god skik" og retter til (ingen æøå).
> Her siger du vil indsætte tekst i den første tabel i dokumntet. Mon ikke
du
> skal slette "ActiveDocument.Tables(1)" i ovenstående linie.
Jo og så virker det! Se kommentar ovenfor.
Men Mads, ved du om man kan teste på om en celle indholder en formel? Jeg
bruger en makro til at flytte tal fra en kolonne til en anden kolonne. I
visse af destinations-cellerne er der en formel, og denne må ikke
overskrives af et flyttet tal. Jeg kan ikke bruge IsNumeric, da tallet er
"manuelt formateret" med tusind-punktum, og derfor er en tekst. Kan man evt.
teste på, om cellen indeholder tekst?
Formateringen af tallet er i øvrigt et andet problem, hvor jeg dog savner
Excel formateringsfunktion i Words tabeller (automtisk tusindpunktum ved
talindtastning m.v.). Da tallene (indtastet som tekst - f.eks. 10.000) jeg
flytter skal deles med 1000 forinden, er jeg nødt at lave det om det en
talværdi. Når tallet så skal skrives igen i den nye celle, skal det laves
tilbage til tekst igen for at få tusind-punktummet med. Dertil bruger jeg
strengfuntionerne Left, Right, Mid og Len. Det er da "bøvlet." Jeg har
imidlertid fundet "CDbl", der laver tekstværdien med tusindpunktum om til en
talværdi f.eks.
Sum = CDbl(Tekststreng)
Men jeg har ikke kunnet finde noget tilsvarende, der virker den anden vej -
derfor bøvlet med at konvertere til streng + indsætte tusind-punktum med
Left, Right osv.
Nogen gode ideer til de 2 problemer?
mvh
Henrik
| |
Mads (19-09-2002)
| Kommentar Fra : Mads |
Dato : 19-09-02 10:36 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d8990be$0$64200$edfadb0f@dspool01.news.tele.dk...
> > > With Selection.Tables(1) <- her er problemet!!!!!!!!!!!!!!
> >
> > Her siger at du ønsker at arbejde med den første tabel i markering du
har
> > lavet, sagt på en anden måde den aktive tabel.
> > Hvad mener du med at der er et problem med den linie?
> Problemet var, at jeg brugte ActiveDocument (som du også bemærkede).
Derfor
> kunne jeg kun arbejde på tabel 1 i det aktive dokument. Det underlige var
> bare, at jeg var nødt til at bruge ActiveDocument for at det virkede når
jeg
> lagde makroen i en skabelon, og ville anvende dee på et andet
> dokument.(eller havde flere dokumenter åbne). Dette konstaterede jeg
hjemme
> på en Win XP maskine. Men har på arbejdet med Win98SE er der ingen
problem.
> Jeg må hjem og prøve igen.
Jeg kan ikke gennemskue hvad eller hvorfor det går galt.
> Men Mads, ved du om man kan teste på om en celle indholder en formel? Jeg
> bruger en makro til at flytte tal fra en kolonne til en anden kolonne. I
> visse af destinations-cellerne er der en formel, og denne må ikke
> overskrives af et flyttet tal. Jeg kan ikke bruge IsNumeric, da tallet er
> "manuelt formateret" med tusind-punktum, og derfor er en tekst. Kan man
evt.
> teste på, om cellen indeholder tekst?
Formler er felter, så måske kan du bruge noget a la
If .Cells(x, y).Range.Fields.Count=0 Then
' Linier der angiver hvad der skal flyttes
Else
' Der skal ikke flyttes noget til cellen
End If
En tom celle har længden 2, dvs Len(.Cells(x, y).Range.Text) vil returene 2
hvis cellen er tom og være >2 hvis der er noget i cellen.
Hvis der er noget i cellen er det tekst. Det kan muligvis også godt være et
tal (IsNummeric) eller en dato (IsDate) men det vil altid være tekst.
> Formateringen af tallet er i øvrigt et andet problem, hvor jeg dog savner
> Excel formateringsfunktion i Words tabeller (automtisk tusindpunktum ved
> talindtastning m.v.). Da tallene (indtastet som tekst - f.eks. 10.000) jeg
> flytter skal deles med 1000 forinden, er jeg nødt at lave det om det en
> talværdi. Når tallet så skal skrives igen i den nye celle, skal det laves
> tilbage til tekst igen for at få tusind-punktummet med. Dertil bruger jeg
> strengfuntionerne Left, Right, Mid og Len. Det er da "bøvlet." Jeg har
> imidlertid fundet "CDbl", der laver tekstværdien med tusindpunktum om til
en
> talværdi f.eks.
>
> Sum = CDbl(Tekststreng)
Jeg kender ikke CDbl, hvor har du den fra. Der er måske noget jeg kunne
bruge
>
> Men jeg har ikke kunnet finde noget tilsvarende, der virker den anden
vej -
> derfor bøvlet med at konvertere til streng + indsætte tusind-punktum med
> Left, Right osv.
Der er VBA egen komando "Format"
F.eks
Tal = 645323
Tekst = Format(Tal, "#,###,###")
' Tekst er nu lig "654.323"
Bemærk jeg bruger komma men jeg får et punktum ud af det. Så der skal måske
lidt test til før du får det du ønsker. Jeg tror det skyldes en ikke helt
god integration med Regional Settings under Windows. Det betyder at man skal
angive formatet som standard Amerikansk der så bliver omformateret i helhold
til egne ønsker angivet under Regional Settings.
Mvh Mads
| |
Henrik Hougaard (19-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 19-09-02 11:54 |
|
> Formler er felter, så måske kan du bruge noget a la
> If .Cells(x, y).Range.Fields.Count=0 Then
> ' Linier der angiver hvad der skal flyttes
> Else
> ' Der skal ikke flyttes noget til cellen
> End If
>
> En tom celle har længden 2, dvs Len(.Cells(x, y).Range.Text) vil returene
2
> hvis cellen er tom og være >2 hvis der er noget i cellen.
> Hvis der er noget i cellen er det tekst. Det kan muligvis også godt være
et
> tal (IsNummeric) eller en dato (IsDate) men det vil altid være tekst.
Kan jeg ikke rigtigt bruge da cellen der kopieres til allerede indholder en
tekst, der skal overskrives. Men siger du, at en formel også er tekst. Så
kan jeg måske teste på noget tekst fra formlen, der jo f.eks. altid begynder
med "{" - eller teste på tekstens længde. Jeg bruger formlen {=SUM(ABOVE)}
der er 13 tegn lang - det vil jeg teste på - jeg får ikke tal der bruger 13
tegn , da vi så et oppe i milliarder!
>
> >
> > Sum = CDbl(Tekststreng)
> Jeg kender ikke CDbl, hvor har du den fra. Der er måske noget jeg kunne
> bruge
Den ligger under hjælpen - søg på "Type Conversion Functions". Ifølge
hjælpen er der ikke nævnt noget om den funktionalitet, jeg får ud af den,
men det virker.
>
> Der er VBA egen komando "Format"
> F.eks
> Tal = 645323
> Tekst = Format(Tal, "#,###,###")
> ' Tekst er nu lig "654.323"
>
> Bemærk jeg bruger komma men jeg får et punktum ud af det. Så der skal
måske
> lidt test til før du får det du ønsker. Jeg tror det skyldes en ikke helt
> god integration med Regional Settings under Windows. Det betyder at man
skal
> angive formatet som standard Amerikansk der så bliver omformateret i
helhold
> til egne ønsker angivet under Regional Settings.
Det prøver jeg lige - ud fra ovenstående ser det ud til at vil virke - jeg
skal nemlig bruge et punktum!
mvh
Henrik
| |
Mads (19-09-2002)
| Kommentar Fra : Mads |
Dato : 19-09-02 12:31 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d89ad06$0$64158$edfadb0f@dspool01.news.tele.dk...
> > Formler er felter, så måske kan du bruge noget a la
> > If .Cells(x, y).Range.Fields.Count=0 Then
> > ' Linier der angiver hvad der skal flyttes
> > Else
> > ' Der skal ikke flyttes noget til cellen
> > End If
> >
> > En tom celle har længden 2, dvs Len(.Cells(x, y).Range.Text) vil
returene
> 2
> > hvis cellen er tom og være >2 hvis der er noget i cellen.
> > Hvis der er noget i cellen er det tekst. Det kan muligvis også godt være
> et
> > tal (IsNummeric) eller en dato (IsDate) men det vil altid være tekst.
> Kan jeg ikke rigtigt bruge da cellen der kopieres til allerede indholder
en
> tekst, der skal overskrives. Men siger du, at en formel også er tekst. Så
> kan jeg måske teste på noget tekst fra formlen, der jo f.eks. altid
begynder
> med "{" - eller teste på tekstens længde. Jeg bruger formlen {=SUM(ABOVE)}
> der er 13 tegn lang - det vil jeg teste på - jeg får ikke tal der bruger
13
> tegn , da vi så et oppe i milliarder!
Jeg vil nok bruge den IF THEN løsning jeg nævnte først (med at tælle felter)
Felter er dobbeltydige, enten viser de resultaten eller også viser de koden.
Dvs du skal først få feltet til at vise koden før du kan finde {-tegnet.
> > > Sum = CDbl(Tekststreng)
> > Jeg kender ikke CDbl, hvor har du den fra. Der er måske noget jeg kunne
> > bruge
> Den ligger under hjælpen - søg på "Type Conversion Functions". Ifølge
> hjælpen er der ikke nævnt noget om den funktionalitet, jeg får ud af den,
> men det virker.
Takker.
Mvh Mads
| |
pre (19-09-2002)
| Kommentar Fra : pre |
Dato : 19-09-02 18:59 |
|
CDbl er en af konverterings funktionerne, den omsætter et tal til
Double.
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784) ' MyCurr is a Currency.
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double.
(=19,2254576 )
Det er altid godt med lidt decimaler.
--
mvh
© pre 2002
"Mads" <mads.knudsen@NOSPAMprivat.dk> skrev i en meddelelse
news:3d89b55e$0$64168$edfadb0f@dspool01.news.tele.dk...
>
> "Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
> news:3d89ad06$0$64158$edfadb0f@dspool01.news.tele.dk...
> > > Formler er felter, så måske kan du bruge noget a la
> > > If .Cells(x, y).Range.Fields.Count=0 Then
> > > ' Linier der angiver hvad der skal flyttes
> > > Else
> > > ' Der skal ikke flyttes noget til cellen
> > > End If
> > >
> > > En tom celle har længden 2, dvs Len(.Cells(x, y).Range.Text) vil
> returene
> > 2
> > > hvis cellen er tom og være >2 hvis der er noget i cellen.
> > > Hvis der er noget i cellen er det tekst. Det kan muligvis også
godt være
> > et
> > > tal (IsNummeric) eller en dato (IsDate) men det vil altid være
tekst.
> > Kan jeg ikke rigtigt bruge da cellen der kopieres til allerede
indholder
> en
> > tekst, der skal overskrives. Men siger du, at en formel også er
tekst. Så
> > kan jeg måske teste på noget tekst fra formlen, der jo f.eks. altid
> begynder
> > med "{" - eller teste på tekstens længde. Jeg bruger formlen
{=SUM(ABOVE)}
> > der er 13 tegn lang - det vil jeg teste på - jeg får ikke tal der
bruger
> 13
> > tegn , da vi så et oppe i milliarder!
>
> Jeg vil nok bruge den IF THEN løsning jeg nævnte først (med at tælle
felter)
>
> Felter er dobbeltydige, enten viser de resultaten eller også viser de
koden.
> Dvs du skal først få feltet til at vise koden før du kan finde
{-tegnet.
>
>
> > > > Sum = CDbl(Tekststreng)
> > > Jeg kender ikke CDbl, hvor har du den fra. Der er måske noget jeg
kunne
> > > bruge
> > Den ligger under hjælpen - søg på "Type Conversion Functions".
Ifølge
> > hjælpen er der ikke nævnt noget om den funktionalitet, jeg får ud af
den,
> > men det virker.
> Takker.
>
> Mvh Mads
>
>
| |
Henrik Hougaard (19-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 19-09-02 12:38 |
|
Det virker jo bare - og så sad jeg og brugte al den tid i går aftes på
det...........
Havde været inde at se på Format kommandoen, men læste at den ikke viste
fortegn. Kan nu godt se, at det kun er et positivt fortegn, den ikke viser -
og det er OK for mig.
Dette virker jo også bare:
If .Cell(x, y).Range.Fields.Count=0 Then
> ' Linier der angiver hvad der skal flyttes
> Else
> ' Der skal ikke flyttes noget til cellen
> End If
Beregning af formler gøres med F9 når man står i cellen med formlen. Kan man
"omprogrammere" denne funktion, ligsom man kan lave mange andre Word
funktioner om ved at lave en Sub med det engelske navn. Eller er det kun
menupunkter. (man kan selvfølgelig lave en keybinding til F9), men det var
lette at lave den eksisterende funktion om. Jeg kan ikke lige huske,
hvordan man ser de engelske navne.
Endnu engang takker...for at du vil øse af din utømmelige viden.
P.S. Mads hvad laver du egentligt siden du har tid til at sidde og
læse/skrive i NG om dagen. Du ved åbenbart også en masse om VBA. Hvis du har
lyste kan du evt svare på hh@n-c.dk eller henrik.hougaard@stofanet.dk.
| |
Mads (19-09-2002)
| Kommentar Fra : Mads |
Dato : 19-09-02 19:49 |
|
Henrik Hougaard <fam.hougaard@nospam.stofanet.dk> wrote in
message news:3d89b74d$0$64157$edfadb0f@dspool01.news.tele.dk...
> Beregning af formler gøres med F9 når man står i cellen med
formlen. Kan man
> "omprogrammere" denne funktion, ligsom man kan lave mange andre
Word
> funktioner om ved at lave en Sub med det engelske navn. Eller
er det kun
> menupunkter. (man kan selvfølgelig lave en keybinding til F9),
men det var
> lette at lave den eksisterende funktion om. Jeg kan ikke lige
huske,
> hvordan man ser de engelske navne.
Hvad vil du have word til at gøre?
ActiveDocument.Fields.Update opdaterer alle felter i dokumentet.
Kan også bruges på et enket felt som
ActiveDocument.Fields(2).Update
> Endnu engang takker...for at du vil øse af din utømmelige
viden.
Selvtak. Og nej min viden ganske tømmelig. Jeg er ikke glad for
spørgsmål om brevfletning, formularer, meget avanceret VBA mm,
simpelhen fordi jeg ikke har brugt meget tid på det.
> P.S. Mads hvad laver du egentligt siden du har tid til at sidde
og
> læse/skrive i NG om dagen. Du ved åbenbart også en masse om
VBA. Hvis du har
> lyste kan du evt svare på hh@n-c.dk eller
henrik.hougaard@stofanet.dk.
Jeg skriver dokumentation for et software firma. Hvilket også
indebærer vedligholdelse af skabeloner, samt finde/lave "smarte"
løsninger i forbindelse med manipulering af et eller flere
dokumenter for andre i afdelingen.
I perioder hvor jeg har tid bruger jeg lidt tid på at læse og evt
løse problemer i nyhedsgrupperne.
Det er en god øvelse for mig dels at løse problemet, dels
formulere en løsning så budskabet går igennem.
Mvh Mads
PS jeg går snart på ferie, så du bliver nødt enten at klare det
selv eller satse på andre i gruppen
| |
Henrik Hougaard (20-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 20-09-02 08:54 |
|
> Hvad vil du have word til at gøre?
Jeg vil "omprogrammere" F9 funktionen så den sætter et tusindpunktum i
resultatet (formlen). Jeg bruger formlen =SUM(ABOVE) og den er lidt "sjov"
(der var den igen!). Hvis bare et af tallene, der skal summeres har et
tusindpunktum så får resultatet det også. MEN hvis ingen af tallene, der
skal summeres har tusindpunktum OG resultatet bliver over tusind, så kommer
der ingen tusindpunktum i resultatet. Det er ligesom den tager
formatteringen af resultatet fra tallene, der summeres. Jeg ville så
omprogrammere Words interne F9 funktion til altid at sætte tusindpunktum i
resultatet.
>
> ActiveDocument.Fields.Update opdaterer alle felter i dokumentet.
Kender jeg - og kalder den også i en makro så brugeren kan beregne alle
formlerne i dokumentet på en gang.
> Jeg skriver dokumentation for et software firma. Hvilket også
> indebærer vedligholdelse af skabeloner, samt finde/lave "smarte"
> løsninger i forbindelse med manipulering af et eller flere
> dokumenter for andre i afdelingen.
> I perioder hvor jeg har tid bruger jeg lidt tid på at læse og evt
> løse problemer i nyhedsgrupperne.
> Det er en god øvelse for mig dels at løse problemet, dels
> formulere en løsning så budskabet går igennem.
Jamen det er jo fint - også for vi andre, der så kan have glæde af din
viden.
> PS jeg går snart på ferie, så du bliver nødt enten at klare det
> selv eller satse på andre i gruppen
Så må du have en rigtig god ferie.
P.S. Jeg har nok valgt at droppe din Entertast funktion (flytte til højre i
tabeller), da jeg ikke rigtigt kan få det til at virke med at slå den til og
fra (se tidl. vedr. problem med Autokorrektur, grafisk linie m.v.).
mvh
Henrik
| |
Henrik Hougaard (19-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 19-09-02 10:55 |
|
Et nyt "sjovt" problem er dukket op, Mads.
Når jeg anvender din tidligere makro til omdefinering af Enter tastens
funtion i en tabel med
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyReturn),
KeyCategory:=wdKeyCategoryMacro, Command:="NyEnterTast"
og tilhørende Sub funktion, så virker visse Word funktioner ikke mere. Det
er funktioner, der åbenbart udføres efter enter-tryk. F.eks. visse
autokorrektur-elementer samt dannelse af en lodret streg ved blot at taste
"----" og trykke enter. Det må være fordi Word selv evaluerer enter tast og
handler derpå, men denne evaluering slås fra/omgås, da din Sub funktion
udfører dette: Selection.TypeText vbCr (hvis ikke i en tabel)
Har Word nogle "skjulte" funktioner, men kan finde/kalde - altså i stedet
for Selection.Typetext vbCr så kalde en "skjult" Word enterfunktion!
Kan se at MS også omtaler det i Microsoft Knowledge Base Article - Q211219,
men synes ikke lige min løsning ligger heri.
Henrik
| |
Mads (19-09-2002)
| Kommentar Fra : Mads |
Dato : 19-09-02 12:20 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d899f1f$0$64191$edfadb0f@dspool01.news.tele.dk...
> Et nyt "sjovt" problem er dukket op, Mads.
Du har en "Sjov" definition af sjov ;)
>
> Når jeg anvender din tidligere makro til omdefinering af Enter tastens
> funtion i en tabel med
>
> KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyReturn),
> KeyCategory:=wdKeyCategoryMacro, Command:="NyEnterTast"
>
> og tilhørende Sub funktion, så virker visse Word funktioner ikke mere. Det
> er funktioner, der åbenbart udføres efter enter-tryk. F.eks. visse
> autokorrektur-elementer samt dannelse af en lodret streg ved blot at taste
> "----" og trykke enter. Det må være fordi Word selv evaluerer enter tast
og
> handler derpå, men denne evaluering slås fra/omgås, da din Sub funktion
> udfører dette: Selection.TypeText vbCr (hvis ikke i en tabel)
>
> Har Word nogle "skjulte" funktioner, men kan finde/kalde - altså i stedet
> for Selection.Typetext vbCr så kalde en "skjult" Word enterfunktion!
Den er ikke skjult, men måske ikke ret brugt. Men prøv med
SendKeys "{ENTER}"
istedet for
Selection.Typetext vbCr
SendKeys kommandoen tror jeg var mere tiltænkt når man skulle sende
komandoer/tastetryk til andre programmer.
SendKeys skal så kombineres med at man frakobler KeyBindings kommandoen før
og tilkobler efter SendKeys.
Ellers vil der opstå en uendelig lykke
Ellers skal du nok events stryring hvor du fanger alle tastetryk og
evaluerer på det. Og jeg har ikke meget erfaring i eventsstyring. Der skal
du nok have fat i en af de udenlandske grupper.
>
> Kan se at MS også omtaler det i Microsoft Knowledge Base Article -
Q211219,
> men synes ikke lige min løsning ligger heri.
Nej de bruger jo stort set den løsning jeg foreslog (klapper mig selv på
skulderen)
Det gør at jeg er lidt usikker på om der findes en rigtig god løsning.
Men der er et par tip om automatisk til- og frakobling af den makro der skal
køre ved tryk på enter tasten.
Mvh Mads
| |
|
|