Hallo Zusammen,
ich kenne mich mit VBA für Excel wahrlich nicht besonders aus, benötige es aber für wiederkehrende Buchungen. Folgendes Problem:
* iin meiner selbstgetrickten Exel Anwendung mache ich neue Buchungen auf einem extra Tabellenblatt und übertrage diese neuen Buchungen dann "per Knopfdruck" auf ein separates Tabellenblatt "Datenbank". Von dieser im Regelfall schreibgeschützten Datenbank werden dann spezifische Auswertungen mittels Pivot Tabellen auf wiederum einem separaten Tabellenblatt erstellt. Dieses Procedere hat sich grundsätzlich so bewährt.
* jetzt will ich allerdings gerne auf dem Tabellenblatt "Datenbank" zusätzliche Rechenvorgänge automatisieren. Z.B. sollen weitere Spalten angefügt werden und dort z.B. aus dem vorgegebenen Bruttobetrag und dem vorgebenen MWSt Satz automatisch die enthaltene MWSt berechnet werden. Die Formeln dazu wie üblich in den Zellen dieser Spalte im Tabellenblatt "datenbank"vorab hinterlegt.
* wenn ich jetzt neue Datensätze an die "Datenbank" sende, dann gelingt zwar die Übertragung genau Dieser daten, aber die anschließend gewünschte automatische Weiterberechnung in den zusätzlich in der "Datenbank" eingefügten Spalten funktioniert nicht.
* ich vermute als Grund eine Einstellung von Excel beim Einfügen neuer Zeilen, die im Regelfall ihre Berechtigung haben mag, im vorliegenden Fall allerdings nicht. Ich denke, durch entsprechende Ergänzung des bestehdenen VBA Makros zur Datenübertragung müsste das Problem lösbar sein. Mein aktuelles makro hierzu lautet wie folgt.
Sub BuchenAUS()
Dim oWsQ As Worksheet, oWsZ As Worksheet
Dim rngQ As Range
'setzt Verweis auf Quellblatt
Set oWsQ = Worksheets("AUS-EINGABEN")
'setzt Verweis auf Zielblatt
Set oWsZ = Worksheets("AUS-DATENBANK")
'Fehlerüberwachung ausschalten
On Error Resume Next
'setzt Verweis auf Zellen mit Werten im Quellblatt
Set rngQ = oWsQ.Rows("2:" & Rows.Count).SpecialCells(xlCellTypeConstants)
'Fehlerüberwachung einschalten
On Error GoTo 0
'wenn Zellen mit Werten vorhanden sind
If Not rngQ Is Nothing Then
'Zielblatt freigeben
oWsZ.Unprotect
'kopiere ganze Zeile(n) der Zellen mit Werten
Application.Intersect(oWsQ.Rows, rngQ.EntireRow).Copy
'unter letzte belegte Zelle in Spalte 1 des Zielblattes
With oWsZ.Cells(Rows.Count, 1).End(xlUp).Offset(1)
'Werte einfügen
.PasteSpecial xlValues
'Formate einfügen
.PasteSpecial xlFormats
End With
'Zwischenablage leeren
Application.CutCopyMode = False
'Zielblatt schützen
oWsZ.Protect
'Zellinhalte des Quellbereiches löschen
rngQ = ""
End If
End Sub
Könnt Ihr mir einen Tipp geben, wie das Makro umzuschreiben ist?? oder alternativ einen anderen einfachen Lösungsansatz für meine Fragestellung. (es hat allerdings seinen Grund, warum ich die genannten Berechnungen erst im "datenblatt" und nicht bereits vorher auf dem Eingabeblatt machen möchte)
Lieben Dank im vorhinein
Bernd
|