Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Automatisch Zeilen einfügen
#1
Guten Morgen,

erarbeite momentan eine Excel-Datei in der Makros (VBA) zum Einsatz kommen. Die Makros sind recht einfach gestrickt, da meine Kenntnisse sehr begrenzt sind. Habe euch auch ein Beispiel hochgeladen.

Nun kommt ihr ins Spiel ;)

Ich benötige ein Makro, das mir automatisch eine neue Zeile unterhalb der aktiven Zeile (Sonstiges) einblenden lässt, wenn ich dort etwas reinschreibe. Wenn die neue Zeile nun erscheint, soll diese aber auch automatisch in den definierten Bereich (z.B. Kontrollkästchen AA ) einbezogen werden, damit sich diese beim On/Off setzen ein- bzw. ausblendet.
Weiterhin soll der Bereich „Summe“ um die erweiterte Zeile ergänzt werden.
Ich hoffe, es ist klar geworden, was ich benötige.

Erklärung des Bsp.:
5 Kontrollkästchen (Ein- und Ausblenden von Zeilen „definiert/festgelegt)
4 (AA/BB/CC/DD)davon beziehen sich auf die Bereiche unten
1 davon (alles markieren) aktiviert/deaktiviert die anderen (AA/BB/...)
Die neu automatisch eingefügte Zeile soll nun automatisch dem Kontrollkästchen (definierten Zeilenbereich ) zugeordnet werden.

Vielen Dank für eure Hilfe  [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Gruß

Sven


Angehängte Dateien
.xlsm   Beispiel.xlsm (Größe: 35,83 KB / Downloads: 4)
Antworten Top
#2
Hi Sven,

(11.11.2015, 07:34)sveninho11 schrieb: Ich benötige ein Makro, das mir automatisch eine neue Zeile unterhalb der aktiven Zeile (Sonstiges) einblenden lässt, wenn ich dort etwas reinschreibe.

unterhalb: Warum soll die neue Zeile unterhalb der Sonstiges erscheinen und nicht drüber wie die restlichen? Es ist kein "einblenden", sondern ein "einfügen".
dort: Was heißt dort, wo willst Du etwas reinschreiben, damit die neue Zeile kommt?

Ich könnte mir höchstens vorstellen, daß Du über einen Button eine neue Zeile oberhalb der aktiven Zeile einfügst.

(11.11.2015, 07:34)sveninho11 schrieb: Wenn die neue Zeile nun erscheint, soll diese aber auch automatisch in den definierten Bereich (z.B. Kontrollkästchen AA ) einbezogen werden, damit sich diese beim On/Off setzen ein- bzw. ausblendet.
[...]
Die neu automatisch eingefügte Zeile soll nun automatisch dem Kontrollkästchen (definierten Zeilenbereich ) zugeordnet werden.

Das ist nicht so einfach, da Du die Zeilenbereiche im Makro fest eingetragen hast. Diese Bereiche müssen umgestellt werden auf Variablen. Wenn es über den oben genannten Button gelöst wird, dann muß ermittelt werden, welche Variablen alle betroffen sind und dann müssen die unten folgenden pro Knopfdruck um jeweils 1 erhöht werden.

(11.11.2015, 07:34)sveninho11 schrieb: Weiterhin soll der Bereich „Summe“ um die erweiterte Zeile ergänzt werden.
Wenn im Bereich, der über die Formel Summe definiert ist, eine neue Zeile eingefügt wird, erweitert sich der Bereich automatisch. Das ist also schon gelöst.


Zitat:4 (AA/BB/CC/DD)davon beziehen sich auf die Bereiche unten
1 davon (alles markieren) aktiviert/deaktiviert die anderen (AA/BB/...)

das stimmt nicht so ganz, denn das "alles markieren" aktiviert/deaktiviert alle, unabhängig davon, welche der 4 anderen angehakt sind oder nicht.
Antworten Top
#3
Guten Morgen Ralf,

vorab, danke für deine schnelle Rückmeldung.

1. Punkt:  Sorry für den Fehler, natürlich meine ich "einfügen".
    dort = im Beispiel "C33" oder "C48"oder"C57"...wenn ich etwas Eintrage (Sonstiges=Lückenfüller) soll automatisch eine Zeile darunter eingefügt werden
    Warum drunter? Weil es gängig ist, wenn etwas neues eingetragen werden muss, dieses unterhalb erscheint (einfacher für die Bedienung)

2. Punkt: Okay, nun die Frage wie setzte ich die Makros auf Variabel?

3. Punkt: Vielen Dank. :)

4. Punkt: Das stimmt, aber das ist für die weiteren Schritte erstmal nicht so wichtig
Antworten Top
#4
Hallo Sven,

benenne die Bereiche und benutze im Code diese Bereichsnamen.
Durch das Einfügen erweitern sich die benannten Bereiche automatisch.

Microsoft Excel Objekt Tabelle1
Option Explicit 

Private Sub CheckBox1_Click()
 Range("_BereichAA").EntireRow.Hidden = Not CheckBox1.Value
End Sub

Private Sub CheckBox2_Click()
 Range("_BereichBB").EntireRow.Hidden = Not CheckBox2.Value
End Sub

Private Sub CheckBox3_Click()
 Range("_BereichCC").EntireRow.Hidden = Not CheckBox3.Value
End Sub

Private Sub CheckBox4_Click()
 Range("_BereichDD").EntireRow.Hidden = Not CheckBox4.Value
