2016-06-07 158 views
0

我有一个工作表,用于输入数据,然后将其传输到第二张工作表上的日志中。在VBA中使用AND

我想有一个是否到位语句从做重复更新停止的人。目前我有一个代码可以阻止它更新,如果一个单元格与日志中对应的最后一个单元格相同,但我想用1或2个单元格重复此操作,以防通常的“匹配”单元格对于任何单元格需要相同原因。

我是新来的VBA,我试图约与else if否则,如果和and发挥,但没有运气,我想我可能与这些结构的挣扎,虽然。

我的And将需要去第一个if语句之后,所以如果第一个语句是假的第二个将是真正的停止日志更新。

Dim WkBk As Workbook 
Dim WkSht As Worksheet 

Set WkBk = ThisWorkbook 


Set WkSht = WkBk.Worksheets("Log") 


    If (WkBk.Worksheets("Data").Range("I17") = WkSht.Range("N" & WkSht.Rows.Count).End(xlUp)) Then 


      MsgBox "This entry has already been logged" 

Set WkSht = Nothing 
Set WkBk = Nothing 
Exit Sub 
End If 
+0

您可能需要更清楚地说明一点。你的'和'去哪里?在VBA中,它看起来像'如果myString =“单词”和Len(myString)> 0和myString <>“如何”那么...'。另外,你的'Then'需要和'If'语句在同一行。 – BruceWayne

+0

〜虽然我<= LASTROW 如果细胞(I, “A”),如 “*巴黎*” 和细胞(I, “d”),如 “*苏黎世*” 然后 细胞(I, “C”)。值=“CA” 结束如果〜 – skkakkar

+0

如果这是总是在相同的范围内,为什么不使用'find',如果获得匹配的位置,然后触发'MsgBox' – Tom

回答

0

我会在这里使用find函数,它可以为你搜索整个列。

我已经再使用“如果不是”和“是没有什么”,所以如果发现得到的东西,然后你的消息框就会出现。这是在VBA编码中寻找重复值的最佳方法:

Dim RngFound As Range 
Dim StrData As String 

StrData = Worksheets("Data").Range("I17") 
Worksheets("Log").Activate 
    Set RngFound = Columns("N").Find(StrData, Range("N1"), xlValues, xlPart) 
    If Not RngFound Is Nothing Then 
     MsgBox "This entry has already been logged" 
    End If 

    Set RngFound = Nothing 
    Set WkSht = Nothing 
    Set WkBk = Nothing 
+0

感谢您的帮助,但是,这是带我去的最后一个单元格整个日志。我需要检查日志最后一行中的特定单元格。 – Josie