Vorschlag
05.02.2016 23:11:38
Michael
Hi zusammen,
aaalso, mit Word habe ich schon ewig nicht mehr gearbeitet, und mit einer "in Word geöffneten Excel-Tabelle" schon gar nicht.
Der hier verfolgte Ansatz ist, schlicht in der "Job-Tabelle" ein Tabellenblatt "Form für Rechnung" einzufügen, hier alle Aktionen vorzunehmen, und wenn die Rechnung fertig ist, den Tabellenausschnitt (händisch) über die Zwischenablage in Word zu kopieren.
So ist es zumindest am Simpelsten zu programmieren:
Option Explicit
' in Tabelle1 (Daten) *********************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim z1&, z2& ' z wie Zeile; & heißt so viel wie "as long"
Dim i& ' Laufvariable
Dim spalten As Variant
z1 = Target.Row
If z1 > 1 And Target.Value "" Then
spalten = Array("D", "A", "B", "G", "J", "I")
z2 = Sheets("Form für Rechnung").Range("A" & Rows.Count).End(xlUp).Row + 1
For i = 1 To 6
Sheets("Form für Rechnung").Cells(z2, i) = Cells(z1, spalten(i - 1))
Next
Cancel = True
End If
End Sub
bzw. noch:
Option Explicit
'Modul 1 ********************
Sub summeEinfuegen()
Dim z2& ' z wie Zeile; & heißt so viel wie "as long"
With Sheets("Form für Rechnung")
z2 = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("I2:N4").Copy .Range("A" & z2)
.Range("F" & z2).FormulaLocal = "=summe(F2:F" & z2 - 1 & ")"
' wenn nicht gewünscht, eben auskommentieren ....
.Range("I7:N7").Copy ' hier kann man ein Format definieren
.Range("A2:A" & z2 - 1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
' bis hierher ........
.Range("F" & z2).Select
End With
End Sub
Sub neueRechnung()
Dim z2& ' z wie Zeile; & heißt so viel wie "as long"
With Sheets("Form für Rechnung")
z2 = .Range("E" & .Rows.Count).End(xlUp).Row
If z2
Die Datei: https://www.herber.de/bbs/user/103321.xlsm
Schöne Grüße,
Michael
P.S.: Evtl. kannst Du die 19% noch runden, hab ich vergessen. Wenn, dann bitte in Zelle N3, z.B.:
=RUNDEN(N2*0,19;2)