3.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo, da ich leider nicht so gut in VBA bin, bitte ich um eure Hilfe!

Ich habe eine Exceltabelle in der ich im ersten Blatt Daten aus einer Datenbank bekomme. Diese Daten lese ich dann durch verschiedene Formeln im zweiten Tabellenblatt aus und muss diese dann einzeln je Spalte nach unten ziehen. Die Werte aus dem ersten Tabellenblatt sind jedoch immer unterschiedlich viele und demnach muss ich die Länge der Zeilen im zweiten Blatt immer anpassen. Nun die Frage, kann man das auch über ein Makro mittels eines Buttons realisieren mit dem ich nicht immer die Daten im zweiten Blatt erst löschen muss und dann immer wieder anpassen muss. Die Formeln sind alle da.
Und nur noch eines, mit einem zweiten Button sollen dann alle Werte aus dem zweiten Tabellenblatt in ein drittes Tabellenblatt übernommen werden und nicht die Formeln.
Ich bitte um eure Hilfe ich komme da einfach nicht weiter!
Vielen Dank schon mal!

14 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

hast du es schon mit Makro aufzeichnen versucht?

Sonst wäre es nicht schlecht eine Beispieltabelle zur Verfügung zu stellen

Gruß

Helmut
0 Punkte
Beantwortet von
Danke damit komme ich erstmal weiter, so kann ich mir schon mal den Quellcode angeben lassen, jetzt fehlt mir nur noch wie ich die Anzahl der Zeilen herausbekomme und diese dann auslese um dann so lange den Rest zu kopieren.
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

seh mal hier nach, da ist ein Lösungsansatz für die Zeilen und Spalten

www.supportnet.de/threads/1705745

Gruß

Helmut
0 Punkte
Beantwortet von
Danke habe jetzt schon mal die einzelnen Probleme gelöst weiß nur noch nicht wie ich diese zusammenfüge? Ich habe da mal folgendes gepostet:
In einem Makro von einer Tabelle in eine nächste wechseln (4 Hits)


Hallo ich habe folgendes Problem:

Ich habe eine Möglichkeit gefunden mir die Anzahl der Zeilen aus der Tabelle 1 ausgeben zu lassen. Wie folgt:
Option Explicit

Sub AnzahlZeilen()
Dim Anzahl As Long
On Error Resume Next
With ActiveSheet
.Range("A1").Select
Anzahl = .Columns("A").SpecialCells(xlCellTypeFormulas, 23).Count
Anzahl = Anzahl + .Columns("A").SpecialCells(xlCellTypeConstants, 23).Count
End With
MsgBox Anzahl
End Sub

Die MsgBox gibt mir dann den Wert aus nun möchte ich in das Tabellenblatt 3 wechseln und dann soll er folgenden Befehl machen:

Rows("2:2").Select
Selection.Copy
Rows("3:5712").Select
ActiveSheet.Paste
End Sub

Aber hier dann die 5712 mit der ermittelten Anzahl ersetzen!
Wie mache ich das in einem Makro?
Bitte um Hilfe, ich muss es heute noch schaffen!
Vielen Dank schon mal an euch!
0 Punkte
Beantwortet von
Hallo bin gerade noch einen Schritt weiter gekommen durch die Erklärung in dem anderen Post. Es sieht jetzt so aus:
Option Explicit

Sub AnzahlZeilen()
Dim Anzahl As Long
On Error Resume Next
With ActiveSheet
.Range("A1").Select
Anzahl = .Columns("A").SpecialCells(xlCellTypeFormulas, 23).Count
Anzahl = Anzahl + .Columns("A").SpecialCells(xlCellTypeConstants, 23).Count
Sheets("MASTER").Select
Rows("2:2").Select
Selection.Copy
Rows("3:5712").Select
ActiveSheet.Paste
End With
MsgBox Anzahl
End Sub

Nur wie kann ich jetzt den Wert aus der Anzahl in Rows("3:5712").Select einsetzen, wenn ich Anzahl anstatt 5712 schreibe macht er gar nichts mehr! Wie löse ich das Problem?
Danke für die Hilfe!
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

schreibe mal Anstatt

Rows("3:5712").Select

Rows("3:" & Range("A65536").End(xlUp).Row ).Select

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo er kopiert zwar einmal in die nächste Zeile aber leider nicht bis 5712! Gibt es noch eine andere Möglichkeit?
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

da deine Angaben etwas mager sind kann man nur raten wo deine Zeile mit den Daten aus der anderen Tabelle sind, versuch es mal so

Rows("3:5712").Select

Rows("3:" & Anzahl).Select

Gruß

Helmut
0 Punkte
Beantwortet von
Der Wahnsinn das passt :-) super vielen vielen Dank!!!!!!!

Nun nur noch eine Kleinigkeit: Kann ich die überschüssigen Zeilen in der Master Tabelle noch löschen durch einen Befehl? Der schreibt bis zur Anzahl z.B. 5671 und den Rest von vorher bis 5712 sind dann noch die Formeln in denen dann der Wert fehlt! Gibt es da noch eine Möglichkeit das er dann ab der "Anzahl" die Zeilen danach löscht?

Großen Dank
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

das Geht, da ich aber nicht weiss wie und wo die Anzahl, hier 5712, ermittelt wird, kann ich dir nicht sagen was du wie löschen musst.

Geht etwa so

Rows("3:" & Anzahl).Delete

Gruß

Helmut
...