ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
1187
1187
EMPFEHLEN
-
Hallo erst mal,
ich habe beim rumstöbern festgestellt, dass hier die VBA-cracks sitzen, die mir hoffentlich bei meinem Problem behilflich sein können.
Ausgangssituation:
Tabellenblatt 1: Stammdatenblatt mit Datensätzen (u.a. Namen, Adressen etc); je Datensatz eine Zeile; dieses Tabellenblatt ändert sich von Jahr zu Jahr (Struktur bleibt gleich nur die Anzahl der Datensätze ändert sich)
Tabellenblatt 2: Wertetabelle, aus dem Stammdatenblatt wird zeilenweise der jeweilige Name übernommen und individuell um Werte ergänzt
Tabellenblatt 3: Auswerteblatt; in einem vorgegebenen Formblatt werden sowohl Daten vom Stammblatt als auch Daten aus der Wertetabelle mithilfe der Funktion sverweis übernommen und dann ausgedruckt
Problem:
ich brauche für jeden Datensatz im Stammblatt ein Auswerteblatt (z.Zt. mache ich das über copy/paste und manuelles umbenennen und anpassen der Funktion sverweis bezüglich des Suchkriteriums
)
gedachte Lösung:
über eine Schleife soll vom Stammblatt der Name aus der Zelle erfasst werden, dann das Auswerteblatt kopiert und mit dem entsprechenden Namen benannt werden, dann der nächste Name usw. bis alle Datensätze erfasst sind
Gibt es eine Möglichkeit in sverweis als Suchkriterium den Tabellennamen zu verwenden?
Ich freue mich auf eure Lösungsvorschläge
MfG
Gunnar
Ich habe jetzt noch ein wenig tiefer gesucht und auch schon vergleichbare Sachen gefunden, habe aber das Problem, dass meine Programmierkünste mit Turbopascal 6 geendet haben und ich nie wirklich in die objektorientierte Geschichte reingefunden habe. Ich blicke also absolut nicht durch, welche Objekte mit welchen Handles ich einsetzen kann und muss...
Aber hier vielleicht schon mal ein Stückchen Code, das für mich ganz passabel aussieht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Public Sub NeueTabellenausNamen() Dim intAnzahl As Integer, intZaehler As Integer Dim blnTest As Boolean Dim objSheet As Variant intAnzahl = Sheets("Stammdaten").Range("B4") /hier soll die Anzahl der Durchläufe anhand der Anzahl der Datensätze erfasst werden For intZaehler = 1 To intAnzahl /die Überprüfung, ob es das Tabellenblatt schon gibt blnTest = False For Each objSheet In Sheets If objSheet.Name = Sheets("Stammdaten").Range("B4").Value Then blnTest = True Exit For End If Next objSheet If Not blnTest Then /hier das erstellen und benennen der Tabellenblätter Sheets("Auswertung").Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = Sheets("Stammdaten").Range("B4").Value End If Next intZaehler End Sub
Sheets("Stammdaten").Range("B4").Value
in rot markiert das besagte Problem mit den Objekten und ihren Eigenschaften - ich weiß gar nicht ob es das gibt, was ich mir da ausgedacht habe; dass das nicht läuft muss ich nicht erwähnen oder
Geändert von gunse68 (04.09.10 um 17:11 Uhr) Grund: Ergänzung Code
-
Nochmal hallo,
wenn man lange genug probiert, kriegt man`s doch ans Laufen...
Der Code macht schon was ich will:
Code :1 2 3 4 5 6 7 8 9 10 11 12
Sub NeueTabellenausNamen() Dim i As Integer Anzahl = WorksheetFunction.CountA(Sheets(1).Range("B2:B200")) For i = 1 To Anzahl Titel = Sheets(1).Cells(i + 1, 2).Value ActiveWorkbook.Sheets(3).Copy After:=Worksheets(Worksheets.Count) Sheets(Worksheets.Count).Name = Titel Next End Sub
Das geht bestimmt noch schöner, aber wie schon erwähnt, es läuft.
Das Problem mit dem sverweis entpuppt sich als schwieriger.
Den Namen des Tabellenblattes lasse ich mit =TEIL(ZELLE("Dateiname");FINDEN("]";ZELLE("Dateiname"))+1;31) in Zelle A1 eintragen.
Dann habe ich =SVERWEIS($A$1;Ergebnisse!B2:E4;3;FALSCH)in Zelle B2; kriege jetzt aber auf allen Blättern den gleichen Eintrag. Erst wenn ich das einzelne Blatt aktualisiere, korrigiert er das, trägt mir aber die aktualisierten Werte wiederum auf allen Blättern ein
Hat für dieses Problem jemand eine Lösung parat?
MfG
Gunnar
ok, auch wenn das hier zu einem Selbstgespräch mutiert, nach ein wenig Spielerei habe ich auch das o.g. Problem gelöst.
Nach ergänzen des Codes um die Zeileund weglassen des Funktionsaufrufes =TEIL(ZELLE("Dateiname");FINDEN("]";ZELLE("Dateiname"))+1;31) in der Zelle A1 funktioniert jetzt auch sverweis wie es soll.Code :1
Sheets(Worksheets.Count).Cells(1, 1) = Titel
Geändert von gunse68 (04.09.10 um 22:15 Uhr) Grund: Lösung gefunden
Ähnliche Themen
-
Excel Zelle mit Inhalt und Formatierung in anderen Zelle kopieren
Von KlaDi im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 19.08.09, 14:27 -
[Excel] Inhalt einer Excel Datei als neues Tabellenblatt einfügen
Von hauke1981 im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 14.12.08, 19:02 -
Inhalt und Format einer Zelle in einer Formel ausgeben
Von mig40soft im Forum Office-AnwendungenAntworten: 2Letzter Beitrag: 21.11.08, 06:23 -
Inhalt einer Excel-Zelle
Von broetchen im Forum .NET CaféAntworten: 6Letzter Beitrag: 23.08.05, 16:02 -
EXCEL - Inhalt einer Zelle markieren
Von pinocc im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 07.12.04, 13:39





Zitieren
Login




