Dynamischen Tabellenbereich kopieren via Button
#1
Hallo werte Excel-Freunde,

Ich arbeite zur Zeit an einem Rechnungslegungssystem für Katasteraufträge auf Basis von Excel und hänge gerade an einem VBA-Problem.

Für die Rechnung muss ich die Auftragsinhalte einfügen. Diese setzen sich vorerst aus 3 separaten Bereichen (Tabellenblätter: FB, GeA und GrW) zusammen.
Die Berechnungen der einzelnen Bereiche werden dabei in den jeweiligen Tabellenblätter ausgeführt, deren Berechnungsdaten mit einem weiteren Tabellenblatt verknüpft sind. Die Reiter FB und GeA sind bereits mit einem VBA-Code zur automatischen Ein- und Ausblendung von bestimmten Zeilen versehen.


Leider bin ich in der schönen VBA-Welt nicht sehr bewandert, habe schon in verschiedenen Foren und Seiten nach interessanten Lösungen geschaut. Allerdings fällt mir die Umsetzung und Anpassung an meine Vorlagen schwer.

Folgende Probleme will ich per VBA lösen:

- Ein Klick-Steuerelement soll in den jeweiligen Berechnungstabellen (FB, GeA, GrW) eingefügt werden. Dieser soll den VBA-Code ausführen in dem er die jeweiligen ausgefüllten Tabellen in das Tabellenblatt "Bescheid" hineinkopiert, und zwar ab der roten Markierung (Zelle A70)
- Die Spaltenanzahl ist fest (A-G, also 7 Spalten), lediglich lassen sich bestimmte Zeilen bereits per VBA ein und ausblenden. (Im Reiter GeA ist dieser mit der Anzahl der Gebäudeteile verknüpft). Diese dynamischen Bereichen sollen beim kopieren dementsprechend berücksichtigt werden. Die Spaltenbreite von A-G stimmen zwischen "Bescheid" und den 3 anderen Tabellenblätter überein.
- Es kann vorkommen, das für manche Aufträge mehrere Tabellen kopiert werden müssen. Hierbei soll das Makro automatisch erkennen ob eine Tabelle bereits eingefügt wurde und die weiteren tabellen immer mit einer Zeile Abstand darunter gesetzt werden. Außerdem soll nach dem Kopiervorgang auf den 3 Berechnungsblättern als Schutz vor versehentlichem mehrfachdrücken das Tabellenblatt "Bescheid" aufgerufen werden.

Ich habe eine Arbeitsmappe für interessierte Helfer vorbereitet und stelle diese zur Verfügung.


Angehängte Dateien
.xlsm   VBA_Test.xlsm (Größe: 52,06 KB / Downloads: 15)
Top
#2
Hallo

passt es so?

Code:
Sub prc_kopieren()
   Dim lngZiel As Long
   Dim lngLetzte As Long
   Dim rngBereich As Range
   lngLetzte = Cells(Rows.Count, 7).End(xlUp).Row
   Set rngBereich = ActiveSheet.Range("A1:G" & lngLetzte)
   With Sheets("Bescheid")
       lngZiel = .Cells(.Rows.Count, 2).End(xlUp).Row + 2
       If lngZiel < 70 Then lngZiel = 70
''      wenn nur die eingeblendeten Zeilen kopiert werden sollen
       rngBereich.SpecialCells(xlCellTypeVisible).Copy .Range("A" & lngZiel)
''      wenn auch die ausgeblendeten Zeilen kopiert werden sollen
'        rngBereich.Copy .Range("A" & lngZiel)
       Application.CutCopyMode = False
       .Select
   End With
End Sub

MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • andifreak
Top
#3
Hallo Tom,

Das ist genau das was ich wollte und es funktioniert einwandfrei. Vielen herzlichen Dank! :100:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste