2017-10-30 8 views
0

特定のセルに数式を設定しようとしています。私はmyCell.Formula始まるライン上のアプリケーションまたはオブジェクト定義のエラーを取得しかしアプリケーションまたはオブジェクトがrange.formulaでエラーを定義しました

For i = 0 To MotorAmount 
      Set myCell = Range(Target.Address).Offset(i, 1) 
      myCell.Formula = "=IFERROR(VLOOKUP(Range(Target.Address);Database!$B$31:$G$131;2;False);0)" 
Next i 

:forループ式を設定するためのコードは次のようです。誰かがエラーがなぜ発生し、どのように修正するのか教えてください。

PS:私のExcelはそのように動作するため、式にセミコロンを使用します。 「データベース」は私が使用する別のシートの名前です。

PS2:サブは、Sheet1のMicrosoft ExcelオブジェクトのVBAProjectに配置されます。

完全なコードは次のとおりです。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim myRange As Range 
Dim myCell As Range 
Dim i As Integer 
Dim MotorAmount As Integer 

Set myRange = Range("A68:A168") 
If Not Application.Intersect(myRange, Range(Target.Address)) Is Nothing Then 
    If Not Range(Target.Address) = "" Then 
     MotorAmount = InputBox("How many motors are used in this transport?", "Amount of motors") 
     For i = 0 To MotorAmount 
      Set myCell = Range(Target.Address).Offset(i, 1) 
      myCell.Formula = "=IFERROR(VLOOKUP(Range(Target.Address);Database!$B$31:$G$131;2;False);0)" 
     Next i 
    End If 
End If 
End Sub 

答えて

0

あなたの式の実装は次のようになります。

myCell.Formula = "=IFERROR(VLOOKUP(" & Target.Address & ",Database!$B$31:$G$131,2,False),0)"

注:VBA使用カンマではネイティブで、それは自動的に正しいが表示されます、数式を書きながら、あなたが使用している引数の区切り記号です。

0

あなたは式内のコードを置くことができないと、VBAは米国中心のであるとして、あなたが式にカンマないセミコロンを使用する必要があります。私はR1C1参照を使用することをお勧めしたい:

myCell.FormulaR1C1 = "=IFERROR(VLOOKUP(R" & Target.Row & "C1,Database!R31C2:R131C7,2,False),0)" 
+0

フィードバック、ありがとうございました。私はそれを変更しましたが、まだエラーが発生します。 target.row文で式の中にコードを使用していませんか? –

+0

いいえ、実際にコードを数式に入れるのではなく、結果を式の文字列に連結したためです。私はあなたが参照値として使用している最初のセルであるので、循環参照を作成していることに気付きました。 – Rory

関連する問題