Einfügen einer Formel in vba bringt #BEZUG!

Bild

Betrifft: Einfügen einer Formel in vba bringt #BEZUG!
von: Christian
Geschrieben am: 23.06.2015 16:55:55

Hey,
ich bin weiter bei der Automatisierung diverser Auswertungen. Dabei füge ich Spalten ein und darin Formeln (FormulaR1C1). Leider werden die Formeln nicht berechnet sondern es kommt der Fehler #BEZUG!
Ich habe schon mittels application.sendkeys "{Enter}" versucht, das enter zu simulieren. Klappt nicht.

Sub BearbeitenxBU()
Dim quellBlatt As Worksheet
Dim zielBlatt As Worksheet
Dim sverweise As Worksheet
Dim überschriften As Worksheet
Dim letzteZeile As Long
Dim quelle As Range
Dim colRegiTypeText As Long
Dim col1stRegiDate As Long
Dim col2ndRegiDate As Long
Dim colSoldToParty As Long
Dim colShipToParty As Long
Dim colFscCode As Long
Dim ltzSverxModell As Long
Dim formelbereich As Range
Dim fehler As Boolean
Dim i As Long
    
    Set quellBlatt = Worksheets("x BU Import")
    Set zielBlatt = Worksheets("x BU Export")
    Set sverweise = Worksheets("Sverweis-Tabellen")
    Set überschriften = Worksheets("Überschriften")
    
    quellBlatt.Select
    quellBlatt.Range("A1").Activate
    Set quelle = ActiveCell.CurrentRegion
    
    letzteZeile = quellBlatt.Range("A100000").End(xlUp).Row
    ltzSverxModell = sverweise.Range("d100000").End(xlUp).Row
        
    'Kopie aller Daten und Einfügen notwendiger Spalten (8)
    quelle.Copy
    zielBlatt.Cells(1, 9).PasteSpecial xlPasteValues
    zielBlatt.Select
    
    'Definiere absolute Spaltennummer zu Formelgrößen
    colRegiTypeText = zielBlatt.Cells.Find(What:="Registration Type Text").Column
    col1stRegiDate = zielBlatt.Cells.Find(What:="1st Regi Date").Column
    col2ndRegiDate = zielBlatt.Cells.Find(What:="2nd Regi Date").Column
    colSoldToParty = zielBlatt.Cells.Find(What:="Sold to Party").Column
    colShipToParty = zielBlatt.Cells.Find(What:="Ship to Party").Column
    colFscCode = zielBlatt.Cells.Find(What:="FSC Code").Column
    
    'Überschriften und Formeln einfügen
    überschriften.Range("A3:H3").Copy
    zielBlatt.Cells(1, 1).PasteSpecial xlPasteAll
    Set formelbereich = zielBlatt.Range("a2:h2")
    
    formelbereich.Cells(1, 1).FormulaR1C1 = "=if(and(rc(" & colRegiTypeText - 1 & ")="" _
Endkundenverkauf privat"",rc(" & col1stRegiDate - 1 & ")=rc(" & col2ndRegiDate - 1 & ")),""nein" _
",""ja"")"
    formelbereich.Cells(1, 2).FormulaR1C1 = "=IF(DAYS360(rc(" & col1stRegiDate - 2 & "),rc(" &   _
_
col2ndRegiDate - 2 & "))>360,""nein"",""ja"")"
    formelbereich.Cells(1, 3).FormulaR1C1 = "=MID(rc(" & colSoldToParty - 3 & "),6,1)"
    formelbereich.Cells(1, 4).FormulaR1C1 = "=IF(rc(-1)=""0"",""ja"",""nein"")"
    formelbereich.Cells(1, 5).FormulaR1C1 = "=Right(rc(" & colShipToParty - 5 & "),4)"
    formelbereich.Cells(1, 6).FormulaR1C1 = "=9301530000+rc(-1)"
    formelbereich.Cells(1, 7).FormulaR1C1 = "=Left(rc(" & colFscCode - 7 & "),2)"
    formelbereich.Cells(1, 8).FormulaR1C1 = "=VLOOKUP(RC[-1],'Sverweis-Tabellen'!R4C4:R" &  _
ltzSverxModell & "C5,2,FALSE)"
    
    For i = 1 To 8
        formelbereich.Cells(1, i).Select
        formelbereich.Cells(1, i).Activate
        Application.SendKeys "{Enter}", True
        i = i + 1
    Next i
    
    zielBlatt.Range("A2:H2").AutoFill Range("A2:H" & letzteZeile), xlFillSeries
 
End Sub

Bild

Betrifft: AW: Einfügen einer Formel in vba bringt #BEZUG!
von: Rudi Maintaire
Geschrieben am: 23.06.2015 17:10:02
Hallo,
in RC-Bezügen muss der Versatz mit [] definiert werden. Nicht ().
z.B.
formelbereich.Cells(1, 1).FormulaR1C1 = "=if(and(rc(" & colRegiTypeText - 1 & ")=""
muss
formelbereich.Cells(1, 1).FormulaR1C1 = "=if(and(rc[" & colRegiTypeText - 1 & "]=""
Gruß
Rudi

Bild

Betrifft: AW: Einfügen einer Formel in vba bringt #BEZUG!
von: Michael
Geschrieben am: 23.06.2015 17:18:41
Hi Christian,
rc erwartet eckige Klammern.
siehe auch http://www.online-excel.de/excel/singsel_vba.php?f=84
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Einfügen einer Formel in vba bringt #BEZUG!"