2017-09-10 4 views
0

Ich habe hier auf stackoverflow viele verschiedene Lösungen überprüft, aber keine funktionierte für mich.Fehler 1004 verursacht durch =?

Wenn ich einen Wert wie "1" einfüge, funktioniert alles, aber wenn ich versuche, meine Formel einzufügen, bekomme ich immer einen Laufzeitfehler. Hat jemand eine Erklärung? Wäre sehr dankbar für jede Hilfe!

Sub test() 


Dim cell As Excel.Range 
Dim wsWithSheetNames As Excel.Worksheet 
Dim wbToAddSheetsTo As Excel.Workbook 

Set wsWithSheetNames = ActiveSheet 
Set wbToAddSheetsTo = ActiveWorkbook 


For wsname = 1 To 254 
For Each cell In wsWithSheetNames.Range("A" & wsname) 
With wbToAddSheetsTo 
    .Sheets.Add After:=.Sheets(.Sheets.Count) 
    On Error Resume Next 
    ActiveSheet.Name = cell.Value 
    wsname2 = cell.Value 
    If Err.Number = 1004 Then 
     Debug.Print cell.Value & " already used as a sheet name" 
    End If 
    On Error GoTo 0 
End With 
Next cell 

Worksheets("Sheet1").Range("B1", "B1735").Copy 
Worksheets(wsname2).Range("A2") 
(HERE IS THE PROBLEM!)Worksheets(wsname2).Range("B2:AGR1736").FormulaLocal = 
"=IFERROR(VLOOKUP($A2,OFFSET([final.xlsb]" & CHr(34) & wsname2 & Chr(34) & "!$A$1:$D$2000,0, 
(COLUMN(A2)*4-4)),4,0),"")" 


Next wsname 


End Sub 

EDIT: verändert die Zeile:

Worksheets(wsname2).Range("B2:AGR1736").FormulaLocal = 
"=IFERROR(VLOOKUP($A2,OFFSET([final.xlsb]" & wsname2 & "!$A$1:$D$2000,0, 
(COLUMN(A2)*4-4)),4,0)," & Chr(34) & Chr(34) & ")" 

Wenn ich die "=" der Code nicht schreiben funktioniert gut, warum ist es nicht mit dem "=" zu arbeiten?

+0

Wenn Sie das Zeichen = setzen, wird der Text als eine Formel interpretiert und Excel wird es ausführen und in Ihrem Fall findet Excel einen Fehler mit Ihrer Formel daher den Fehlercode 1004. Wenn Sie nicht setzen = das Zeichen, den Text wird als Text betrachtet und dies wird kein Problem geben. Verwenden Sie es als Grundlage, um den Fehler in der Formel zu verfolgen. – h2so4

Antwort

0

Ich glaube, Sie wsname und wsname 2, erklären, müssen so der vollständige Code so sein würde:

Sub test() 

Dim cell As Excel.Range 
Dim wsWithSheetNames As Excel.Worksheet 
Dim wbToAddSheetsTo As Excel.Workbook 
Dim wsname As Integer 
Dim wsname2 As String 

Set wsWithSheetNames = ActiveSheet 
Set wbToAddSheetsTo = ActiveWorkbook 


For wsname = 1 To 254 
For Each cell In wsWithSheetNames.Range("A" & wsname) 
With wbToAddSheetsTo 
    .Sheets.Add After:=.Sheets(.Sheets.Count) 
    On Error Resume Next 
    ActiveSheet.Name = cell.Value 
    wsname2 = cell.Value 
    If Err.Number = 1004 Then 
     Debug.Print cell.Value & " already used as a sheet name" 
    End If 
    On Error GoTo 0 
End With 
Next cell 

Worksheets("Sheet1").Range("B1", "B1735").Copy Worksheets(wsname2).Range("A2") 
'Worksheets(wsname2).Range("B2:AGR1736").FormulaLocal = 
'"=IFERROR(VLOOKUP($A2,OFFSET([final.xlsb]" & CHr(34) & wsname2 & Chr(34) & "!$A$1:$D$2000,0, 
'(COLUMN(A2)*4-4)),4,0),"")" 

Worksheets(wsname2).Range("B2:AGR1736") = "=IFERROR(VLOOKUP($A2,OFFSET([final.xlsb]" & wsname2 & "!$A$1:$D$2000,0," & "(COLUMN(A2)*4-4)),4,0)," & Chr(34) & Chr(34) & ")" 


Next wsname 


End Sub 

Hope this Hilfe.

+0

Ich habe es auf diese Weise versucht, aber ich bekomme immer noch den gleichen Fehler. Ich verstehe es nicht, alles, was ich tun möchte, ist die Formel als Wert einzufügen. Wie kann das nicht funktionieren? – Yarza

+0

Könnten Sie mir bitte mitteilen, was das final.xlsb ist? –

+0

final.xlsb hat Werte. Beide Dateien haben Datumsangaben, den vlookup checkes sheetname und die Werte, die dem Datums-/Tabellennamen entsprechen. – Yarza

Verwandte Themen