Excel Makro Nachhilfe
#1
Hallo zusammen,
Ich versuche gerade eine Excel-Datei durch Makros zu vereinfachen, jedoch finde ich die Formel welche ich benötige nicht im Netz, deswegen bin ich hier.
Da ich mich mit dem erweiterten Programmieren von Makros kaum auskenne, stelle ich diese Frage.

Ich habe Folgendes Makro angefangen:


Sub ErweiterungV1()

x = selection.Row
y = selection.Column

selection.FillDown

End Sub

Das Makro soll die ausgewählte Zeile durch Filldown fortführen.


bevor das Makro das tut, soll es eine neue leere Zeile einfügen, wo dann die Formeln von der Zeile darüber Filldowned werden.

Meine Originale Idee welche sich als etwas kompliziert rausgestellt hat (zumindest für mich)war Folgendes:

Ich habe eine Test Datei erstellt.


in der Datei ist ein simples Makro, welches die Deckblatt Tabelle erweitert und dann auf Vorlage1 geht, um diese durch eine Weitere Tabelle, der Vorlage 1, aus dem Blatt Vorlagen zu Erweitern. 

Wie ihr seht, erweitert das Makro die Tabelle immer in Zeile 5 (fügt eine neue Zeile ein und zieht die Formeln von Zeile 4 runter), jedoch sollte die Tabelle nachdem sie in Zeile 5 erweitert wurde, dann beim nächsten betätigen in Zeile 6 erweitert werden und auch die Formeln bis Zeile 6 ziehen. Dann soll das Makro die Vorlage1 aus Vorlagen kopieren und unter die vorherige Tabelle in Vorlage 1 einfügen und dann das Kontrollkästchen um 1 zur vorherigen Tabelle erweitern.

Dann bräuchte ich auch noch ein weiteres Makro, welches das Selbe mit Vorlage2 macht, wo es dann nochmal etwas komplexer wird, da das Makro abhängig von der Position von Vorlage1 die Tabelle erweitern muss, da Vorlage 2 durch das Hinzufügen von Einträgen von Vorlage 1 auch immer weiter runter geschoben wird. (Hier Wäre es eventuell möglich Vorlage 2 auf ein separates Blatt zu Tun um das ganze zu vereinfachen)

Die Kontrollkästchen sind für den Status auf dem Deckblatt zuständig, in einer Tabelle ist es immer das unterste Kästchen, welches den Status durch eine WAHR/FALSCH abfrage bestimmt.



Hier das Makro:

Sub Erweitern_von_V1()
'
' Erweitern_von_V1 Makro
' Fügt eine neue Zeile in Zeile 5 ein und erweitert die Formel von Zeile 4 auf Zeile 5. Dann nimmt es die Vorlage 1 aus dem Blatt Vorlagen und fügt sie in das Blatt Vorlage 1 unter die bereits erstellte Tabelle
'

'
Rows("5:5").Select
Range("B5").Activate
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A4").Select
Selection.AutoFill Destination:=Range("A4:A5"), Type:=xlFillDefault
Range("A4:A5").Select
Range("B4").Select
Selection.AutoFill Destination:=Range("B4:B5"), Type:=xlFillDefault
Range("B4:B5").Select
Range("D4").Select
Selection.AutoFill Destination:=Range("D4:D5"), Type:=xlFillDefault
Range("D4:D5").Select
Range("E4").Select
Selection.AutoFill Destination:=Range("E4:E5"), Type:=xlFillDefault
Range("E4:E5").Select
Range("F4").Select
Selection.AutoFill Destination:=Range("F4:F5"), Type:=xlFillDefault
Range("F4:F5").Select
Range("G4").Select
Selection.AutoFill Destination:=Range("G4:G5"), Type:=xlFillDefault
Range("G4:G5").Select
Range("H4").Select
Selection.AutoFill Destination:=Range("H4:H5"), Type:=xlFillDefault
Range("H4:H5").Select
Sheets("Vorlagen").Select
Range("A3:G23").Select
Selection.Copy
Sheets("Vorlage1").Select
Range("A44").Select
ActiveSheet.CheckBoxes.Add(369, 89.25, 30.75, 31.5).Select
ActiveSheet.CheckBoxes.Add(464.25, 95.25, 30.75, 23.25).Select
ActiveSheet.CheckBoxes.Add(369, 111, 30.75, 31.5).Select
ActiveSheet.CheckBoxes.Add(464.25, 117, 30.75, 23.25).Select
ActiveSheet.CheckBoxes.Add(369, 132.75, 30.75, 31.5).Select
ActiveSheet.CheckBoxes.Add(464.25, 138.75, 30.75, 23.25).Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=21
End Sub


