Registriert seit: 01.07.2023
	
Version(en): Pro Plus 2024 - 365
	
 
	
	
		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, 2021
	
 
	
	
		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 2024 - 365
	
 
	
		
		
		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 2024 - 365
	
 
	
	
		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.