Zeile in Tabelle kopieren

09/12/2008 - 01:24 von Holger Lembke | Report spam
Hi,

ich (Anfànger in VBA) habe eine Tabelle:

+--+--+--+--+--+--+
! 1 ! ! ! ! ! 2 !
+--+--+--+--+--+--+
! ! ! ! ! ! !
+--+--+--+--+--+--+

in der Suche ich erst die Zellen mit 1 und 2 drinne (können in einer
beliebigen Zeile stehen) und will dann eine Zeile darüber einfügen und
diese Zeile da hinein kopieren ohne (!) dabei die Zwischenablage zu nutzen.

Und am Kopieren scheitere ich... Das Ganze ist eher lànglich in der
Testphase und sieht so aus:

Dim r As Range

' 1
Selection.Start = 1
Selection.End = 1
With Selection.Find
.Text = "1"
End With
Selection.Find.Execute

If (Selection.Find.Found) Then
st = Selection.Start
End If

' 2
Selection.Start = 1
Selection.End = 1
With Selection.Find
.Text = "2"
End With
Selection.Find.Execute

If (Selection.Find.Found) Then
en = Selection.End
End If

' 3
Selection.Start = st
Selection.End = en
Selection.InsertCells (wdInsertCellsShiftDown)
' Zielbereich merken
Set r = ActiveDocument.Range
r.Start = Selection.Start
r.End = Selection.Start

' 4
Selection.Start = 1
Selection.End = 1
With Selection.Find
.Text = "1"
End With
Selection.Find.Execute

If (Selection.Find.Found) Then
st = Selection.Start
End If

' 5
Selection.Start = 1
Selection.End = 1
With Selection.Find
.Text = "2"
End With
Selection.Find.Execute

If (Selection.Find.Found) Then
en = Selection.End
End If

Selection.End = en
Selection.Start = st
Selection.End = en

r = Selection

Doppelte Suche ist nötig, weil sich die Quelle verschiebt.

Was mache ich falsch? Wie geht es besser?

(Mit Zwischenablage geht es leicht. Aber das ist nicht gewollt.)


mit freundlichen Grüßen! Password Must Be at Least 18770 Characters
Holgi, +49-531-3497854 ! Can't Repeat Any of Your Previous 30689 Passwords
 

Lesen sie die antworten

#1 Helmut Weber
09/12/2008 - 14:15 | Warnen spam
Hallo Holger,

nachdem im Betreff steht "Zeile kopieren",
hier ein Beispiel für Zeile.

Suchen scheint ja kein Problem zu sein,
deswegen spare ich mir das, und nehme mal an,
die Suche war erfolgreich.

Sub TestTab()
Dim i As Long
Dim oRow1 As Range
Dim oRow2 As Range
Selection.InsertRows 1
Set oRow1 = Selection.Rows(1).Range
Selection.MoveDown
Set oRow2 = Selection.Rows(1).Range
For i = 1 To oRow2.Cells.Count
oRow1.Cells(i).Range.Text = _
left(oRow2.Cells(i).Range.Text, _
Len(oRow2.Cells(i).Range.Text) - 2)
oRow2.Cells(i).Range.Text = ""
Next
End Sub

Gruss
Helmut Weber, MVP WordVBA
Word 2002, Windows XP

Ähnliche fragen