@Sepp und alle VBA-Experten
Fritz_W
mit dem nachfolgenden Code, den ich von Sepp Ehrensberger vor wenigen Tagen erhalten habe,
werden die Zelllinhalte des Zellbereichs D3:D18 der Tabelle1 (als unformatierter Wert) in die Tabelle2 eingefügt, und zwar in die erste leere Spalte, ausgehend von der Zeile, in der in Spalte A (Tabelle2) die Zahl steht, die auch in Zelle I1 der Tabelle1 enthalten ist.
Sub fritz()
Dim vntRet As Variant, vntValues As Variant
Dim rngFree As Range
With Sheets("Tabelle2")
If Sheets("Tabelle1").Range("I1") "" And Sheets("Tabelle1").Range("B2") = "x" Then
vntRet = Application.Match(Sheets("Tabelle1").Range("I1"), .Columns(1), 0)
If IsNumeric(vntRet) Then
Set rngFree = FirstEmptyCell(.Rows(vntRet))
If Not rngFree Is Nothing Then
vntValues = Sheets("Tabelle1").Range("D3:D18")
rngFree.Resize(UBound(vntValues, 1), 1) = vntValues
End If
End If
End If
End With
End Sub
Private Function FirstEmptyCell(Target As Range, Optional Reverse As Boolean = False) As Range
Dim vntRet As Variant, strRef As String
With Target
strRef = "'" & .Parent.Name & "'!" & .Address
vntRet = Evaluate(IIf(Reverse, "MAX", "MIN") & "(IF(" & strRef & "="""",ROW(" & strRef & _
")+COLUMN(" & strRef & ")*10^-6))")
If IsError(vntRet) Or vntRet = 0 Then Exit Function
Set FirstEmptyCell = .Cells(Clng(Split(vntRet, ",")(0)) - .Rows(1).Row + 1, Clng(Split(vntRet, _
_
",")(1)) - .Columns(1).Column + 1)
End With
End Function
Jetzt habe ich festgestellt, dass folgende - für mich nicht nachvollziehbare - Besonderheit auftritt:Beim 9. Kopiervorgang wird nicht in die Spalte J (Spalte 10) kopiert, sondern in die Spalte A, dabei wird natürlich die jeweilige "Zahl" überschrieben. Nachdem ich den Eintrag der Spalte A in die Spalte J kopiert habe und die überschriebene Zahl wieder eingegeben habe, wird der Kopiervorgang solange wieder korrekt fortgesetzt, bis in die Spalte T (Spalte 20) kopiert werden sollte. Statt in die Spalte T wird nunmehr in die Spalte B kopiert.
Mir ist aufgefallen, dass das offensichtlich jede 10. Spalte betrifft, im weiteren wird somit anstatt in die Spalte AD (Spalte 30), dann in die Spalte C kopiert usw.
Nun hoffe ich auf eure kompetente Hilfe bei der Anpassung des Codes und bedanke mich dafür bereits im Voraus.
Viele Grüße
Fritz
Beispieldatei ist beigefügt:
https://www.herber.de/bbs/user/79147.xls