Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile einfügen

Zeile einfügen
10.10.2016 15:26:10
Berndt
Hallo Freunde,
ich habe folgendes Problem.
Folgender Code erlaubt es mir per Button ein Zeilen einzufügen.
Ich werde als Anwender gefragt wo ich die Zeile angefügt haben möchte (Tabelle Aufgaben oder Tabelle Problemspeicher).
Möchte ich hingegen meine Tabelle weiter nach unten verschieben, craht das Makro, da er jetzt keinen bezug mehr an der alten Stelle findet.
Ich hänge euch mal ein Bsp. an. Betätigt mal den Button "neue Aufgabe einfügen" und ihr seht das Problem.
Was muss abgeändert werden, damit der Code komplett flexibel ist?
Link:
https://www.herber.de/bbs/user/108701.xlsm
Code:
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Aufgabe oder Problem
Dim EZ As Double
Dim Ab As Double
Dim WoEinf As String
Application.ScreenUpdating = False
WoEinf = InputBox("(A)ufgabe" & vbLf & "(P)roblem", "Wo möchten Sie eine neue Zeile hinzufü _
gen?", "A")
Select Case UCase(WoEinf)
Case "A"
EZ = UF_neueZeile(8, True)
Range("D" & EZ & ":H" & EZ).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
Case "P"
EZ = UF_neueZeile(8, False)
EZ = UF_neueZeile(EZ + 3, True)
Case Else
Exit Sub
End Select
Application.ScreenUpdating = True
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile einfügen
11.10.2016 08:36:56
Piet
Hallo
ich muss zugeben das ich von dem Code nicht allzuviel verstehe, die Programmiersprache ist mir zu neu! (z.B. Evaluate)
Als altem Praktiker faellt mir aber in dieser Zeile etwas auf, was mich stört. Eine neue Zeile einfügen ist ja ok, aber warum setzt man in diese Zeile eine zusaetzliche Summen Formel ein? Da werden Betraege ja doppelt addiert. Das kann m.E. nicht richtig sein.
Fügt man mit "P" ein wird der Problemspeicher nach unten verschoben, aber keine neue Problem Leerzeile eingefügt! Ist das so gewollt? Ich nehme an das mit -Evaluate- die erste leere Zelle bestimmt wird? Das trifft aber nicht für den Problembereich zu! Da sollte man mit Such.Find die Überschriftszeile suchen und dann mit End(xlDown) die letzte Zelle ermitteln.
mfg Piet
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Aufgabe oder Problem
Select Case UCase(WoEinf)
Case "A"
EZ = UF_neueZeile(8, True)
'Range("D" & EZ & ":H" & EZ).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
Warum eine zweite Summen Formel ?
Anzeige
AW: Zeile einfügen
11.10.2016 11:06:46
Berndt
Hallo Piet.
Gemeint ist mit der "zweiten Summenformel", dass nachdem eine neue Zeile für A eingefügt wurde, auch die Summernformel neu angepasst wird (Der Bereich der Summenformel wird also um die neue Zeile erweitert)
Fügt man mit "P" ein wird der Problemspeicher nach unten verschoben, aber keine neue Problem Leerzeile eingefügt! Ist das so gewollt?
Damit wollte ich den Codefehler verdeutlichen. Der bisherige Code funktioniert nur, wenn zwischen Problemspeicher und Aufgabentabelle eine Leerzelle ist.
Ich hätte den Code aber gern so, damit dieser mit den Tabellennamen sucht und dann schaut wo die leere Zelle hinzugefügt werden kann. Dier Version von jetzt ist mir noch zu starr. Sieht man ja, wenn man den Problemspeicher nach unter verschiebt. Dann crasht mein Makro ja.
Anzeige
Frage lass ich nachträglich noch offen
11.10.2016 11:07:46
Berndt
Die Frage lass ich mal offen. Sorry vergessen
AW: Zeile einfügen
11.10.2016 22:33:31
Piet
Hallo Berndt,
anbei eine geaenderte Makro Version für Tabelle "Herr A" Subteil: - CommandButton2_Click
Auf das kopieren der Formel kann verzichtet werden weil Excel die Summen Endadresse selbst korrigiert.
Für den Problembereich suche ich die Actuelle Zeile über 2x End(xlDown).Row Mit Fehlermeldung wenn die
Zelle nicht gefunden wird. Ich hoffe das Problem ist damit gelöst. Würde mich freuen.
mfg Piet
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Aufgabe oder Problem
Dim EZ As Double
Dim Ab As Double
Dim WoEinf As String
Application.ScreenUpdating = False
WoEinf = InputBox("(A)ufgabe" & vbLf & "(P)roblem", "Wo möchten Sie eine neue Zeile hinzufü _
gen?", "A")
Select Case UCase(WoEinf)
Case "A"
EZ = UF_neueZeile(8, True)
'Range("D" & EZ & ":H" & EZ).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
Case "P"
'Text:  Problemspeicher nach unten suchen
EZ = Cells(8, 2).End(xlDown).End(xlDown).Row
If Trim(Cells(EZ, 2)) = "Problemspeicher" Then
EZ = UF_neueZeile(EZ + 1, True)
Else: MsgBox "Kann Text: -Problemspeicher- nicht finden"
End If

Anzeige
Warum dann offen? owT
12.10.2016 05:53:24
Bernd
AW: Zeile einfügen
12.10.2016 07:57:05
Berndt
Vielen dank Piet. Funktioniert Klasse. hast mir damit echt geholfen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige