2017-02-25 3 views
-1

ich nicht in der Lage bin dieser Fehler reparieren zu lassen, sein einige Excel nur Dokument, mit denen ich herumgespielt:Excel Laufzeitfehler ‚13‘: Typenkonflikt Code

Dies ist in der Sheet1 (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

'Wenn Sheets ("Customer") Bereich. ("A2: A5"). = Range ("C10") Wert Then' ist eine' Variante zu vergleichen() '(links) mit einer' Variante' rechts. Sie können das Eigenkapital eines Arrays nicht testen. – Comintern

+0

Also, wie würde ich das beheben? –

+0

Hängt davon ab, was der Vergleich überprüfen soll. – Comintern

Antwort

1

Die Formeln sind:

Für Cust Name:

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

Für Company:

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

für Contact Number:

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

Vielen Dank, ich werde das versuchen –

+0

Ja, ich habe das Vlookup läuft, jetzt bin ich auf einige andere Probleme stoßen @ASH –

+0

Es scheint, neuere Probleme zu sein, aber ich werde das separat adressieren –

0

könnten Sie besser dran mit Find() Methode von Range Objekt

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 

Des Weiteren werden von Ihrem Screenshots bekam ich, dass Sie versuchen, Benutzereinträge in der Form Shee zu verwalten t.

In diesem Fall habe ich einen solchen Handler Worksheet_Change() Ereignis geschrieben hatte:

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 

wo Sie überprüfen, welche Zelle vom Benutzer geändert wurde und starten Unter entsprechenden dementsprechend, dass die Zellinhalt zu behandeln

in Im vorliegenden Fall würde FillCustomerInfo() Sub deshalb sein:

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, hast du bekommen durch? – user3598756

Verwandte Themen