Fylla tabellceller med ett makro

June 6

När du arbetar med tabeller i Word, kanske du vill fylla de olika cellerna i en tabell med ett inställt värde. Till exempel kanske du vill kopiera något till Urklipp och sedan klistra in innehållet i Urklipp till varje cell i en tabell. Följande makrot kommer att göra susen:

Sub PasteToCells ()
Dim TargetRange Såsom Range
Dim oTargCell Som Cell

Om Selection.Cells.Count = 0 Då
"Avsluta om inga celler i urval
MsgBox "Inga celler valda", vbCritical
Exit Sub
End If
On Error Resume Nästa
Ställ TargetRange = Selection.Range
För varje oTargCell I Selection.Cells
oTargCell.Range.Paste
Nästa oTargCell
TargetRange.Select
End Sub

De makro startar genom att kontrollera att se till att valet innehåller vissa celler. Om inte, så att användaren är informerad och makrot slutade. Sedan markeringen lagras i en variabel, så att den kan väljas (igen) vid slutet av makrot. Utan denna kod skulle makrot lämna insättningspunkten kollapsade i den första cellen i det ursprungliga urvalet.

Den verkliga kött av makrot är i For ... Next loopen. Det steg genom cellerna i markeringen och ersätter allt som är där med innehållet i Urklipp. Slutligen ursprungliga urvalet åter valt och makro ändarna.

Du märkte nog att det finns en On Error uttalande i makrot, liksom. Detta uttalande i grunden talar Word för att ignorera eventuella fel och fortsätta med nästa påstående. Fel som kan utlösas inkluderar kör makrot med ingenting i Urklipp eller försöker klistra in en tabell i en tabellcell. Ordet kommer inte att göra någon uppgift, men det kommer att fortsätta försöka tills det är gjort med alla celler i markeringen.

Du bör notera att detta makrot ersätter allt som finns i de markerade cellerna med innehållet i Urklipp; oavsett var tidigare i cellerna är förlorad. Om du vill istället lägga till information i början av cellerna, utan att störa de befintliga innehållet i cellen, kan du använda det här något modifierad makro:

Sub PasteToCellsStart ()
Dim TargetRange Såsom Range
Dim oTargCell Som Cell
Dim PasteRange Såsom Range

Om Selection.Cells.Count = 0 Då
"Avsluta om inga celler i urval
MsgBox "Inga celler valda", vbCritical
Exit Sub
End If
On Error Resume Nästa
Ställ TargetRange = Selection.Range
För varje oTargCell I Selection.Cells
Ställ PasteRange = oTargCell.Range
PasteRange.Collapse wdCollapseStart
PasteRange.Paste
Nästa oTargCell
TargetRange.Select
End Sub

En sista ändring skulle vara att komma med ett makro som skulle klistra till slutet av vad som finns i cellerna. Du kanske tror att du skulle kunna ersätta wdCollapseStart med wdCollapseEnd i föregående makro, men det fungerar inte korrekt inom tabeller. Istället måste du byta ut För ... Nästa slinga i ovanstående makro. Följande exempel visar en förändrad version av makrot.

Sub PasteToCellsEnd ()
Dim TargetRange Såsom Range
Dim oTargCell Som Cell
Dim PasteRange Såsom Range

Om Selection.Cells.Count = 0 Då
"Avsluta om inga celler i urval
MsgBox "Inga celler valda", vbCritical
Exit Sub
End If
On Error Resume Nästa
Ställ TargetRange = Selection.Range
För varje oTargCell I Selection.Cells
Ställ PasteRange = oTargCell.Range.Characters.Last
PasteRange.Collapse wdCollapseStart
PasteRange.Paste
Nästa oTargCell
TargetRange.Select
End Sub

WordTips är din källa för kostnadseffektiv Microsoft Word utbildning. (Microsoft Word är det mest populära ordbehandlingsprogram i världen.) Detta tips (1508) gäller för Microsoft Word 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Word (Word 2007 och senare) här: Fylla tabellceller med ett makro.