End Sub

Private Sub CheckBox5_Click()
 CheckBox1.Value = CheckBox5
 CheckBox2.Value = CheckBox5
 CheckBox3.Value = CheckBox5
 CheckBox4.Value = CheckBox5
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count = 1 Then
   If Cells(Target.Row + 1, 2).Value = "Summe:" Then
     If Len(Target.Value) Then
       On Error Resume Next
       Application.EnableEvents = False
       Target.EntireRow.Copy
       Target.EntireRow.Offset(1).Insert
       Target.Offset(1) = ""
       Application.CutCopyMode = False
       Application.EnableEvents = True
       On Error GoTo 0
     End If
   End If
 End If
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0


Gruß Uwe


Angehängte Dateien
.xlsm   Automatisch Zeilen einfügen.xlsm (Größe: 36,94 KB / Downloads: 7)
Antworten Top
#5
Hi,

(11.11.2015, 08:36)sveninho11 schrieb:     Warum drunter? Weil es gängig ist, wenn etwas neues eingetragen werden muss, dieses unterhalb erscheint (einfacher für die Bedienung)

ich hätte da gedanklich ein Darstellungsproblem:
Wenn es darunter ist, dann hast Du 10 Zeilen Daten, dann eine Zeile "Sonstiges" und dann wieder eine Zeile Daten. Darum bin ich der Ansicht, die neu einzufügende Zeile muß über der Zeile "Sonstiges" eingefügt werden.
Antworten Top
#6
Hallo Ralf,

Zitat:Wenn es darunter ist, dann hast Du 10 Zeilen Daten, dann eine Zeile "Sonstiges" und dann wieder eine Zeile Daten. Darum bin ich der Ansicht, die neu einzufügende Zeile muß über der Zeile "Sonstiges" eingefügt werden.

Wenn ich Dich richtig verstanden habe, dann frage ich mal, wer oder was Dich daran hindert, die Zeile zwischen der letzten zur Tabelle gehörenden Zeile
und und der wirklich letzten Tabellenzeile (die mit dem "Sonstiges") einfügen zu lassen
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#7
Hi Peter,

(11.11.2015, 13:55)Käpt schrieb: Wenn ich Dich richtig verstanden habe, dann frage ich mal, wer oder was Dich daran hindert, die Zeile zwischen der letzten zur Tabelle gehörenden Zeile
und und der wirklich letzten Tabellenzeile (die mit dem "Sonstiges") einfügen zu lassen

mir schon klar, aber Sven wollte die neue Zeile drunter haben. Darum habe ich ihn nochmal drauf hingewiesen.
Antworten Top
#8
""benenne die Bereiche und benutze im Code diese Bereichsnamen.
Durch das Einfügen erweitern sich die benannten Bereiche automatisch.

Microsoft Excel Objekt Tabelle1
Option Explicit

Private Sub CheckBox1_Click()
 Range("_BereichAA").EntireRow.Hidden = Not CheckBox1.Value
End Sub ""


Wie kann ich die Bereiche denn benennen und wo muss das im Code stehen?
Antworten Top
#9
hi Sven,

(12.11.2015, 07:45)sveninho11 schrieb: Wie kann ich die Bereiche denn benennen und wo muss das im Code stehen?

  1. den Bereich markieren,
  2. links oben neben der Bearbeitungszeile, wo, z.B. B3 steht,
  3. dann _BereichAA eintragen,
  4. fertig!
Antworten Top
#10
@Kuwer und all den anderen:
Vielen Dank für das Makro. Es funktioniert auch super. Aber habe noch einen kleinen Wunsch. Wenn ich in der Beispiel Excel-Datei dein Makro anwende und in der Zelle C33 einen Wert eingebe,  erscheint in der neu eingefügten Zelle B33 auch "Sonstiges", gibt's die Möglichkeit das B33 leer ist und kein Text steht???

Danke :)
.xlsm   Beispiel.xlsm (Größe: 36,85 KB / Downloads: 1)


benenne die Bereiche und benutze im Code diese Bereichsnamen.
Durch das Einfügen erweitern sich die benannten Bereiche automatisch.

Microsoft Excel Objekt Tabelle1
Option Explicit

Private Sub CheckBox1_Click()
 Range("_BereichAA").EntireRow.Hidden = Not CheckBox1.Value
End Sub

Private Sub CheckBox2_Click()
 Range("_BereichBB").EntireRow.Hidden = Not CheckBox2.Value
End Sub

Private Sub CheckBox3_Click()
 Range("_BereichCC").EntireRow.Hidden = Not CheckBox3.Value
End Sub

Private Sub CheckBox4_Click()
 Range("_BereichDD").EntireRow.Hidden = Not CheckBox4.Value
End Sub

Private Sub CheckBox5_Click()
 CheckBox1.Value = CheckBox5
 CheckBox2.Value = CheckBox5
 CheckBox3.Value = CheckBox5
 CheckBox4.Value = CheckBox5
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count = 1 Then
   If Cells(Target.Row + 1, 2).Value = "Summe:" Then
     If Len(Target.Value) Then
       On Error Resume Next
       Application.EnableEvents = False
       Target.EntireRow.Copy
       Target.EntireRow.Offset(1).Insert
       Target.Offset(1) = ""
       Application.CutCopyMode = False
       Application.EnableEvents = True
       On Error GoTo 0
     End If
   End If
 End If
End Sub
Antworten Top


Gehe zu:


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