2017-02-25 29 views
-1

私はこのエラーを修正取得することはできませんよ、そのちょうどいくつかは私が遊んでいた文書をエクセル:エクセル実行時エラー「13」:型の不一致コード

これは、シート1(OrderInvoice)にあります。

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rng As Range, cell As Range 
    Dim i As Integer 

    Set rng = Sheets("CustomerList").Range("A2:A5") 

    'Sheets("CustomerList").Range("A2:A5").Value 

    'For Each cell In rng 

    'If cell = Range("C10").Value Then 
    If Sheets("CustomerList").Range("A2:A5") = Range("C10").Value Then 
    Sheets("OrderInvoice").Range("C11").Value = Sheets("CustomerList").Range(1, 2).Value 
    Sheets("OrderInvoice").Range("I11").Value = Sheets("CustomerList").Range(1, 4).Value 
    Sheets("OrderInvoice").Range("C12").Value = Sheets("CustomerList").Range(1, 3).Value 
    End If 

    'Next cell 

    'End If 
End Sub 
+0

'シート( "CUSTOMERLIST")範囲場合。( "A2:A5")=レンジ( "C10")は値Then'は'バリアントを比較しています() '(左側)には「Variant」が右側に表示されます。配列の平等をテストすることはできません。 – Comintern

+0

これを修正するにはどうすればいいですか? –

+0

比較対象の内容によって異なります。 – Comintern

答えて

1

式は以下のとおりです。Cust Nameについては

=VLookup(C10, 'CustomerList'!A:D, 2, false) 

Companyについて:

=VLookup(C10, 'CustomerList'!A:D, 3, false) 

Contact Numberの場合:

=VLookup(C10, 'CustomerList'!A:D, 4, false) 
+0

ありがとう、私はこれを試してみます –

+0

はい、私はいくつかの他の問題が発生している今Vlookupを実行している@ –

+0

それは新しい問題であるようだが、私は別にそれをアドレスします –

0

あなたは

Dim rng As Range 

With Sheets("CustomerList") '<--| reference "CustomerList" sheet 
    With .Range("A2", .Cells(.Rows.count, 1).End(xlUp)) '<--| reference its column A range from row 2 down to last not empty one 
     Set rng = .Find(what:=Range("C10").Value, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False) '<--| search referenced range for "Cust Num" entry 
     If Not rng Is Nothing Then '<--| if found 
      Range("C11").Value = rng.Offset(, 1).Value '<--| fill cell C11 with value in cell 1 column offset the found CustNum 
      Range("C12").Value = rng.Offset(, 2).Value '<--| fill cell C12 with value in cell 2 columns offset the found CustNum 
      Range("I11").Value = rng.Offset(, 3).Value '<--| fill cell I11 with value in cell 3 columns offset the found CustNum 
     End If 
    End With 
End With 

さらに、私がすることを得たあなたのスクリーンショットからRangeオブジェクトのFind()方法とオフより良いかもしれませんあなたは "フォーム"のsheeでユーザーのエントリを管理しようとしていますt。あなたはユーザーによって変更されたセルをチェックし、それに応じて

でそのセルの内容を処理するために、サブに対応する起動

Private Sub Worksheet_Change(ByVal Target As Range) 

    Select Case Target.Address(False, False) 
     Case "C10" '<--| user edited "Cust Num" entry 
      FillCustomerInfo Target.Value '<--| call the sub responsible for handling "Customer Number" entry 
     Case "C6" '<--| user edited "Order Number" entry 
      FillOrderNumberInfo Target.Value '<--| call the sub responsible for handling "Order Number" entry 
     Case Else 
    End Select 

End Sub 

:私は、このようなWorksheet_Change()イベントハンドラを書いたと思います。この場合

この場合は、FillCustomerInfo()サブしたがって、次のようになります。

Sub FillCustomerInfo(val As Variant) 
    Dim rng As Range 

    With Sheets("CustomerList") '<--| reference "CustomerList" sheet 
     With .Range("A2", .Cells(.Rows.count, 1).End(xlUp)) '<--| reference its column A range from row 2 down to last not empty one 
      Set rng = .Find(what:=val, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False) '<--| search referenced range for passed value 
      If Not rng Is Nothing Then '<--| if found 
       Range("C11").Value = rng.Offset(, 1).Value '<--| fill cell C11 with value in cell 1 column offset the found CustNum 
       Range("C12").Value = rng.Offset(, 2).Value '<--| fill cell C12 with value in cell 2 columns offset the found CustNum 
       Range("I11").Value = rng.Offset(, 3).Value '<--| fill cell I11 with value in cell 3 columns offset the found CustNum 
      End If 
     End With 
    End With 
End Sub 
+0

@ Mikha'ilHathey、それを通して? – user3598756

関連する問題