Was ich von meinem will Makro ist, dass wenn es die Deckblatt und die Vorlage1 Tabellen erweitert, dass es immer ganz unten in der Tabelle anfängt. Mit dem momentanem Makro, fängt es immer in Zeile 5 an, aber es soll wenn es fertig ist die Tabelle immer Über der Überschrift "Vorlage2" erweitern.



Die Deckblatt Tabelle soll lediglich eine Zusammenfassung von Vorlage1 und 2 sein welche sich selbst aktualisiert.


Das Makro soll die Vorgefertigte Tabelle erstellen unter der vorherigen und diese dann so Formatieren, dass man nur noch die Werte in die Tabelle schreiben muss und diese dann automatisch auf das Deckblatt übernommen werden.


Angehängte Dateien
.xlsx   test.xlsx (Größe: 57,77 KB / Downloads: 1)
Antworten Top
#2
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke!

Gruß
steve1da
Antworten Top
#3
Hier mein Original-Post https://www.computerbase.de/forum/thread...t-26013259 im Computerbase Forum.
Antworten Top
#4
Hallöchen,

Dein Ausfüllen fängt aber nicht in Zeile 5 an. Es fängt in Zeile 4 an und hört in Zeile 5 auf.
Im Prinzip könntest Du das so machen:

Code:
Dim icnt%
'Mit der letzten befuellten Zelle von Spalte A
With Cells(Rows.Count, 1).End(xlUp)
  'Schleife von Spalte A bis H
  For icnt = 0 To 7
    'icnt Spalten weiter
    With .Offset(0, icnt)
      'ausfuellen
      .AutoFill Destination:=.Resize(2, 1), Type:=xlFillDefault
    End With
  Next
End With
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Ich habe jetzt ein Makro welches tut was ich will, zumindest erstmal das auf dem Deckblatt, jedoch brauche ich noch einen Befehl der Zellen nach oben geht bis er eine Zelle findet in der etwas drinsteht.

ich habe es mit einer Do Until Loop versucht, jedoch fehlt mir der Befehl zum erkennen ob in einer Zelle etwas steht.
Hier die Loop.

Do
If Cell = 0 Then
ActiveCell.Offset(-1, 0).Select
End If
Loop Until Cell = Cell <> 0


Hier das ganze Makro, ohne den Do Until loopTeil, macht sie was ich will

Sub Deckblatt_neue_Zeilen_einfügen()
Do
If Cell = 0 Then
ActiveCell.Offset(-1, 0).Select
End If
Loop Until Cell = Cell <> 0

'Wählt letzte benutzte Zeile aus
Dim last As Integer
last = Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveCell.EntireRow.Select

'Fügt eine neue Zeile unter der ausgewählten ein
'und füllt Formeln nach
selection.Offset(1, 0).Select
selection.FillDown
selection.Insert Shift:=down, CopyOrigin:=xlFormatFromselection
x = selection.Row
y = selection.Column
selection.Delete

ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Select
selection.Insert Shift:=down

'löscht die akuelle Zeile falls sie Leer ist
ActiveCell.EntireRow.Select
If Cell = 0 Then
selection.Delete
End If


End Sub
Antworten Top
#6
Hallöchen,

If ...Value <> "" Then prüft den Inhalt der Zelle (Zellwert).
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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