Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
Hallo liebe Gemeinde
Ich kopiere folgendes
Code:
Worksheets("Produkte").Range(Cells(X, "B"), Cells(X, "K")).Copy Worksheets("Buchungen").Range("C" & NextRow)
In der spalte D steht folgende Formel
Code:
=WENN([@EAN]<>"";"("&[@EAN]&")";"")
durch das Kopieren, setzt er ja in TB Buchungen folgende Formel
Code:
=WENN(Tabelle6[@EAN]<>"";"("&Tabelle6[@EAN]&")";"")
Wie bekomme ich es umgeschrieben, dass er im TB Buchungen Spalte E auch =WENN([@EAN]<>"";"("&[@EAN]&")";"") setzt?
Danke für eure Hilfe
Registriert seit: 22.09.2024
Version(en): 2010
Hallo,
kann dein Problem nicht nachvollziehen.
Gruß
Knobbi38
Registriert seit: 12.06.2020
Version(en): 2024, 365business
Wenn du schon Daten kopierst ,kannst du auch ganze Formeln in Zellen schreiben per VBA.
Das mittels wenn() Funktion zu machen ist eigentlich nicht nötig.
Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
14.03.2025, 17:01
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2025, 17:20 von Andyle.)
Dass habe ich bereits
Private Sub Worksheet_Activate()
Code:
Private Sub Worksheet_Activate()
Dim oBlatt As Worksheet
Set oBlatt = Worksheets("Buchungen") 'Tabellennamen gg. anpassen
With oBlatt
.Range("E8").FormulaLocal = "=[@EAN]"
End With
Set oBlatt = Nothing
End Sub
Nur wenn ich diese Formel nutzen will bekomme ich einen Fehler
Code:
Private Sub Worksheet_Activate()
Dim oBlatt As Worksheet
Set oBlatt = Worksheets("Buchungen") 'Tabellennamen gg. anpassen
With oBlatt
.Range("E8").FormulaLocal = "="("&[@EAN]&")""
End With
Set oBlatt = Nothing
End Sub
Hab jetzt den code abgeändert
Code:
Private Sub Worksheet_Activate()
Dim oBlatt As Worksheet
Set oBlatt = Worksheets("Buchungen")
With oBlatt
.Range("$E8").FormulaLocal = "=""(""&[@EAN]&"")"""
End With
Set oBlatt = Nothing
End Sub
Registriert seit: 12.06.2020
Version(en): 2024, 365business
und was ist nun die Frage?
Du verwendest die Notation für eine Spalte in einer intelligenten Tabelle, aber dann fügst du das aber in E8 ein.
Ist E8 die erste Zelle in der Tabellenspalte?
Warum legst du diesen Code ins Activate Event. Muss denn die Formel jedes Mal neu geschrieben werden?
Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
E8 ist die erste Zeile mit dem Barcode
Ich würde es ja gern mit dem copy verbinden, nur wie?
Registriert seit: 12.06.2020
Version(en): 2024, 365business
die Formeln mußt du gar nicht mitkopieren, wenn die schon in der Zieltabelle vorhanden sind.
Ist die Zieltabelle eine intelligente Tabelle fügst du mit DeinListobject.Listrows.Add eine neue Zeile an und verwendest die Range der neuen Listrow um Daten einzufügen.
Grundsätzlich solltest du vermeiden Formeln unnötig zu vermehren. Jede Formel braucht Rechenzeit. Wenn es also unwahrscheinlich ist das die EAN in dem Datensatz sich ändert, dann kopiere nur den Wert und nicht die Formel, die diesen Wert erzeugt. Benötigst du denn zwei Spalten mit der EAN?
Registriert seit: 29.09.2015
Version(en): 2030,5
16.03.2025, 13:54
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2025, 13:56 von snb.)
Analyse
Es gibt 2 Arbeitsblätter
Jedes Arbeitsblatt enthält ein Listobject (dynamische Tabelle)
Du wilstl ein Formel in Listobject 1 in Arbeitsblatt 1 'kopiieren' ins Listobject von Arbeitsblatt 2.
Die Formel in Arbietsblatt 2 sollte nur nach das Listobject in Arbeitsbal 2 zugreigen.
Das machtst du so:
Code:
Sub M_snb()
Sheet2.Cells(2, 3).Formula = Sheet1.Cells(6, 3).Formula
End Sub
Wenn du 'kopiierst' versucht Excel 'klug' zu sein und referenziert nur nach das originale Listobject.
Und übrigens hat Ralf A recht. In eine dynamische Tabelle braucht man ein Formel nur einmalig zu schreiben in die erste Zeile von Databodyrange.