Guten Morgen liebe VBAler,
ich habe folgenden Wunsch:
Soll-Zustand
Ich möchte zur Auwertung von Daten ein Add-in für mich erstellen, welches dazu führt, dass:
-
ausgeblendete Tabellenblätter gelöscht werden.
-
die Namen aller Tabellenblätter in ein neues Sheet (Zusammenfassungssheet) kopiert werden.
-
bestimmte Daten aus jedem Sheet ("E6:E77;O6:O77") in das "Zusammenfassungssheet" kopiert werden.
Das Problem welches ich habe ist, dass die Tabellensheets mittels eines Programms erzeugt werden, und für jeden Versuch individuell sind, das bedeutet:
-
die Reiter heißen in jedem Excelsheet anders.
-
je nach Fragestellung können es mehr oder weniger Reiter sein.
Ist-Zustand
Was ich bisher zustande gebracht habe ist folgendes:
-
Die ausgeblendeten Tabellenblätter werden gelöscht.
-
Die Individuellen Reiternamen, werden mir in ein neues Tabellenblatt kopiert. (Allerdings bin ich mit der Darstellung nicht wirklich zufrieden.)
Der Idealfall des Add Ins:
Gehen wir von fünf Reitern aus,
-
dann würde ein neues Tabellenblatt entstehen "Data"
-
in "Data" würde dann in A1: Reitername1, in C1: Reitername2, [...], in I1: Reitername5 stehen.
-
des weiteren würde in A2:B2 Range("E6:E77;O6:O77") aus Reitername1, in C2:D2 Range("E6:E77;O6:O77") aus Reitername2, [...], in I2:J2 Range("E6:E77;O6:O77") aus Reitername5 stehen.
Aktuell sieht mein Code dazu wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Sub ExcelExp_Short_Dataconclusion()
Dim wksWorksheet As Worksheet
For Each wksWorksheet In ActiveWorkbook.Worksheets
If wksWorksheet.Visible <> xlSheetVisible Then wksWorksheet.Delete
Next wksWorksheet
Dim wsNew As Worksheet
Set wsNew = Worksheets.Add
With wsNew
.Name = "Data"
.Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing
Dim ws As Worksheet
Dim X As Integer
X = 1
For Each ws In Worksheets
Cells(X, 1) = ws.Name
X = X + 1
Next ws
End Sub
|
Ich hoffe jemand kann mir helfen. Ein Riesendank im vorraus.
|