|
| Automatering af tabeller Fra : Henrik Hougaard |
Dato : 06-09-02 08:36 |
|
I forbindelse med at vore sekretærer skal lave en del talopstillinger i
tabeller vil jeg gerne kunne automatisere deres arbejde med nogle makroer
der:
1. Erstatter tryk på numerisk "," med et "." i stedet (dvs sætter et
tusindpunktum i et tal)
2. Ved indtastning af tal i en celle skal der automatisk blive sat et
tusindpunktum (ligesom man kan i Excel ved at vælge dette under format på
Excel-cellen)
3. Udskifte handlingen ved tryk på ENTER i en celle (laver en ekstra linie i
cellen) med en funktion, der i stedet giver en ny række i taballen. Helt
smart ville det være, hvis et ENTER-tryk i cellerne i en række flytter til
næste celle til højre, men hvis man er i sidste celle i rækken laves i
stedet en ny række.
4. En funktion, der kan sammentælle en kolonne i tabellen og skrive
resultatet i den celle man står i (Words egen sammentælling i tabeller er
meget u-brugervenlig)
5. En funktion, der kan flytte tallene i en kolonne til kolonnen til højre
og forinden lige dividere dem med 1000.
Jeg forestiller mig det hele lavet i makroen, men er lidt på bar bund.
Anyone ???
Henrik
| |
Mads (06-09-2002)
| Kommentar Fra : Mads |
Dato : 06-09-02 12:00 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d785ad3$0$124$edfadb0f@dspool01.news.tele.dk...
> I forbindelse med at vore sekretærer skal lave en del talopstillinger i
> tabeller vil jeg gerne kunne automatisere deres arbejde med nogle makroer
> der:
Lidt ideer at arbejde med.
> 3. Udskifte handlingen ved tryk på ENTER i en celle (laver en ekstra linie
i
> cellen) med en funktion, der i stedet giver en ny række i taballen. Helt
> smart ville det være, hvis et ENTER-tryk i cellerne i en række flytter til
> næste celle til højre, men hvis man er i sidste celle i rækken laves i
> stedet en ny række.
Se mit svar om keybindings og knyt denne makro til Enter tasten
Sub NyEnterTast()
If Selection.Information(wdWithInTable) Then
If Selection.Information(wdEndOfRangeColumnNumber) =
Selection.Tables(1).Columns.Count Then
Selection.Tables(1).Rows.Add
Else
Selection.MoveRight unit:=wdCell
End If
Else
Selection.TypeText vbCr
End If
Selection.Collapse
End Sub
> 4. En funktion, der kan sammentælle en kolonne i tabellen og skrive
> resultatet i den celle man står i (Words egen sammentælling i tabeller er
> meget u-brugervenlig)
Denne makro kan måske hjælpe
Sub SumFunktion()
Dim I As Integer
Dim Sum As Single
Dim Kol As Integer
Kol = Selection.Information(wdEndOfRangeColumnNumber)
Sum = 0
With Selection.Tables(1)
For I = 1 To Selection.Information(wdEndOfRangeRowNumber) - 1
Sum = Sum + Val(Left(.Cell(I, Kol).Range, Len(.Cell(I, Kol).Range) -
2))
Next I
Selection.TypeText Sum
End With
End Sub
Mvh Mads
| |
Henrik Hougaard (06-09-2002)
| Kommentar Fra : Henrik Hougaard |
Dato : 06-09-02 12:29 |
|
Tak for det fremsendte - det funker bare (også svaret i din anden mail).
En lille krølle på sum-funktionen, er at den ikke må medtælle celler der har
en under- eller overstregning (subtotaler). Det må være noget med en IF
sætning før leddet:
Sum = Sum + Val(Left(.Cell(I, Kol).Range, Len(.Cell(I, Kol).Range) -
Men jeg kan ikke lige se, hvordan man "aflæser" om cellen har en over- eller
understegning.
Nogen ide til dette?
Henrik
"Mads" <mads.knudsen@NOSPAMprivat.dk> skrev i en meddelelse
news:3d788abe$0$27659$edfadb0f@dspool01.news.tele.dk...
>
> "Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
> news:3d785ad3$0$124$edfadb0f@dspool01.news.tele.dk...
> > I forbindelse med at vore sekretærer skal lave en del talopstillinger i
> > tabeller vil jeg gerne kunne automatisere deres arbejde med nogle
makroer
> > der:
>
> Lidt ideer at arbejde med.
>
> > 3. Udskifte handlingen ved tryk på ENTER i en celle (laver en ekstra
linie
> i
> > cellen) med en funktion, der i stedet giver en ny række i taballen. Helt
> > smart ville det være, hvis et ENTER-tryk i cellerne i en række flytter
til
> > næste celle til højre, men hvis man er i sidste celle i rækken laves i
> > stedet en ny række.
>
> Se mit svar om keybindings og knyt denne makro til Enter tasten
>
> Sub NyEnterTast()
>
> If Selection.Information(wdWithInTable) Then
> If Selection.Information(wdEndOfRangeColumnNumber) =
> Selection.Tables(1).Columns.Count Then
> Selection.Tables(1).Rows.Add
> Else
> Selection.MoveRight unit:=wdCell
> End If
> Else
> Selection.TypeText vbCr
> End If
> Selection.Collapse
>
> End Sub
>
>
> > 4. En funktion, der kan sammentælle en kolonne i tabellen og skrive
> > resultatet i den celle man står i (Words egen sammentælling i tabeller
er
> > meget u-brugervenlig)
>
> Denne makro kan måske hjælpe
>
> Sub SumFunktion()
>
> Dim I As Integer
> Dim Sum As Single
> Dim Kol As Integer
> Kol = Selection.Information(wdEndOfRangeColumnNumber)
> Sum = 0
> With Selection.Tables(1)
> For I = 1 To Selection.Information(wdEndOfRangeRowNumber) - 1
> Sum = Sum + Val(Left(.Cell(I, Kol).Range, Len(.Cell(I,
Kol).Range) -
> 2))
> Next I
> Selection.TypeText Sum
> End With
>
> End Sub
>
>
>
> Mvh Mads
>
>
| |
Mads (06-09-2002)
| Kommentar Fra : Mads |
Dato : 06-09-02 13:02 |
|
"Henrik Hougaard" <fam.hougaard@nospam.stofanet.dk> wrote in message
news:3d789180$0$182$edfadb0f@dspool01.news.tele.dk...
> Tak for det fremsendte - det funker bare (også svaret i din anden mail).
>
> En lille krølle på sum-funktionen, er at den ikke må medtælle celler der
har
> en under- eller overstregning (subtotaler). Det må være noget med en IF
> sætning før leddet:
>
> Sum = Sum + Val(Left(.Cell(I, Kol).Range, Len(.Cell(I,
Kol).Range) -
>
> Men jeg kan ikke lige se, hvordan man "aflæser" om cellen har en over-
eller
> understegning.
prøv at lege med
MsgBox Selection.Borders(wdBorderTop).Visible
Mvh Mads
| |
|
|