Clever-Excel-Forum

Normale Version: Suche Lösung in VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8 9
Hallo,

hast Du mehrere Dateien geöffnet?
Nein, das hatte ich nicht. Das ist seltsam.

Ich habe jetzt nochmal geöffnet und jetzt wurde es wieder normal angezeigt. Doch wenn ich jetzt ein Dokument geschlossen habe, kommt die Passwortabfrage für VBA. Die kann ich einfach abbrechen.
Irgendwie habe ich das Gefühl, dass jetzt irgendwo eine Schleife ist, die da was durcheinander bringt.

PS: Ich musste jetzt gleich dreimal hintereinander die Passwortabfrage beenden und habe nur ein Dokument geschlossen.

Edit: Das ist insofern reproduzierbar, als dass es nur abgefragt wird, wenn ich zuvor das VBA-Fenster geöffnet hatte.

Edit 2: Passiert nicht, wenn ich das VBA-Kennwort einmalig eingegeben habe. Dann darf ich das einfach nicht vergessen.

Edit 3: Habe nun soweit getestet und langsam finde ich ich Spaß an der Sache, wer hätte das gedacht. Wenn ich den Button klicke, wird zwar die Formel für automatische Nummerierung übernommen, nicht aber die Formeln für die Summenberechungen.
Kann man das vielleicht noch in die Funktion einbinden? Habe es noch nicht ganz verstanden.
Hi,

(21.06.2016, 18:16)ToXiC schrieb: [ -> ]Kann man das vielleicht noch in die Funktion einbinden? Habe es noch nicht ganz verstanden.

nimm mal dieses Makro anstelle des alten:
Option Explicit

Sub Zeile_einfügen()
   ' 
   ' Zeile_einfügen Makro 
   ' 
   Dim loZeile As Long
   ' 
   
   loZeile = 1000
   loZeile = Application.WorksheetFunction.Match("Summe:", Range("B24:B" & loZeile), 0) ' gibt Zeile im Suchbereich aus 
   loZeile = 24 + loZeile - 1       'Addition der Such-Startzeile, => Zeile der letzten Datenzeile vor "Summe:" 
   '   MsgBox loZeile                   'Anzeige der Zahl zu Testzwecken 
   
   ActiveSheet.Unprotect Password:="PW"
   Application.EnableEvents = False
   
   Rows(loZeile & ":" & loZeile).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
   Range("B" & loZeile).FormulaR1C1 = "=ROW()-23"
   Range("C" & loZeile).Select
   Range("B" & loZeile - 1 & ":M" & loZeile - 1).Copy Range("B" & loZeile)
   Range("C" & loZeile & ":M" & loZeile).ClearContents
   Range("I" & loZeile + 1).Formula = "=Sum(I24:J" & loZeile & ")"
   Range("K" & loZeile + 1).Formula = "=Sum(K24:L" & loZeile & ")"
   Range("M" & loZeile + 1).Formula = "=Sum(M24:N" & loZeile & ")"

   Application.EnableEvents = True
   ActiveSheet.Protect Password:="PW", AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFormattingCells:=True
   
End Sub
Ich weiß ja nicht, wie lange ihr das schon macht, aber ihr seid echt super.
Ob ich das noch alles in meinen Kopf bekomme?

Das scheint ja gut zu funktionieren, est in der Praxis werden dann wohl Fehler auffallen.
Ich müsste nur noch wissen, wie das mit dem Seitenende geht...

Ich würde jetzt gerne mal probieren, einen Button einzufügen, mit dem man die letzte Zeile wieder löschen kann, falls jemand versehentlich den Button geklickt hat.
Rückgängig geht ja leider nicht, wegen des Blattschutzes.

Wenn ich das richtig verstehe, müsste ja der Code ziemlich gleich sein, wie beim Einfügen.
Wie heißt der Code-Teil zum Löschen von Zeilen?

Danke für die Unterstützung.
Hallo,

Zitat:Wenn ich das richtig verstehe, müsste ja der Code ziemlich gleich sein, wie beim Einfügen.

Wie heißt der Code-Teil zum Löschen von Zeilen?

Da Du ja schon einfügen kannst ...
Zum Löschen der Zeile .EntireRow.Delete


Zitat:Ich würde jetzt gerne mal probieren, einen Button einzufügen, mit dem man die letzte Zeile wieder löschen kann, falls jemand versehentlich den Button geklickt hat.
Rückgängig geht ja leider nicht, wegen des Blattschutzes.

Rückgängig geht in VBA ohnehin nichts, es sei denn, man programmiert es. Und den Blattschutz ... den kann man per VBA programmtechnisch auch ein- und ausschalten
Das wäre also auch eher kein Problem.

