Office: Zeilen einfügen / Zeilen verknüpfen

Helfe beim Thema Zeilen einfügen / Zeilen verknüpfen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Office- Hilfe Gemeinde! ich arbeite an einem Projekt in dem Produkte mit Projekten verbunden werden. Beide Klassen sind in Tabellen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von m10, 29. Juli 2010.

  1. M10
    m10 Erfahrener User

    Zeilen einfügen / Zeilen verknüpfen


    Hallo Office- Hilfe Gemeinde!

    ich arbeite an einem Projekt in dem Produkte mit Projekten verbunden werden. Beide Klassen sind in Tabellen aufgelistet. Auch gibt es für jedes Produkt sowie Projekt einen Zeitplan.

    1. Problem:
    Nun bräuchte ich eine Möglichkeit jeweils neue Einträge für Produkte und Projekte einzufügen und das immer nach Wahl der Produktklasse. Also Auswahl "PK1" --> Neue Zeile nach letztem "PK1" Eintrag. Idealerweise wäre eine Eingabe über ein Formular, dies ist mir allerdings gerade wegen diesem Kriterium nicht gelungen. Ich habe zwar ein Makro zum Laufen gekriegt, aber dafür muss ich die Zeile vorher markieren und jede Zeile wird dann über InputBoxen befüllt, auch der Zeitstrahl. Mit dieser Lösung bin ich sehr unzufrieden, da eine Eingabe "von Hand" genauso gut ist. Hat jemand hierzu Ideen, oder Lösungsansätze???

    2.Problem:
    Ich bräuchte noch eine Möglichkeit eine 3. Tabelle zu erstellen, indem ich ein Produkt auswähle und dazu in einer Listbox/ Combobox die dafür relevanten Projekte auwähle. Diese werden dann untereinander in dieser 3. Tabelle aufgelistet (ähnlich MS Projekt von der Darstellung ) . Ist es daher möglich die Spalten in Excel als "Datensatz" zu definieren mit denen man dann solche Möglichkeiten hat??

    Ich hoffe alles verständlich beschrieben zu haben, ich wirklich nicht weiter weiß und überfordert bin. Kann mir jemand zu einem meiner Probleme Hilfestellung geben oder einen guten Tipp?? Alles ist willkommen und wird dankbar angenommen!
     
  2. Exl121150 Erfahrener User
    Hallo,

    zu Deinem 1. Problem habe ich ein Formular entwickelt, das man über einen Button im Arbeitsblatt aufrufen kann. In diesem sind 5 Comboboxen enthalten und 3 Eingabetextfelder.
    Die 5 Comboboxen müssen alle sichtbare Werte enthalten, damit der Button zum Einfügen der Werte ins Arbeitsblatt aktiviert wird.

    In den Formularcode habe ich Kommentar integriert, um die wichtigste Funktionalität zu beschreiben (insbesondere die Variablen, die aufs Arbeitsblatt zugreifen).
     
    Exl121150, 30. Juli 2010
    #2
  3. M10
    m10 Erfahrener User
    Wow ! Hätte nie eine schnelle und so gute Lösung erwartet! Perfekt , danke Dir ! Ich gehe gerade deinen Code, Schritt für Schritt, durch und muss gestehen dass ich das nie so hinbekommen hätte. Vielen Dank dafür !
     
  4. Exl121150 Erfahrener User

    Zeilen einfügen / Zeilen verknüpfen

    Hallo,

    um erfolgreich zu sein, musst Du die Click-Ereignisbehandlungsroutine des Buttons 'cmdEinfügen' ändern, und zwar die roten Stellen im folgenden Code:

    Die 1. mehrzeilige rot gekennzeichnete Passage im bisherigen Code hat in der Variable LstZl1& die 1. Zeilennummer ermittelt, in der die im Formular enthalten Produktklasse enthalten ist, und in der Variable LstZl2& die Zeilennummer des letztmaligen Auftretens dieser Produktklasse, wobei das die entscheidende Zeilennummer ist, da Du ja bisher gefordert hast, die Neueinträge im Anschluss an diese Zeile durchzuführen.
    Wenn Du jetzt diesen roten Code durch folgenden ersetzt:
    Code:
      With Selection
        'Überprüfe, ob die Auswahl maximal 1 Zelle hoch ist:
        If .Rows.Count <> 1 Then MsgBox "Es muss exakt 1 Zelle oder 1 Zeile ausgewählt sein!": Exit Sub
        'RgLst ist die Zelle, die sich in der Auswahlzeile und Produktklassen-Spalte befindet:
        Set RgLst = .EntireRow.Cells(RgLst.Column)
      End With
      I& = 0
      'Die Zelle 'RgLst' wird überprüft, ob sie leer ist (sie muss normalerweise eine Produktklasse enthalten)
      If RgLst.Value = "" Then
        Set RgLst = RgLst.Offset(-2, 0)
        I& = 2
        'Die Zelle der vorherigen Datenzeile wird überprüft, ob sie leer ist:
        If RgLst.Value = "" Then
          MsgBox "In der ausgewählten oder vorherigen Zeile muss eine Produktklasse vorhanden sein": Exit Sub
        End If
      End If
      'Die Zeilennummer von 'RgLst' wird ermittelt:
      LstZl2& = RgLst.Row
    passiert Folgendes:
    Du kannst entweder die ganze Zeile markieren, in die Du die neuen Daten des Formulars einfügen willst, oder Du brauchst auch nur die aktive Zelle in diese Zeile stellen. Auf alle Fälle werden zuerst die Daten dieser Zeile kopiert und dann wieder eingefügt, wobei die bisherigen Daten ab dieser Zeile 2 Zeilen hinunter verschoben werden. Daraufhin werden in der Zeile mit der aktiven Zelle die Daten des Formulars eingetragen. Diese Vorgehensweise hat den großen Vorteil, dass alle bereits vorhanden Formatierungen der bestehenden Zeilen auch in der neuen Zeile vorhanden sind.
    Es gibt aber in diesem Fall einen kleinen Sonderfall: Was passiert, wenn Du an die letzte Zeile Zeilen anfügen willst? In diesem Fall darfst Du noch die Markierung in die 1. freie Datenzeile unterhalb der bisherigen Datenzeilen stellen.
    Um das korrekt abzuwickeln, musst Du noch den einsamen roten "2" ändern in I&
    sodass der Code in dieser Zeile lautet:
    Code:
      With WsProdBlatt.Rows(LstZl2& + I&)
    Für das korrekte Funktionieren des Ganzen genügt es, wenn der Code, der beim Arbeitsblatt-Button hinterlegt ist, wie folgt lautet (Er ist im allg.Codemodul 'Modul1' enthalten):
    Code:
    'Makro, das vom Button 'Produktklasse/Projekt erfassen' aufgerufen wird:
    Sub ProduktProjekt()
        FormProduktProjekt.Show
        Set FormProduktProjekt = Nothing
    End Sub
    ACHTUNG: EDIT: Ich habe für den Sonderfall eine verbesserte Lösung oben eingebaut.
     
    Exl121150, 2. August 2010
    #4
  5. M10
    m10 Erfahrener User
    Vielen Dank für die ausführliche Hilfe. Der Code übertrifft sogar meine Erwartungen und funktioniert einwandfrei in dem Beispieldokument.
    Wenn ich allerdings das auf mein Originaldokument übertrage kriege ich


    Code:
      With Selection
        'Überprüfung , ob die Auswahl maximal 1 Zelle hoch ist:
        If .Rows.Count <1> werden in dieser Zeile die neuen Daten eingefügt
        ' Ist sie nicht leer -> werden die neuen Daten 2 Zeilen tiefer eingefügt.
        If .Cells(1).Value = "" Then I& = 0 Else I& = 2
        'RgLst ist die Zelle, die sich in der Auswahlzeile und Produktklassen-Spalte befindet:
       [color=red] Set RgLst = .EntireRow.Cells(RgLst.Column)[/color]
      End With
      'Die Zelle 'RgLst' wird überprüft, ob sie nicht leer ist (sie muss Produktklasse enthalten)
      If RgLst.Value = "" Then MsgBox "In der ausgewählten Zeile muss eine Produktklasse vorhanden sein": Exit Sub
      'Die Zeilennummer von 'RgLst' wird ermittelt:
      LstZl2& = RgLst.row
    ...eine Fehlermeldung. Was kann hier der Grund sein?

    Gruß, m10
     
  6. M10
    m10 Erfahrener User
    With Selection
    'Überprüfung , ob die Auswahl maximal 1 Zelle hoch ist:
    If .Rows.Count <1> werden in dieser Zeile die neuen Daten eingefügt
    ' Ist sie nicht leer -> werden die neuen Daten 2 Zeilen tiefer eingefügt.
    If .Cells(1).Value = "" Then I& = 0 Else I& = 2
    'RgLst ist die Zelle, die sich in der Auswahlzeile und Produktklassen-Spalte befindet:
    Set RgLst = .EntireRow.Cells(RgLst.Column)
    End With
    'Die Zelle 'RgLst' wird überprüft, ob sie nicht leer ist (sie muss Produktklasse enthalten)
    If RgLst.Value = "" Then MsgBox "In der ausgewählten Zeile muss eine Produktklasse vorhanden sein": Exit Sub
    'Die Zeilennummer von 'RgLst' wird ermittelt:
    LstZl2& = RgLst.row
     
  7. Exl121150 Erfahrener User
    Hallo,

    da Du mir zwar die Fehlerzeile mitgeteilt hast, aber nicht die Art des Fehlers, muss ich etwas raten:
    Es sieht so aus, als ob es ein Problem mit der Bereichsobjektvariablen 'RgLst' gäbe:
    1) Sie muss in der Sub deklariert sein (1.blau gekennzeichnete Stelle): Dim ..., RgLst As Range
    2) Es muss ihr ein Bereichsobjekt zugewiesen werden (2. blaue Stelle): Set RgList = RgProdKlasse, bevor auf sie zugegriffen werden kann. Dabei wird in meiner Beispieldatei die Bereichsvariable 'RgProdKlasse' im allgem.Codemodul 'Modul1' als Public RgProdKlasse As Range deklariert und ihr in der UserForm_Initialize-Methode des Formulars mittels Set RgProdKlasse = WsProdBlatt.Range("E8") die 1. Zelle der Produktklassen zugewiesen.
    3) Damit müsste sie eindeutig festgelegt sein und somit verwendbar sein.
    4) In der Fehlerzeile wird die Column-Eigenschaft von RgLst verwendet (da Zelle E8 in der 5. Spalte von 'Tabelle1' liegt, ergibt RgList.Column eine 5).
    5) Somit wird in der Fehlerzeile das 'Selection'-Objekt herangezogen (das bewirkt der Punkt vor 'EntireRow' innerhalb des 'With'-Blocks), wobei dieses zu einer ganzen Zeile (EntireRow) erweitert wird (falls es nicht schon eine ganze Zeile ist); in dieser Zeile wird der Bereich der 5. Zelle als Bereichsobjekt der Variablen RgLst zugewiesen (Set RgLst = ...)

    Kann es sein, dass in Deinem Projekt irgendwo in vorgenannter Aufzählung etwas fehlt? Das könnte die Erklärung für das unterschiedliche Verhalten des Codes in der Fehlerzeile sein.

     
    Exl121150, 5. August 2010
    #7
  8. M10
    m10 Erfahrener User

    Zeilen einfügen / Zeilen verknüpfen

    Hallo!

    Danke für die Hilfe, die Bereichsvariable im Modul war nicht richtig deklariert.

    Nun kämpf ich mit einem neuen Fehler :-(

    Und zwar bekomme ich "Mehrdeutiger Name: WsProdBlatt"


    Code:
    Private Sub UserForm_Initialize()
    
      'Arbeitsblatt, auf das sich dieses Formular bezieht:
       Set [color=red]WsProdBlatt[/color] = Worksheets("Roadmaps (2)")
       
      'Arbeitsblattzelle, in der sich der 1.Eintrag für die Produktklasse befindet:
       Set RgProdKlasse = WsProdBlatt.Range("E9")
       
      'Arbeitsblattzelle, in der sich der 1.Eintrag der Quartalsüberschrift befindet:
       Set RgPhasenAnfang = WsProdBlatt.Range("K6")
       
    End Sub 

    Habe versucht anhand der F1- Hilfe und dem Beispiel eine Lösung zu basteln, dabei verstrick ich den Code nur durcheinander und komme zu keinem Ergebnis, da ich mir nicht mal sicher bin was ich da eigentlich mache
    :-?

    Neue Idee ? Ansatz?? ...


    Vielen Dank
    Gruß, m10
     
  9. Exl121150 Erfahrener User
    Hallo,

    Du musst offenbar den Bezeichner "WsProdBlatt" an mindestens 2 Stellen deklariert haben, wobei vom Compiler beide Deklarationen an dieser Stelle als gültig betrachtet werden - und somit der Compiler nicht weiß, für welche Deklaration er sich entscheiden soll.
    Man sollte daher beim Programmieren möglichst vermeiden: einen Namen mehrfach zu vergeben.
    Ich habe dem Arbeitsblatt, in das die Daten des Formulars eingefügt werden, den Namen "WsProdBlatt" gegeben, und Du musst darüber hinaus noch irgendetwas so benannt haben, was den Compiler an dieser Stelle vor die Qual der Wahl stellt. Wenn Du diesem 2. Ding einen anderen Namen gibst, müsste der Fehler behebbar sein. Ich habe bei meiner Datei mehrere Namens-Konstellationen durchprobiert und bekam die verschiedensten Fehlermeldungen - aber leider nicht genau diese.

    Nachfolgend noch die Microsoft-Hilfe zum Stichwort "Mehrdeutiger Name", wo beschrieben wird, dass dieser Fehler in 2 typischen Konstellationen auftreten kann:
     
    Exl121150, 9. August 2010
    #9
  10. M10
    m10 Erfahrener User
    Hallo nochmal,

    ich wunder mich nur über die Fehlermeldung, da ich nichts zusätzlich deklariert habe. Ich habe lediglich den Code für das Formblatt und das Modul1 in meine Originaldatei rüberkopiert. Diese Originaldatei ist vom Aufbau genau wie die Beispieldatei. Nur die Arbeitszellen für den 1. Eintrag der Produktklasse und Quartalsüberschrift , sowie der Name der Tabelle wurden entsprechen abgeändert.
    Im gesamten Projekt wird "WsProdBlatt" (so wie ich das sehe) nur noch beim Einfügen angesprochen.
    Habe das Gefühl das es kein großer Fehler ist, da nur Kleinigkeiten abgeändert wurden und es im Beispielprogramm tadellos funktioniert. Wenn es funktionieren würde, dann könnte ich das auf die Technologien übertragen (2.Tabelle in Beispieldatei) und mein kleines Projekt wäre abgeschlossen.

    Deshalb würde ich gerne wissen, wie ich an das Problem rangehe? Damit ich mir in Zukunft selber zu helfen weiss.

    Danke für jede Info!

    Gruß
    m10
     
  11. M10
    m10 Erfahrener User
    Das Problem ist gelöst. Vielen Dank für deine Zeit. Du bist eine Super Hilfe.

    Grüße, m10
     
Thema:

Zeilen einfügen / Zeilen verknüpfen

Die Seite wird geladen...
  1. Zeilen einfügen / Zeilen verknüpfen - Similar Threads - Zeilen einfügen Zeilen

  2. Wenn ein Wert ein einer Spalte, dann komplette Zeile im anderen Blatt untereinander einfügen.

    in Microsoft Excel Hilfe
    Wenn ein Wert ein einer Spalte, dann komplette Zeile im anderen Blatt untereinander einfügen.: Hallo, kann mir jemand bitte bei folgenderm Helfen. Habe etwas ähnliches gefunden was ich brauche, nur noch eine kleine Änderung ist notwendig. Aufgabe: Es wird geprüft, ob in Spalte Q ein Wert...
  3. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  4. Per VBA Zeilen einfügen und danach in diese Texte kopieren

    in Microsoft Excel Hilfe
    Per VBA Zeilen einfügen und danach in diese Texte kopieren: Hallo zusammen, ich möchte im 1. Schritt via VBA-Code eine bestimmte, variable Anzahl Zeilen (der Wert wird immer im Reiter "Data" in der Zelle S32 ermittelt) in einem anderen Reiter namens...
  5. Nach jeder Zeile eine neue einfügen

    in Microsoft Excel Hilfe
    Nach jeder Zeile eine neue einfügen: Hi zusammen, ich habe eine Excel mit ungefähr 600 Zeilen. Jetzt würde ich gerne nach jeder einzelnen der Zeilen zwei weitere (leere) Zeilen einfügen. Gibt es einen Trick, wie das schneller geht,...
  6. Zeilen in Excel automatisch alle paar Zeilen einfügen

    in Microsoft Excel Hilfe
    Zeilen in Excel automatisch alle paar Zeilen einfügen: Hallo, ich bin über die Googlesuche hier gelandet und dachte ich hätte auch die Lösung für mein Problem schon gefunden. Doch der Beitrag war von 2006 und schon beim Eingeben in MS Office...
  7. Zeile einfügen per Button Klick möglich?

    in Microsoft Excel Hilfe
    Zeile einfügen per Button Klick möglich?: Guten Morgen. Ist es möglich, dass man per Klick auf einen Button (siehe bitte Anhang) eine Zeile einfügen kann? Konkretes Beispiel: Klick mit der Maus in das Feld A3 Wenn ich jetzt auf den...
  8. Per vba Zeile einfügen

    in Microsoft Excel Hilfe
    Per vba Zeile einfügen: Hallo zusammen, ich möchte gerne in einer Tabelle per vba eine neue Zeile einfügen wenn in Spalte A ein Eintrag getätigt wird. Die Zeile soll über der Zeile mit dem Eintrag in Spalte A eingefügt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden