2017-09-10 4 views
0

私はここでstackoverflowでさまざまなソリューションをチェックしましたが、どれも私のために働いていませんでした。エラー1004は=ですか?

"1"のような値を挿入するとすべて動作しますが、数式を挿入しようとすると常にランタイムエラーが発生します。誰か説明がありますか?助けてくれてありがとう!

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:

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) & ")" 

私が書くいけない場合は、「=」のコード作品だけで罰金、なぜそれが「=」で動作していない:に行を変更?

+0

=記号を入力すると、テキストが数式として解釈され、Excelがそれを実行し、あなたの数式でエラーが見つかるため、エラーコード1004になります。=記号を付けないと、テキストテキストとみなされ、問題は生じません。数式のエラーを追跡するための基礎として使用します。 – h2so4

答えて

0

私はあなたがWSNAMEとWSNAME 2を宣言する必要があると思うので、完全なコードは次のようになります:

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 

・ホープこのヘルプ。

+0

私はこの方法で試しましたが、私はまだ同じエラーが発生します。私はそれを理解していない、私がしたいのは、値として数式を挿入することです。これはどうしたらうまくいかないのですか? – Yarza

+0

final.xlsbが何であるか教えてください。 –

+0

final.xlsbには値が入っています。両方のファイルには日付があり、vlookupはシート名をチェックし、日付/シート名に対応する値をチェックします。 – Yarza