Fylle tabellceller med en Macro

February 24  by Eliza

Som du arbeider med tabeller i Word, kan det være lurt å fylle de ulike cellene i en tabell med et sett verdier. For eksempel, kan du ønsker å kopiere noe til utklippstavlen, og deretter lime inn innholdet på utklippstavlen til hver celle i en tabell. Følgende makro vil gjøre triks:

Sub PasteToCells ()
Dim TargetRange Som Range
Dim oTargCell Som Cell

Hvis Selection.Cells.Count = 0 Then
"Quit hvis ingen celler i utvalg
MsgBox "No celler valgt", vbCritical
Exit Sub
End If
On Error Resume Next
Satt TargetRange = Selection.Range
For Hver oTargCell I Selection.Cells
oTargCell.Range.Paste
Neste oTargCell
TargetRange.Select
End Sub

Makro starter ved å sjekke for å være sikker på at utvalget inkluderer noen celler. Hvis ikke, så brukeren er informert og makroen er avsluttet. Da valget er lagret i en variabel, slik at det kan velges (igjen) ved enden av makroen. Uten denne koden, vil makro la innsettingspunktet kollapset i den første cellen i det opprinnelige valg.

Den virkelige kjøtt av makro er i For ... Neste loop. Det skritt gjennom cellene i utvalget, og erstatter det som er der med innholdet i utklippstavlen. Endelig er det opprinnelige utvalget igjen valgt, og de makro ender.

Du sikkert lagt merke til at det er en On Error uttalelse i makro, så vel. Denne uttalelsen utgangspunktet forteller Word å ignorere eventuelle feil og fortsette med neste setning. Feil som kan bli utløst omfatter løping makroen med ingenting i utklippstavlen eller prøver å lime inn en tabell i en tabellcelle. Word vil ikke gjøre enten oppgave, men den vil fortsette å prøve før det er gjort med alle cellene i det merkede området.

Du bør være oppmerksom på at denne makroen erstatter det som er i de valgte cellene med innholdet i utklippstavlen; hva var tidligere i cellene er tapt. Hvis du ønsker å i stedet legge til informasjon i begynnelsen av cellene, uten å forstyrre eksisterende innholdet i cellen, kan du bruke denne litt modifisert makro:

Sub PasteToCellsStart ()
Dim TargetRange Som Range
Dim oTargCell Som Cell
Dim PasteRange Som Range

Hvis Selection.Cells.Count = 0 Then
"Quit hvis ingen celler i utvalg
MsgBox "No celler valgt", vbCritical
Exit Sub
End If
On Error Resume Next
Satt TargetRange = Selection.Range
For Hver oTargCell I Selection.Cells
Satt PasteRange = oTargCell.Range
PasteRange.Collapse wdCollapseStart
PasteRange.Paste
Neste oTargCell
TargetRange.Select
End Sub

En siste modifikasjon ville være å komme opp med en makro som ville lim til enden av hva som er i celler. Du tenker kanskje at du kan erstatte wdCollapseStart med wdCollapseEnd i det foregående makro, men som ikke fungerer ordentlig innenfor tabeller. I stedet må du erstatte For ... Neste sløyfe i ovennevnte makro. Følgende eksempel viser en endret versjon av makroen.

Sub PasteToCellsEnd ()
Dim TargetRange Som Range
Dim oTargCell Som Cell
Dim PasteRange Som Range

Hvis Selection.Cells.Count = 0 Then
"Quit hvis ingen celler i utvalg
MsgBox "No celler valgt", vbCritical
Exit Sub
End If
On Error Resume Next
Satt TargetRange = Selection.Range
For Hver oTargCell I Selection.Cells
Satt PasteRange = oTargCell.Range.Characters.Last
PasteRange.Collapse wdCollapseStart
PasteRange.Paste
Neste oTargCell
TargetRange.Select
End Sub

WordTips er din kilde for kostnadseffektiv Microsoft Word trening. (Microsoft Word er den mest populære tekstbehandlingsprogrammet i verden.) Dette tipset (1508) gjelder for Microsoft Word 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Word (Word 2007 og senere) her: Fylle tabellceller med en makro.