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.

Range nicht von Zeile abhängig
#1
Hallo zusammen,

Ich bin neu hier im Forum und konnte mit der Suchfunktion leider nichts passendes finden. Aber auch möglich, dass ich bei den ganzen Artikeln etwas verpasst habe.

Mein Problem sieht wie folgt aus. 
Ich habe eine Tabelle mit mehreren Werten, in dem Fall Preisen. Dann sollen von den Spalten einige gelöscht und anschließend Formeln auf die übrig gebliebenen Zeilen angewandt werden.
Nun ist es aber so, dass ich für den ersten Teil der Spalte eine andere Formel anwende als für den 2ten Teil.
Das Makro sieht nun vor, dass die erste Formel auf Range (M15:M1607) und die zweite Formel auf Range (M1620:M2933) angewendet wird.

Das Problem hierbei ist, dass immer wieder Zeilen aus diesen Bereichen gelöscht bzw. hinzugefügt werden. Somit stimmt die Range dann nicht mehr.

Kann man die Range nicht an einem Feld festmachen dass einen bestimmten Text beinhaltet? Oder sonstiges?
Sodass die Range sich so verschiebt, dass die neuen/fehlenden Felder immer mitgenommen werden.

Vielen Dank für eure Hilfe.

Hier noch der dazugehörige Makro (ist aufgenommen worden, deshalb nicht so "sauber")

Achmed

Sub EuroM()
'
' EuroM Makro
'

'
    Columns("M:W").Select
    Selection.Delete Shift:=xlToLeft
    Range("M15").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]*R8C12)*R9C12"
    Range("M16").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("M15").Select
    Selection.AutoFill Destination:=Range("M15:M1607"), Type:=xlFillDefault
    Range("M15:M1607").Select
    Range("M1620").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]*R8C12)"
    Range("M1620").Select
    Selection.AutoFill Destination:=Range("M1620:M2933"), Type:=xlFillDefault
    Range("M1620:M2933").Select
    Columns("M:M").Select
    Selection.Copy
    Columns("N:N").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("L:L").Select
    Application.CutCopyMode = False
    Selection.Copy
    Columns("M:M").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Columns("N:N").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("M:N").Select
    Selection.AutoFilter
    ActiveSheet.Range("$M$1:$N$2932").AutoFilter Field:=1, Criteria1:="=0", _
        Operator:=xlOr, Criteria2:="=0,00 €"
    Selection.ClearContents
    ActiveWindow.ScrollRow = 2
    Range("L4:L6").Select
    Selection.AutoFill Destination:=Range("L4:N6"), Type:=xlFillDefault
    Range("L4:N6").Select
End Sub
Antworten Top
#2
Hi,

zwei Fragen habe ich; mit der Bitte um präzise Antworten:
a) Was identifiziert exakt diese Bereiche?
b) Warum werden Zeilen aus diesen Bereichen gelöscht?
gruß
Marco
Antworten Top
#3
Also vorab noch es handelt sich hier um eine Preisliste.
Sprich Produkte mit den jeweiligen Preisen.

a) Die Produkte sind in Kategorien aufgeteilt mit dementsprechender Formel. Die Kategorien haben dann eine Überschrift. So könnte man vielleicht sagen, dass ab der Überschrift (=Zeile A1609) die nächste Formel angewandt wird. Ohne dass man sich jetzt an der A1609 festhält, am Besten.
b) Im Laufe des Jahres werden da neue Produkte hinzugefügt, bzw. gelöscht. Somit kann der Bereich A (von M15:M1607) zBsp durch hinzufügen von Zeilen vergrößert bzw. verkleinert werden. 

Reichen Dir diese Infos aus?

Danke Dir
Achmed
Antworten Top
#4
Zitat:Reichen Dir diese Infos aus?
Insofern, dass eine Beispieldatei Dir die Chance auf eine Lösung erhöht.
gruß
Marco
Antworten Top
#5
Ja verständlich.

Anbei eine etwas abgewandelte und abgespeckte Version.

Vom Endbenutzer soll dann auf die Schaltfläche "Klick" gedrückt werden und ein Häckchen bei Euro gemacht werden.

Danke für Deine Hilfe
Antworten Top
#6
urgh,
sowas hab ich fast erwartet.

Verbundene Zellen, vermutlich mit Bildchen und Tabellen unter Tabellen.
Außerdem fehlen die besagten Formeln plus Beispieldaten, welche wenigsten der Orientierung dienlich sein könnten.

Nichts für ungut, Achmed, aber unter diesen Umständen bin ich raus.
Ich hoffe erbarmt sich jemand und bietet dir die benötigte Unterstützung.
gruß
Marco
Antworten Top
#7
Schade.. hmm..

Hab die Datei nochmal angepackt. Also die verbundenen Zellen sind raus. Bilder wären am Ende effektiv mit drin, aber spielen bei der Sache doch keine Rolle oder?

Ich hab die Datei ohne ausgeführtes Makro hoch geladen. Habe aber jetzt das Makro ausgeführt.
In Zeile L stehen die Anfangsdaten, in Zeile M die Berechnung und in Zeile N die glatte Kopie von Zeile M. (wird alles durch das Makro erledigt).
Die Formel steht im Makro.
ActiveCell.FormulaR1C1 = "=(RC[-1]*R8C12)*R9C12" für die Zeilen von M15 - M268
ActiveCell.FormulaR1C1 = "=(RC[-1]*R8C12*3)" für die Zeilen von M279 bis M297

Hier fängt die 2 Kategorie bei Zeile 269 an

Reicht das vllt aus um sich das noch mal anzuschauen?

MfG
Achmed


Angehängte Dateien
.xlsm   PREISLISTE.xlsm (Größe: 49,49 KB / Downloads: 4)
Antworten Top
#8
Hat nicht noch jemand anders eine Idee?

So kompliziert/durcheinander wie zuvor beschrieben ist die Tabelle gar nicht ;)

MfG
Achmed
Antworten Top
#9
Hallöchen,

ich hab mir Deine Datei jetzt nicht angesehen. Eine Variante wäre, dass Du für die Grenzen Zellnamen verwendest. Eine andere Variante wäre, dass Du Zellen mit bestimmten Einträgen suchst. Ich nehme hier mal die erste. Das würde aber voraussetzen, dass Du die Grenzzellen nicht löschst Smile

Benenne z.B. die Zelle A15 mit "Start1" und die Zelle A1607 mit "Ende1"

Programmieren kannst Du dann z.B. so:

Range("M" & Range("Start1").Row).Select
Selection.AutoFill Destination:=Range("M" & Range("Start1").Row & ":M" & Range("Ende1").Row), Type:=xlFillDefault
'Range("M15:M1607").Select --> Zeile kann weg
Range("M" & Range("Ende1").Row + 13).Select '--> wenn es denn immer 13 Zeilen weiter unten hin soll ...

Beim zweiten Bereich nimmst Du dann Start2 und Ende2 ...
.      \\\|///      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:
  • Achmed
Antworten Top
#10
Vielen Vielen Dank schauan

Das hat mir sehr geholfen. Genau so soll es funktionieren.

Auch wenn es auf die Zeilen fixiert ist, bleibt es variabel, da die benannten Zeilen nicht gelöscht werden.
Perfekt.

MfG
Achmed
Antworten Top


Gehe zu:


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