386 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

ich habe da mal eine Frage:

Ich habe eine Tabelle mit den Spalten A - I. Es gibt eine Überschriften-Zeile in Z 1.

Das Ergebnis pro Zeile steht in Spalte I und wird aus der Summe der Zeilen in den Spalten E - H ermittelt.
In Zeile 30 wird pro Spalte die Summe gezogen.
Jetzt möchte ich diese Tabelle bis auf die Eingabefelder sperren. Denkbar ist, dass die zur Verfügung stehenden Zeilen nicht ausreichen. Deswegen soll per Makro eine Zeile über der Summenzeile eingefügt werden. Dabei sollen die Eingaben in den jeweiligen Spalten die Summe pro Spalte und pro Zeile verändern.
Ich habe folgendes Makro

' Tastenkombination: Strg+e
'
ActiveWindow.SmallScroll Down:=4
Range("Summe").Select
Selection.Insert Shift:=xlDown
Range("Summe").Select
End Sub

Wenn ich das Makro ausführen lasse, wird eine Zeile eingefügt und bei Eingabe eines Wertes in einer Spalte auch die Summe in der Summen-Zeile verändert. Es wird jedoch keine Summe in der Zeile gezogen.
Ich hoffe ich habe es nicht sehr umständlich beschrieben.
Und wenn ich den Blattschutz aktiviere geht gar nichts.
Ich wäre euch sehr dankbar, wenn ihr mir helfen könntet.
vielen Dank im voraus :)

2 Antworten

0 Punkte
Beantwortet von
Hallo ´Hajo

das hat gut geklappt aber jetzt habe ich ein neues Problem,

ich habe eine Überschriftenzeile und eine Summenzeile, dazwischen in den Zeilen sollen Zeilen eingefügt und gelöscht und zusätzlich noch über den Autofilter Daten angezeigt werden können. Ich habe es irgendwie hinbekommen, per Makro Zeilen einfügen zu lassen aber wie kriege ich das hin, mit dem Löschen von Zeilen. Ich habe einen relativen Bezug über der Summenzeile und habe gesagt, dass der Cursor in der Zelle stehen soll und dann mein Makro ausgeführt werden soll. Geht das auch eleganter? Wie mache ich das mit dem Löschen, die Zeile soll markiert und dann per Makro gelöscht werden, wie könnte sowas aussehen?
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Halo Nick,

auf select usw. kann in VBA verzichtert werden.
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden sollte.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: Das mache ich später ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: http://hajo-excel.de/chCounter3/getfile.php?id=61 Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.

Rows(23).Delete

Gruß Hajo
...