Ich versuche, einige Code zusammenführen, die Zellen zusammenführt, wo doppelte Inhalte in der Zeile oben ist. Der Code funktioniert, aber sobald ich in die dritte Zeile komme, bekomme ich einen Fehler, der sagt:VBA Powerpoint verschmelzen Zellen in Schleife
Zelle (unbekannte Nummer): Ungültige Anfrage. Es können keine Zellen unterschiedlicher Größe zusammengeführt werden.
Wenn ich zurück zur Benutzeroberfläche gehe, kann ich die Zusammenführung manuell durchführen, also glaube ich nicht, dass die Zellen unterschiedliche Größen haben. Also ich denke, es ist ein Problem mit meinem Code oder eine Einschränkung der VBA. Merge-Methode?
-Code ist unter
Sub testMergeDuplicateCells()
Dim oSl As Slide
Dim oSh As Shape
Dim k As Long
slideCount = ActivePresentation.Slides.Count
For k = 3 To (slideCount)
Set oSl = ActivePresentation.Slides(k)
'Start looping through shapes
For Each oSh In oSl.Shapes
'Now deal with text that is in a table
If oSh.HasTable Then
Dim x As Long, z As Long, y As Long
Dim oText As TextRange
Dim counter As Long
counter = 0
For x = 17 To oSh.Table.Rows.Count 'will always start on 17th row
For z = 1 To oSh.Table.Columns.Count
Set oText = oSh.Table.Cell(x, z).Shape.TextFrame.TextRange
y = x - 1
Set pText = oSh.Table.Cell(y, z).Shape.TextFrame.TextRange
If pText = oText Then
With oSh.Table
.Cell(x + counter, z).Shape.TextFrame.TextRange.Delete
.Cell(y, z).Merge MergeTo:=.Cell(x, z)
End With
counter = counter + 1
End If
Next z
Next x
End If
Next oSh
Next k
End Sub
Betrachten Sie die Zellenanzahl vor und nach dem Zusammenführen der ersten beiden Zellen. Es kann sein, dass die jetzt verbundenen Zellen als eine einzelne Zelle statt zwei zählen, was den Zählerindex in die Zellensammlung werfen würde. Als Test können Sie Folgendes versuchen: Jedes Mal, wenn Sie zwei identische Zellen zum Zusammenführen finden, führen Sie sie zusammen und beginnen Sie dann, diese Zeile von Anfang an erneut zu bearbeiten. –
Das war definitiv ein Teil des Problems, ein anderes Problem war, dass die Zellen Teil einer größeren Tabelle waren, wo einige Zellzusammenführungen bereits durchgeführt worden waren. Was optisch wie eine Zelle aussah, war eigentlich 2,3 oder 8 Spalten, die miteinander verschmolzen waren. Es ist nicht elegant, aber ich musste die Schleife über die zusätzlichen Iterationen machen, indem ich nur die Zeile und die letzte Spalte der verbundenen Zellen durchbohre. Ich schrieb einen zusätzlichen Sub, um mir zu sagen, wie groß die Dimensionen der verbundenen Zellen waren. Posted unten in der Antwort. –