Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1187
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    gunse68 gunse68 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    2
    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
     

  2. #2
    gunse68 gunse68 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    2
    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 Zeile
    Code :
    1
    
    Sheets(Worksheets.Count).Cells(1, 1) = Titel
    und weglassen des Funktionsaufrufes =TEIL(ZELLE("Dateiname");FINDEN("]";ZELLE("Dateiname"))+1;31) in der Zelle A1 funktioniert jetzt auch sverweis wie es soll.
    Geändert von gunse68 (04.09.10 um 22:15 Uhr) Grund: Lösung gefunden
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 19.08.09, 14:27
  2. [Excel] Inhalt einer Excel Datei als neues Tabellenblatt einfügen
    Von hauke1981 im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 14.12.08, 19:02
  3. Inhalt und Format einer Zelle in einer Formel ausgeben
    Von mig40soft im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 21.11.08, 06:23
  4. Inhalt einer Excel-Zelle
    Von broetchen im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 23.08.05, 16:02
  5. EXCEL - Inhalt einer Zelle markieren
    Von pinocc im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 07.12.04, 13:39