276 Aufrufe
Gefragt in Tabellenkalkulation von
Mein bisheriger Code:

Private Sub Button_Speichern_Click()

Dim T_Rech As Worksheet
Dim T_List As Worksheet
Dim Rech_Zelle As Long
Dim List_Zelle As Long
Dim arrTemp(), arrCopy()
Dim i As Long, j As Long: j = 2

Set T_Rech = ActiveWorkbook.Worksheets("Rechnung")
Set T_List = ActiveWorkbook.Worksheets("List")
List_Zelle = 2

arrTemp = T_Rech.Range("A11:E30")

For i = 1 To UBound(arrTemp)
If arrTemp(i, 1) <> "" Then
ReDim Preserve arrCopy(1 To 5, 1 To j)
arrCopy(1, j) = arrTemp(i, 1)
arrCopy(2, j) = arrTemp(i, 2)
arrCopy(3, j) = arrTemp(i, 3)
arrCopy(4, j) = arrTemp(i, 4)
arrCopy(5, j) = arrTemp(i, 5)
j = j + 1
End If
Next i

With T_List
Sheets("List").Range("A2") = Sheets("Rechnung").Range("C6")
.Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 4).Resize(UBound(arrCopy, 2),
5) = Application.Transpose(arrCopy)
End With

Range("C4").ClearContents
Range("C6").ClearContents
Range("A11:B30").ClearContents
Range("C4").Select

End Sub

Meine Frage
Die Liste in Tabelle Rechnung wird super in Tabelle List überommen und zwar in die
Spalte D bis H. Das ist Super.

Nun möchte ich jedoch in Spalte A in der Tabelle List noch eine fixe Re-Nummer aus
der Tabelle Rechnung welches immer in der Zelle C6 steht mitgeben. Was muss dazu
noch geändert werden?

3 Antworten

0 Punkte
Beantwortet von
Der Bereich mit:

Sheets("List").Range("A2") = Sheets("Rechnung").Range("C6")

kann hier ignoriert werden und gehört da nicht rein.

Gruss Seli
0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
Ich habe mal versucht dein Macro zu verstehen aber ich weiß nicht was du bei der recht kompakten schreibweise bei With T_List genau machst.

ich denke du könntest den Wert von C7 einfach mit ins Array schreiben udn das einfügen in die List bei A anstelle von D beginnen:


ReDim Preserve arrCopy(1 To 8, 1 To j)
arrCopy(1, j) = T_Rech.Range("C7").Value
arrCopy(2, j) = ""
arrCopy(3, j) = ""
arrCopy(4, j) = arrTemp(i, 1)
arrCopy(5, j) = arrTemp(i, 2)
arrCopy(6, j) = arrTemp(i, 3)
arrCopy(7, j) = arrTemp(i, 4)
arrCopy(8, j) = arrTemp(i, 5)
j = j + 1
End If
Next i

With T_List
Sheets("List").Range("A2") = Sheets("Rechnung").Range("C6")
.Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Resize(UBound(arrCopy, 2), 8) = Application.Transpose(arrCopy)
End With


also das Array hat dann 8 Spalten wobei 2 und 3 leerzeichen sind die so eingefügt werden, in Spalte 1 kommt immer der Wert von C7.

dann fügst du ja in Spalte 4 in die Liste ein, da habe ich einfach eine 1 draus gemacht, so dass in A der C7 Wert kommt, dann 2 leere Spalten und dann der Rest (und natürlich 8 und nicht 5 Spalten).

ok?
0 Punkte
Beantwortet von
Super,

Das ist es. Manchmal sehe ich vor lauter Bäumen den Wald nicht.

Noch eine letzte Frage.

In Zelle H werden Beträge geschrieben.

Angenommen, die Liste enthält 5 Zeilen, soll nun neben letzter Zeile die Totalsumme in Zelle I ausgegeben werden.

Grüsse Seli
...