Copy
#1
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
Antworten Top
#2
Hallo,

kann dein Problem nicht nachvollziehen.

Gruß
Knobbi38
Antworten Top
#3
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.
Antworten Top
#4
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
Antworten Top
#5
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?
Antworten Top
#6
E8 ist die erste Zeile mit dem Barcode

Ich würde es ja gern mit dem copy verbinden, nur wie?
Antworten Top
#7
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?
Antworten Top
#8
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.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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