2017-07-06 3 views
0

HI da ich versuche, einen VBA-Code nach einer bestimmten Zeichenfolge suchen (Text) habe ich in dem Code in einer anderen Arbeitsmappe definiert finden Sie die Anzahl der fehlenden Werte Text aus der Liste Ich habe einen Bericht definiert und erstellt, wie viele Werte Text fehlt und ob falsche Werte nicht mit dem Text übereinstimmen, wie viele falsch sind. Dies ist ein Teil des Codes, den ich gesetzt habe, aber ich habe Mühe, einen Code zu finden, um nach dem definierten Text zu suchen und einen Bericht über die Anzahl fehlender Instrumente und nr falscher Instrumente zu erstellen: Alle Vorschläge werden sehr geschätzt.VBA fehlenden Text finden String und fehlende Werte zählen

Dim mypath As String 
Dim folderpath As String 
Dim filename As String 
Dim MyBook As Workbook, newbook As Workbook 
Set MyBook = ThisWorkbook 
Dim file As String, sheetdata As String 
Dim ws As Worksheet 
Dim x As Workbook 
Dim y As Workbook 
Dim FindString As String 
Dim Rng As Range 
Dim findrow As Integer 
Dim i As Integer 
Dim finalrow As Integer 
Dim bottomA As Integer 
Dim c As Range 
Dim TESTMarketFI2015submitted As Worksheet 
Dim FI As Worksheet 
Dim a As Range 
Dim col As Integer 
Dim row As Integer 
Dim cell As Integer 
Dim inputbox As Variant 
Dim application As String 
Dim value As String 

Dim bond As String 
Dim promissoryNote As String 
Dim loan As String 
Dim certificatesOfDeposit As String 
Dim embededOptionBond As String 
Dim repo As String 
Dim bondOption As String 
Dim bondForward As String 
Dim securedBond As String 
Dim inflationLinkedBond As String 
Set x = Workbooks.Open(filename:="Z:\Profiles\My Documents\MAPPING\TEST MAPPING TABLES\TEST_Market_FI_2015 - submitted.csv") 
worksheets("TEST_Market_FI_2015 - submitted").Range("A:A").Select 

For Each c In Sheets("TEST_Market_FI_2015 - submitted").Range("A:A") 

Next 

If value = ("bond,promissoryNote,loan,certificatesOfDeposit,embededOptionBond,repo,bondOption,bondForward,securedBond,inflationLinkedBond") Then 
c.EntireRow.Copy Worksheets("TEST_Market_FI_2015 - submitted").Range("A:A" & Rows.Count).End(xlUp).Offset(1) 

    Worksheets("FI").Select 

    Range("A2").End(xlUp).Offset(i, 0).PasteSpecial 
Else 
    MsgBox "Nothing found under instrument" 
End If 

End Sub 

Antwort

1

Sie benötigen next unter dem End If zu setzen. Wenn es den Wert überprüft, weiß es nicht, was es tatsächlich überprüft. Es sollte sein:

For Each c In Sheets("TEST_Market_FI_2015 - submitted").Range("A:A") 

    If c.value = ("bond,promissoryNote,loan,certificatesOfDeposit,embededOptionBond,repo,bondOption,bondForward,securedBond,inflationLinkedBond") Then 

     c.EntireRow.Copy Worksheets("TEST_Market_FI_2015 - submitted").Range("A:A" & Rows.Count).End(xlUp).Offset(1) 

     Worksheets("FI").Select 

     Range("A2").End(xlUp).Offset(i, 0).PasteSpecial 
    Else 
     MsgBox "Nothing found under instrument" 
    End If 

Next 

So, jetzt, was passieren wird ist, wird es Schleife durch jede Zelle, in der ausgewählten Bereich und prüfen Sie den Wert von c (die Zelle es derzeit guckt). Wenn der Wert c mit Ihrer Zeichenfolge übereinstimmt, wird do stuff angezeigt.

Allerdings bezweifle ich, dass der Zellenwert, nach dem Sie suchen, wirklich eine durch Kommas getrennte Zeichenfolge ist. Versuchen Sie, alle diese Zeichenfolgen einzeln zu suchen, dh wenn c.value eines der Wörter in Ihrer () ist, dann sollte es do stuff sein. Wenn dies der Fall ist, würde eine Option, die verfolgt werden muss, darin bestehen, ein Zeichenfolgenarray zu erstellen und statt dessen das Array c.value im Array zu sehen.

Verwandte Themen