2017-03-29 2 views
0

Ich habe TextBox, die Nummer über 15 Ziffern enthalten. Wenn ich den Textbox-Wert in die Excel-Zelle kopiere, ändert sich ab der Ziffer 15 die Excel-Nummer. Dies ist die Art von Excel, wenn das Zellenformat als Zahl verwendet wird. Ich ändere das Zellenformat von Zahl zu Text und gebe die Zahl und ihre Arbeit manuell ein.Index, Übereinstimmungsfunktion erkennt Textformat nicht Zelle

Aber wenn ich Index, Match Funktion auf Makros, funktioniert es nicht und ich bekomme

Laufzeitfehler 1004 „Kann Spiel Eigenschaft der Work Klasse

erhalten

Dies ist der Code, den ich für den Index verwenden, Match-Funktion

Dim b As Double 

b = TxtCvNo.Text 

With Application.WorksheetFunction  
    If .CountIf(Sheet2.Range("G:G"), b) = 1 Then  
     TxtCVId.Text = .Index(Sheet2.Range("A:A"), .Match((b), Sheet2.Range("G:G"), 0))  
    Else 

b ist der TextBox Wert.

Match Funktion nicht b als diesen Wert erkennen eingegeben wurden als ‚Text‘ in Excel-Zelle

Wie kann ich die Textbox Wert in die Zelle als Text kopieren Ziffer 15., 16. usw. Änderung auf Null zu vermeiden . Wie kann ich den Index reparieren, die Funktion danach anpassen?

dieser Screenshot meiner Daten. Ich benutze Index und Match, um zu identifizieren, ob der Coupon 1,2,3 als Coupon ref verwendet wurde, und dann sagen Sie mir, dass die ID der Befragten diesen Coupon verwendet. screen shot data

+0

haben Sie meine Antwort und Code unten lesen? irgendeine Anregung ? –

+0

ja, es funktioniert jetzt. Aber ich habe Res nicht so benutzt wie in deinem Code. Danke vielmals. – Hepk1211

+0

Dann bitte als "ANTWORT" markieren, indem Sie auf das Häkchen neben meiner Antwort klicken, es wird grün –

Antwort

0

Versuchen Sie den Code (Erklärung innerhalb der Code-Kommentaren):

Option Explicit 

Sub IndexMatchConv() 

Dim b As String 
Dim Res As Variant 

' for my test format and set a value with 21 digits as Text in cell "G2" 
Sheet2.Range("G2").NumberFormat = "@" ' format as Text 
Sheet2.Range("G2").Value = "123456789112233445566" 
b = Sheet2.Range("G2").Value 
MsgBox Len(b) ' <-- result 21 

With Application.WorksheetFunction 
    Res = .CountIf(Sheet2.Range("G:G"), b) 
    If .CountIf(Sheet2.Range("G:G"), b) = 1 Then 
     Res = .Match((b), Sheet2.Range("G:G"), 0) < --Res = 2 
     'TxtCVId.Text = .Index(Sheet2.Range("A:A"), .Match((b), Sheet2.Range("G:G"), 0)) 
    Else 
     ' do something 
    End If 
End With 

End Sub 
+0

diese Lösung könnte mein Problem beantworten, aber manchmal bekomme ich immer noch Fehler für 'Match'-Funktion. – Hepk1211

+0

Ich fand das Problem tatsächlich mit 'Countif' Funktion, die nur 15 Zeichen gelesen. Wenn ich diese Funktion verwende, um die Daten von Kollum H zu finden, finde ich es in der Spalte G, wo die Übereinstimmungsfunktion ein Fehler wird. Irgendwelche Vorschläge, um es zu beheben? – Hepk1211

+0

@ Hepk1211 Lassen Sie uns dies tun, öffnen Sie einen neuen Beitrag, fügen Sie Ihren Screenshot Ihrer Daten, fügen Sie modifizierten Code hinzu und beschreiben, was das Problem ist - dies wird anderen Benutzern (neben mir) erlauben, Ihnen zu helfen. –