2017-07-06 30 views
0

嗨那里我想把一个VBA代码来查找一个特定的字符串(文本)我已经定位在另一个工作簿中的代码找到从列表我定义并生成了一个报告文本丢失了多少值,如果有错误的值与文本不匹配有多少错误。这是我已经提出的一些代码,但我正在努力寻找一个代码来查找定义的文本,并产生一个缺少仪器数量和错误仪器数量的报告:任何建议将不胜感激。VBA查找丢失的文本字符串和计数缺失值

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 

回答

1

您需要将next置于End If之下。当它检查值时,它不知道它实际检查的是什么。它应该是:

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 

所以现在会发生什么,它都会循环通过每个细胞,在你选择的范围和检查的c值(单元格它目前看)。如果c的值与您的字符串匹配,那么它将为do stuff

但是,我怀疑你正在寻找的单元格值是一个真正的逗号分隔的字符串。您是否尝试单独搜索所有这些字符串,这意味着如果c.value是您的()中的任何字词,那么它应该是do stuff。如果是这样,一个追求的选择是创建一个字符串数组,并且在数组中查找c.value