Makro mit dynamischen Feldbeziehungen
#1
Hallo zusammen,

ich habe eine Kontaktliste, die verschiedene Unterteilungen hat, im Bsp 2 Stück.
Es soll jeweils möglich sein, in die Zeilen (Maskenzeile) über den Tabellen neue Kontakte einzugeben und dann mit einem Makro zur Tabelle hinzuzufügen.
Ablauf:
Zelle in der Tabelle einfügen --> Maskenzeile markieren --> Strg+x --> in die neu eingefügten Zellen kopieren --> fertig

Das Problem das ich habe ist, wenn ich oben einen Eintrag hinzufüge, wird der Bezug der Maskenzeile der unteren Tabelle nicht geändert und ein neuer Eintrag in die untere Tabelle ist nicht möglich.
Wie schaffe ich es, dass die Maskenzeilen in den Makros "flexibel" sind, d.h. die Bezüge im Makro sich ändern je nachdem ob Zeilen gelöscht oder hinzugefügt werden.

Viele Grüße
-DieMelone


Angehängte Dateien
.xlsm   bsp_mail_adressen.xlsm (Größe: 17,89 KB / Downloads: 4)
Top
#2
Hallöchen,

mal zwei Teile:

1. Wie füge ich ein eine "intelligente" Tabelle oder Liste eine Zeile ein?
Wenn Du das etwas besser machst, nimmst Du auch die entsprechenden Möglichkeiten - schaue mal ins Kontextmenü der Tabelle.
Ich habe da mal einen Code aufgezeichnet und die Leer- / Kommentarzeilen schon entfernt:
Code:
Sub Makro1()
' Makro1 Makro
    Range("A14").Select
    Selection.ListObject.ListRows.Add (1)
    Range("L15").Select
End Sub
Wichtig ist hier die Zeile mit den Listrows. Wir haben hier keine "normale" Zeile (Row).

Da ich nicht selectieren will, baue ich den Code etwas um:
Code:
ActiveSheet.ListObjects("Tabelle1").ListRows.Add 1

Leider nimmt Excel hier sie Formatierung der Headerzeile mit. Um die wegzubekommen, brauch ich noch etwas mehr Code. Der ist hier auch wieder nur aufgezeichnet und dann zu der einen Zeile hinzugefügt. Da beim Aufzeichnen wieder das leidige Select / Selection drin stand, habe ich selbiges noch durch diesne Part ersetzt: ActiveSheet.ListObjects("Tabelle1").ListRows(1).Range

Code:
Sub Makro1()
    ActiveSheet.ListObjects("Tabelle1").ListRows.Add 1
    With ActiveSheet.ListObjects("Tabelle1").ListRows(1).Range.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Jetzt könnte es noch sein, dass die Schrift nicht passt. Also, aufzeichnen, anpassen und bei Bedarf nachfragen Smile
Tabelle2 kannst Du dann entsprechend verwenden, musst ja nur die 1 und die 2 austauschen.

2. Markiere Deine Eingabezeile in A:L und vergib Namen. Dann greifst Du nicht mehr z.B. auf A28 zu, sondern auf die erste Zelle z.B. im Bereich Range("Eingabe2").Cells(1,1)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste