ich hätte ein Anliegen, welches (wahrscheinlich) VBA-Kenntnisse erfordert.
Folgendes soll mit der Formel bzw mit dem Code erreicht werden:
- Suche auf dem Tabellenblatt die Werte "LT" - Setze in die Zellen davor folgende Formeln
4 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B5
5 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B4
7 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B3
9 Zellen vor "LT": Wert in Zelle B(aktuelle Zeile von LT) * B2
- Dann springe zum nächsten "LT" und mache das gleiche, so lange bis alle "LT" gefunden wurden und die Formel eingefügt wurde.
Ich weiß nicht ob das umsetzbar ist. Eine Beispieldatei habe ich angehängt. Ziel der Aktion ist, dass "LT" variabel in der Tabelle eingetragen (und auch wieder gelöscht) werden kann und die Berechnung in den Zellen davor automatisch durchgeführt wird.
With Range("D8:S11") Set Zelle = .Find("LT", LookIn:=xlValues) If Not Zelle Is Nothing Then firstAddress = Zelle.Address Do Zelle.Offset(, -Range("A5")) = Cells(Zelle.Row, 2) * Range("B5") Zelle.Offset(, -Range("A4")) = Cells(Zelle.Row, 2) * Range("B4") Zelle.Offset(, -Range("A3")) = Cells(Zelle.Row, 2) * Range("B3") Zelle.Offset(, -Range("A2")) = Cells(Zelle.Row, 2) * Range("B2") Set Zelle = .FindNext(Zelle) Loop While Not Zelle Is Nothing And Zelle.Address <> firstAddress End If End With
End Sub
Du solltest das noch so anpassen, dass die Range-Bezeichnungen ("A5" ... usw.) flexibler gehalten werden können. Auch den Suchbereich (hier: "With Range("D8:S11")") solltest du anpassen. Bereichsnamen sind eine gute Hilfe
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28 • Alpha_2412
Du benötigst keinen Vorschlag, sondern eine fertige Lösung, ohne selbst nach denken zu müssen? Dann biste hier falsch
Danke für deinen konstruktiven Beitrag, ich hoffe dir geht es jetzt besser
Ich suche keine fertige Lösung und ich habe durchaus versucht mit dem Code von LuckyJoe eine funktionierende Lösung hin zu bekommen. Aber ich habe festgestellt dass bei VBA anscheinend viele Wege nach Rom führen, daher habe ich gehofft einen Vorschlag zu bekommen, mit dem ich mein Problem lösen kann. Oder vielleicht noch ein Tipp von LuckyJoe.
With Range("C7").CurrentRegion Set Zelle = .Find("LT", LookIn:=xlValues, LookAt:=xlWhole) If Not Zelle Is Nothing Then firstAddress = Zelle.Address Do Zelle.Offset(, -Range("A2").Value).FormulaR1C1 = "=RC2*R2C2" Zelle.Offset(, -Range("A3").Value).FormulaR1C1 = "=RC2*R3C2" Zelle.Offset(, -Range("A4").Value).FormulaR1C1 = "=RC2*R4C2" Zelle.Offset(, -Range("A5").Value).FormulaR1C1 = "=RC2*R5C2" Set Zelle = .FindNext(Zelle) Loop While Not Zelle Is Nothing And Zelle.Address <> firstAddress End If End With
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Alpha_2412
Eine Frage hätte ich noch: Das ganze läuft in einem als Tabelle formatierten Bereich und Excel kommt auf die schlaue Idee eine Autovervollständigung der Tabelle vorzunehmen und die Spalten voll zu schreiben mit den Werten. in Datei--> Optionen --> Erweitert habe ich bereits den Haken bei "AutoVerfollständigung für Zwellwerte aktivieren" raus genommen, allerdings werden die Spalten weiterhin gefüllt.
Gibt es eine Möglichkeit per VBA die Tabellenvervollstädnigung für ein bestimmtes Blatt zu deaktivieren?