Zitat:Ich weiß ja nicht, wie lange ihr das schon macht, aber ihr seid echt super.
Ob ich das noch alles in meinen Kopf bekomme?

Na ja, Übung macht den Meister und Üben tun wir hier alle noch.
Übrigens: Excel ist nicht nur sexy, Excel macht auch süchtig. Man fängt ganz klein an .... und dann kommen ganz schnell die Begehrlichkeiten.
Hi,

(21.06.2016, 20:10)ToXiC schrieb: [ -> ]Das scheint ja gut zu funktionieren, est in der Praxis werden dann wohl Fehler auffallen.
Ich müsste nur noch wissen, wie das mit dem Seitenende geht...

ich habe in Deiner Datei noch ein paar Anpassungen vorgenommen. MMn benötigst Du nicht so viele Spalten, dann werden die Makros auch etwas einfacher:
[attachment=5763]
Zum Austesten habe ich den Blatt-Schutz und den Makro-Schutz auskommentiert!
Das Löschen der Zeilen habe ich ebenfalls eingebaut, aber beachten: Beim einen Button wird im gesamten Blatt gelöscht, also auch in den Kopfzeilen!

Weitere nötige Arbeiten:
  1. Eingrenzen des Löschens auf die Zeilen 24 bis letzte vor "Summe:"  -  ist mit dem zweiten Löschbutton auf die letzte Arbeitsschritt-Zeile begrenzt
  2. Nun muß noch festgestellt werden, bei welcher Zeile ein Zeilenumbruch erfolgt, das ist sowohl abhängig von der Zeilenanzahl, als auch der Höhe der Zeilen.
    Dann kann auf die Folgeseite die Überschrift-/Kopfzeile einkopiert werden. Ich habe keinen Plan, wie das gehen könnte.
Das ist ja wirklich genial.

Der Bereich für das Verschieben/ Kopieren auf die nächste Seite wäre dann das Unterschriften-Feld (Arbeitspaket abgeschlossen).

Dieses rutscht derzeit automatisch auf die nächste Seite, wenn der Bereich nicht mehr passt.
Aus diesem Grund habe ich die Zellen auch verbunden.

Rutscht dieser Bereich auf die nächste Seite soll die Überschriften-Zeile bei Arbeitsschritte/ Aktivitäten voran kopiert werden.
Sozusagen sollen die Arbeitsschritte fortlaufend weiter eingegeben werden können.

Vielleicht kann ja jemand noch diese Lösung finden, wäre super.

Danke an alle.

Edit: Mein Chef möchte nun, dass sich die Zeilenhöhe auch automatisch wieder anpasst, wenn man wieder Text oder Textteile aus der Zeile löscht und die Zeile somit wieder schmaler werden könnte. Wie kann ich das umsetzen?
Hi,

(22.06.2016, 07:08)ToXiC schrieb: [ -> ]Edit: Mein Chef möchte nun, dass sich die Zeilenhöhe auch automatisch wieder anpasst, wenn man wieder Text oder Textteile aus der Zeile löscht und die Zeile somit wieder schmaler werden könnte. Wie kann ich das umsetzen?

in meiner hochgeladenen V2-3 passiert das ohne weitere Code-Änderungen.

Wenn ich den Code für den gesamtbereich2 auf Blatt "Deckblatt" so ändere, dann macht Excel zwar auch AutoFit, das führt aber dazu, daß die Zeile nicht mehr hoch genug wird.
  Set gesamtbereich2 = Union(bereich3, bereich4, bereich5)
  gesamtbereich2.HorizontalAlignment = xlLeft
  gesamtbereich2.VerticalAlignment = xlCenter gesamtbereich2.EntireRow.AutoFit
Hallo Ralf,

(22.06.2016, 09:05)Rabe schrieb: [ -> ]Wenn ich den Code für den gesamtbereich2 auf Blatt "Deckblatt" so ändere (Kommentarzeichen raus), dann macht Excel zwar erneut AutoFit, das führt aber dazu, daß die Zeile nicht mehr hoch genug wird.
   Set gesamtbereich2 = Union(bereich3, bereich4, bereich5)
  gesamtbereich2.HorizontalAlignment = xlLeft
  gesamtbereich2.VerticalAlignment = xlCenter
'   gesamtbereich2.EntireRow.AutoFit

mach mal ein

Code:
gesamtbereich2.Rows.Autofit

daraus. Vielleicht hilft es.
Hi, ich habe es selbst probiert, die Zeilenhöhe wird aber gar nicht mehr angepasst dann.
Seiten: 1 2 3 4 5 6 7 8 9