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.

Gesamten VSB-Code verschieben
#1
Moin, 

gibt es eine Methode/ Befehl um ein langen Code um X Zeilen nach unten zu verschieben?

Ich versuche eine datei zu erstellen die etwa so funktionieren soll:

A. Zusammenfassung aller Blätter.
Aus diesem Blatt werden weitere Tabellen generiert 

B. bis . X Tabellen alle gleich Aufgebaut
jeweils mit 
                                       Haupt-Titel 1
Variabel (anklickbar)  
                                   + Unter-Titel   1.1
                                   + Unter-Titel   1.2
                               .... usw.

Wo harkt es bei mir gerade:
Ich bin derzeit dabei die Tabellen Erweiterung für die Unter-Titel vorzunehmen. Dazu habe durch eine zusammengesetzte Makro Aufnahme die Tabelle erweitert. Nun wird mein erste Feld-Erweiterung mit einem Klick erstellt. 

Meine Idee war es nun das Makro so zu erweitern, dass noch 
ein Makro zum entsteht zum weiter "Erweitern" und ein 
zweites Makro um das zuvor "Erstellte zu löschen" generiert wird.

Um das umzusetzen möchte ich genre, dass der Cod um 8 Zeilen tiefer ausgeführt wird. 

gibt es eine Methode/ Befehl um ein langen Code um X Zeilen nach unten zu verschieben?


Ich hoffe das war verständlich. Ich bin ein Visual Basic Noob, stelle mich aber glaub ich nicht zu schlecht an. Es wäre spitze, wenn ihr mir helfen könnt.

Gruß  Blush
Jonas 

PS: ich schätze eure Arbeit sehr. Bis jetzt konnte ich viele alte Threads von euch nutzen um mir zu helfen. Ihr seid spitze.
Moin, Moin!  Blush
Antworten Top
#2
Hallo,

Zitat:Ich bin ein Visual Basic Noob, 

das hätten wir auch so erraten.

Zitat:stelle mich aber glaub ich nicht zu schlecht an

dazu schreibe ich mal nichts.  Blush

Zitat:dass der Cod um 8 Spalten tiefer ausgeführt wird. 

den Unterschied zwischen Spalten und Zeilen kennst du?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • jon
Antworten Top
#3
(21.08.2018, 18:03)Klaus-Dieter schrieb: Hallo,


das hätten wir auch so erraten.


dazu schreibe ich mal nichts.  Blush


den Unterschied zwischen Spalten und Zeilen kennst du?

es ist doch so offensichtlich   Confused

ja   Sleepy  hab es korrigiert. (Danke)
Moin, Moin!  Blush
Antworten Top
#4
Hallo Jon,

es wäre am besten, wenn du dein Vorhaben etwas genauer beschreiben würdest. Dabei wäre es hilfreich, wenn du dir nicht so viele Gedanken um den Lösungsweg machen würdest.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • jon
Antworten Top
#5
1. es gibt ein Tabbellenblatt mit einer Zusammenfassung
    Über diese Seite sollen weitere Tabellen-blätter (Paket 1 bis X (max~30)) erstellt werden können. 

    Durch ein Marko "Klick" auf der Zusammenfassung ensteht also das erste oder ein neues Tabellenblatt (Paket 1 bis X).

     INFO: In der Zusammenfassung Soll pro Punkt der Name des jeweiligen Tabellenblatt gelistet werden, sowie ein Text (der Namen des Pakets). Desweiteren soll die Summe der Personenkapazität gelistet werden.

------------------------------------------------------------------------------------------------------------------------------------------------------- (Tabellenwechsel)------
2. Der Tabellentyp (Paket 1 bis X) soll also beliebig oft erweitert werden können. Das heißt als nächstes soll Paket 2, Paket 3, Paket 4,.. bisentstehen. 

3. Zeile 2 bis 24 (Paket X) ist immer gleich bis auf der Titel (der Abhängig vom Namen des Tabellenblatt ist).

4. wie es bereits im Anhang durch Klick des Makros (G2) funktioniert, sollen je nach belieben die Elemente A25:C32 erweiterbar sein. (Das heißt A2:C24 sind gegeben und durch ein klick entsteht dadrunter A25:C32).
Durch erneutes Klicken sollen ab A33 ein neuer Unterpunkt entstehen.

      INFO: einzelne Unterpunkte sollten auch wieder löschbar sein.


Angehängte Dateien
.xlsm   Workload .xlsm (Größe: 35,72 KB / Downloads: 5)
Moin, Moin!  Blush
Antworten Top
#6
Hallöchen,

Erst mal was zum Hinzufügen. Du hast in Deinem Code feste Zelladressen verwendet. Um so was flexibel zu machen, solltest Du für die Zieladressen die Bereiche Variabel gestalten.

Du könntest Dir eine Variable für die Startzeile definieren und den Wert dazu ermitteln, z.B.

Dim lRowStart
lRowStart = Cells(Rows.Count, 1).End(XlUp).Row + 2

Die +2 steht, weil Dein grüner Bereich eine Zeile weiter geht als die letzte gefüllte Zelle ( "Text" )
Alternativ könntest Du lRowStart auch mit Deinem Wert aus F26 berechnen, den erhöhst Du glaube bei jeder "Kopie". Wäre nur nicht korrekt wenn Du mal einen Bereich händisch löschst.

Anmerkung: Der Punkt in A37 ist doch sicher ein Versehen? Der müsste weg, sonst funktioniert es nicht. Cells(Rows.Count, 1).End(XlUp) ist wie wenn Du von A ganz unten nach oben zur letzten gefüllten Zelle springst. Wenn nicht und der kommt unter jede "Kopie", müsste man den "verrechnen"

Zurück zum Thema.
Mit dem Wert der Startzeile könntest Du nun jede Zeile errechnen. Bei der ersten Kopie wäre die Startzeile 33
Die Adressierung wäre dann z.B

Cells(lRowStart+1, 1)

Dort kommt "Paket" hin usw.

Wenn Du einen Bereich adressierst, z.B. A33 bis C40, wäre das dann

Range(Cells(lRowStart, 1), Cells(lRowStart+7, 3))

Eine Andere Variante wäre, mit Resize und Offset zu arbeiten, aber dazu vielleicht später. Hilft das erst mal?

Übrigens geht vieles ohne Select. Du könntest z.B. statt
   Range("A25:C32").Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
so programmieren
   Range("A25:C32").Borders(xlDiagonalDown).LineStyle = xlNone
und später
   With Range("A25:C32")
   …

Ein Mano gibt es jedoch.
Wenn Du mit dem flexiblen Code schon den Bereich ab Zeile 25 erzeugen willst, dann würde Dir das Makro erst in Zeile 26 losgehen. Du hast den grünen Block gleich unter der vorhergehenden gefüllten Zelle stehen Sad
Das könnte man aber auch umgehen. Man prüft das nach der Ermittlung und setzt den Wert ggf. auf 25 zurück:
If lRowStart =26 Then LRowStart = 25
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • jon
Antworten Top
#7
Nachdem ich jetzt sehr lange krankheitsbedingt ausgefallen bin, wurde das problem für mich gelöst. Mein Kollege hat sich diesen Beitrag dazu angeguckt. 

Ich lasse hierfür noch ein riesen Danke von meinem Kollegen "Mike" an Klaus-Dieter  und [b]schauan[/b] .

Bitte entschuldigt dies späte Rückmeldung, es ging leider nicht früher.
Moin, Moin!  Blush
Antworten Top


Gehe zu:


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