| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | 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
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |