Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dynamischen Bereich per VBA ansprechen

Dynamischen Bereich per VBA ansprechen
11.01.2021 19:15:21
Tom
Ein hallo an die Excel-VBA-Experten,
ich habe (mit dem Makrorecorder) ein Makrocode gebastelt, welcher mir das markieren einer Spalte ab „Anfangszelle“ bis zur „Endzelle“ des Bereiches und anschließend das kopieren und einfügen der (durch Zellformeln berechneten Ergebnisse) als Werte an anderer Stelle der Tabelle einfügt.
Auszug aus dem Code:
Option Explicit
…
Range("DI5:DI354").Select
Application.CutCopyMode = False
Selection.Copy
Range("DG5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
…
Insgesamt wird dieser Teil-Code an 12 verschiedenen Bereichen wiederholt.
Da sich der zu bearbeitende Bereich (Anzahl der Zeilen = Datensätze) ändern kann, muß ich bisher das Ende des zu kopierenden Bereiches „:DI354“ vor der Ausführung des Makros prüfen und ggf. händisch präzisieren.
Ich suche nach einer Möglichkeit die Anpassung des Bereiches variabel durch das Makro auf die jeweils entsprechend letzte Zeile erledigen zu lassen.
Dazu habe ich mir in der Berechnungstabelle, in der Zelle „$B$3“ mit der Formel „=ANZAHL2(A:A)“ die letzte Zeile der Tabelle ausgeben lassen.
Leider gelingt es mir nicht, die „… 354 …“ durch den (variablen) Wert der Zelle „$B$3“ zu ersetzen.
Ein einfaches markieren der gesamten Spalte funktioniert nicht, weil in den „Kopfzeilen“ der Tabelle Spaltenbeschriftungen und Berechnungswerte stehen, die z.T. durch absolute Bezüge in den Zellen weiter unten verwendet werden und unterhalb der Tabelle diverse Summen / Auswertungen folgen.
Es wäre schön, wenn mir ein „wissender“ Mensch helfen könnte.
Ich bin im Forum leider nicht fündig geworden …
L.G.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamischen Bereich per VBA ansprechen
11.01.2021 19:42:46
Daniel
Hi
Range("DI5:DI" & Range("B3").Value).Select
Btw, in VBA ist es nicht notwendig, den Zellbereich erst zu selektieren und mit Selection die Aktion auszuführen, du kannst auch die Aktion (das .Copy) direkt an das Range anhängen (anstelle des Selects).
Für das .PasteSpecial gilt das gleiche.
Der Recorder muss so aufzeichnen, weil die Maus uns dazu zwingt so zu arbeiten, aber man sollte den Code diesbezüglich immer überarbeiten, weil er dadurch kürzer, schneller und weniger fehleranfällig wird.
Du kannst auch die Zelle B3 einsparen und die Berechnung in VBA ausführen:
Range("DI5:DI" & Worksheetfunction.CountA(Columns(1))).Copy
Gruß Daniel
Anzeige
AW: Dynamischen Bereich per VBA ansprechen
11.01.2021 20:05:24
Oisse
Meintest Du so?
Option Explicit
Sub SpaltenKopieren()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Dim i, lz, Startwert As Long
Dim Spalte, Spalte2 As String
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
Startwert = 5
Spalte = InputBox("Welche Spalte möchtest Du kopieren?", "Spalte wählen")
Spalte2 = InputBox("In welche Spalte möchtest Du einfügen?", "Spalte wählen")
With ws
lz = .Range(Spalte & "65636").End(xlUp).Row
.Range(Spalte & Startwert & ":" & Spalte & lz).Copy
.Paste Destination:=.Range(Spalte2 & Startwert)
End With
End Sub

Gruß Oisse
Anzeige
AW: Dynamischen Bereich per VBA ansprechen
12.01.2021 07:42:35
Tom
Hallo Daniel,
hallo Oisse,
danke für die schnelle Reaktion.
Ich melde mich wieder!
AW: Dynamischen Bereich per VBA ansprechen
12.01.2021 21:27:57
Tom
Hallo,
nach dem Praxistest der vorgeschlagenen Lösungen, hab ich mich für die Lösung von Daniel (erste Code-Zeile) entschieden, weil ich diese für mich leicher in den bestehenden VBA-Code integrieren kann.
Herzlichen Dank für eure Unterstützung und Hilfe.
Tom
Denkt weiter positiv, aber bleibt bitte nach Möglichkeit negativ!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige